<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ljc545w的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ljc545w</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ljc545w]]></copyright><item><title><![CDATA[使用pysqlcipher3操作Windows微信数据库]]></title><link>https://blog.youkuaiyun.com/ljc545w/article/details/138268982</link><guid>https://blog.youkuaiyun.com/ljc545w/article/details/138268982</guid><author>ljc545w</author><pubDate>Sun, 28 Apr 2024 09:58:36 +0800</pubDate><description><![CDATA[之前写过一系列微信数据库的文章，包括找句柄、获取数据库密钥、调用查询、备份、解密等。但是一直不知道怎么直接操作加密的库，近来发现腾讯开源了WCDB，几个平台的微信数据库都是以这个作为底层，Windows微信也不例外，遂拉代码，编译，记录下打开数据库后执行的一系列PRAGMA命令，再使用普通的sqlcipher执行相似操作，也可以打开。]]></description><category></category></item><item><title><![CDATA[解析某音X-Bogus参数]]></title><link>https://blog.youkuaiyun.com/ljc545w/article/details/128834402</link><guid>https://blog.youkuaiyun.com/ljc545w/article/details/128834402</guid><author>ljc545w</author><pubDate>Wed, 01 Feb 2023 15:10:14 +0800</pubDate><description><![CDATA[本文主要介绍从X-Bogus还原19位数组的过程，方便理解算法。]]></description><category></category></item><item><title><![CDATA[Windows微信文本压缩算法分析]]></title><link>https://blog.youkuaiyun.com/ljc545w/article/details/128499591</link><guid>https://blog.youkuaiyun.com/ljc545w/article/details/128499591</guid><author>ljc545w</author><pubDate>Fri, 30 Dec 2022 19:10:34 +0800</pubDate><description><![CDATA[Windows微信文本压缩算法分析]]></description><category></category></item><item><title><![CDATA[PC微信逆向--离线解密数据库]]></title><link>https://blog.youkuaiyun.com/ljc545w/article/details/124699601</link><guid>https://blog.youkuaiyun.com/ljc545w/article/details/124699601</guid><author>ljc545w</author><pubDate>Tue, 10 May 2022 22:51:23 +0800</pubDate><description><![CDATA[文章目录写在前面回顾定位切入点断点调试结论离线解密工具配置环境代码运行写在后面
写在前面
前面的几篇文章，已经找到sqlite3_exec函数并调用，也实现了数据库在线备份，本篇文章，尝试定位保存数据库密码的基址，并编写一个离线解密工具。
回顾
在开始之前，要先回顾一下之前得到的结果：
数据库初始化
785BE313    8D55 CC         lea     edx, dword ptr [ebp-34]
785BE316    52              push    edx
785BE]]></description><category></category></item><item><title><![CDATA[PC微信逆向--在线备份数据库]]></title><link>https://blog.youkuaiyun.com/ljc545w/article/details/124568849</link><guid>https://blog.youkuaiyun.com/ljc545w/article/details/124568849</guid><author>ljc545w</author><pubDate>Wed, 04 May 2022 12:19:34 +0800</pubDate><description><![CDATA[写在前面
在前面三篇文章，已经找到数据库句柄、sqlite3_exec函数和一系列备份用的函数地址，本篇文章，尝试完成微信数据库在线备份。
回顾
数据库句柄
[[WeChatWin.dll +　0x222F3FC] + 0x1888]到[[WeChatWin.dll +　0x222F3FC] + 0x188C]
函数地址
微信版本：3.6.0.18
sqlite3_open = 1138ACD0
sqlite3_backup_init = 1131C110
sqlite3_backup_step = 113]]></description><category></category></item><item><title><![CDATA[PC微信逆向--定位备份sqlite数据库相关函数]]></title><link>https://blog.youkuaiyun.com/ljc545w/article/details/124493485</link><guid>https://blog.youkuaiyun.com/ljc545w/article/details/124493485</guid><author>ljc545w</author><pubDate>Fri, 29 Apr 2022 12:53:53 +0800</pubDate><description><![CDATA[文章目录写在前面备份函数编写测试程序配置环境编译OD调试结果OD地址IDA地址写在后面
写在前面
上一篇文章，介绍了如何使用找到的数据库句柄和sqlite3_exec函数执行SQL，本篇文章，来尝试定位微信中备份sqlite数据库的相关函数，为下一篇文章要实现的在线备份做铺垫。
备份函数
开始找之前，要明确需要找的目标，先看一段别人写的备份函数：
int backupDb(sqlite3* pDb, const char* szFilename,
    void(*xProgress)(int, int)]]></description><category></category></item><item><title><![CDATA[PC微信逆向--调用sqlite3_exec执行SQL]]></title><link>https://blog.youkuaiyun.com/ljc545w/article/details/124354933</link><guid>https://blog.youkuaiyun.com/ljc545w/article/details/124354933</guid><author>ljc545w</author><pubDate>Fri, 22 Apr 2022 20:58:39 +0800</pubDate><description><![CDATA[文章目录写在前面回顾sqlite3_exec回调函数函数指针编写代码注入的DLL注入程序输出结果写在后面
写在前面
上一篇文章，实现了定位保存微信数据库句柄的容器和微信内部的sqlite3_exec函数地址，这一篇文章，尝试使用得到的数据库句柄和sqlite3_exec，来查询数据库中的内容。
回顾
首先回顾一下上篇文章：PC微信逆向–定位sqlite3_exec和数据库句柄得到的结果，IDA中sqlite3_exec的地址是0x11356570，对应的偏移是0x11356570 - 0x10000000 ]]></description><category></category></item><item><title><![CDATA[PC微信逆向--定位sqlite3_exec和数据库句柄]]></title><link>https://blog.youkuaiyun.com/ljc545w/article/details/124299024</link><guid>https://blog.youkuaiyun.com/ljc545w/article/details/124299024</guid><author>ljc545w</author><pubDate>Wed, 20 Apr 2022 16:12:01 +0800</pubDate><description><![CDATA[写在前面
最近在做PC端微信逆向，搞定了基本的首发消息，通讯录获取等，这期间遇到一个小小的问题，从通讯录获取到的内容不全，除非登录后手动点击过某个好友，不然获取不到头像、V3等，所以产生了解密数据库的想法。
收集资料
首先要明确一个想法，这个世界很大，想做的事情，至少90%都可能是别人做过的，有些人会把他们的经历分享到互联网上，我们可以利用这些知识，让自己不需要从0开始。
在这个日新月异的时代，技术存在时效性，找到的资料可以作为参考，我们需要做的，是更新替换那些过期的内容，让别人分享的东西在重新跑起来。
下]]></description><category></category></item><item><title><![CDATA[汇编手记之第一个窗口程序]]></title><link>https://blog.youkuaiyun.com/ljc545w/article/details/123743176</link><guid>https://blog.youkuaiyun.com/ljc545w/article/details/123743176</guid><author>ljc545w</author><pubDate>Fri, 25 Mar 2022 19:05:33 +0800</pubDate><description><![CDATA[汇编手记之第一个窗口程序]]></description><category></category></item><item><title><![CDATA[PC微信逆向--看看哪些好友删除了自己]]></title><link>https://blog.youkuaiyun.com/ljc545w/article/details/123715943</link><guid>https://blog.youkuaiyun.com/ljc545w/article/details/123715943</guid><author>ljc545w</author><pubDate>Thu, 24 Mar 2022 17:07:08 +0800</pubDate><description><![CDATA[PC微信逆向--看看哪些好友删除了自己]]></description><category></category></item><item><title><![CDATA[PC微信逆向--获取通讯录]]></title><link>https://blog.youkuaiyun.com/ljc545w/article/details/123458688</link><guid>https://blog.youkuaiyun.com/ljc545w/article/details/123458688</guid><author>ljc545w</author><pubDate>Sun, 13 Mar 2022 14:15:52 +0800</pubDate><description><![CDATA[文章目录写在前面思路定位过程整理写在后面
写在前面
微信版本：3.5.0.46
之前完成了发送文本消息和图片消息功能，但是发送的时候，需要指定对方的wxid，这可不是个简单的事情，毕竟微信给用户看的一般是自定义的微信号，所以需要获取到通讯录，然后根据昵称啊、微信号、备注一类的东西搜索wxid出来。
思路
参考B站up主Hellmessage的视频，指路：Hellmessage
微信登录过程中会同步服务器中的好友列表到内存中，这一块数据以链表形式存在，很少发生变化，只要找到头结点，就能获取到整个通讯录，需要做]]></description><category></category></item><item><title><![CDATA[js获取网页echarts图表中的数据]]></title><link>https://blog.youkuaiyun.com/ljc545w/article/details/123384165</link><guid>https://blog.youkuaiyun.com/ljc545w/article/details/123384165</guid><author>ljc545w</author><pubDate>Wed, 09 Mar 2022 18:38:21 +0800</pubDate><description><![CDATA[写在前面
最近接到某网站的爬虫需求，因为客户与目标网站是通过协议获取的账号，所以不希望从接口获取数据，而网页源代码无法获取完整的canvas数据，怎么办呢，需求还是得做。
实现思路
后来发现，echarts是动态图表，当鼠标移动到某处时，会高亮该处数据，并实时更改某个div的text内容，观察network接口，没有新的请求(也不可能有)，说明数据已经存储在某个js变量里了，我就去瞅了一下echarts渲染数据时使用的函数：
var chart = echarts.init(document.getElem]]></description><category></category></item><item><title><![CDATA[PC微信逆向获取聊天表情]]></title><link>https://blog.youkuaiyun.com/ljc545w/article/details/123259966</link><guid>https://blog.youkuaiyun.com/ljc545w/article/details/123259966</guid><author>ljc545w</author><pubDate>Thu, 03 Mar 2022 18:14:39 +0800</pubDate><description><![CDATA[写在前面
PC微信版本：3.5.0.46
今天有个老哥提出需求，问我能不能把微信的表情包保存到本地，因为之前找到过未加密图片数据的Hook点，本来以为差不多的，然而并不是，所以有了这篇文章。
思路
首先还是在接收消息的地方下断，发一个表情，查看消息内容，把xml数据拷贝出来，看看都用到了哪些属性，然后在OD里右键-查找-查找所有字串，搜索某个属性，把push这些属性的指令都下断。
然后再发一个表情消息，会在某个push属性的地方断下，取消掉之前所有的断点，再BP CreateFileW，然后一直运行直到Cr]]></description><category></category></item><item><title><![CDATA[Python通过COM口调用微信发消息CALL]]></title><link>https://blog.youkuaiyun.com/ljc545w/article/details/123176253</link><guid>https://blog.youkuaiyun.com/ljc545w/article/details/123176253</guid><author>ljc545w</author><pubDate>Mon, 28 Feb 2022 10:12:39 +0800</pubDate><description><![CDATA[文章目录写在前面实现思路注入的DLLCOM组件注册COM服务Python中的调用资源下载声明
写在前面
赶在二月底来更新。
WeChat版本：
3.5.0.46
编译环境：
Windows10 Pro
2019 Community
实现思路
思路，之前的文章基本讲过：

编写32位DLL，添加内联汇编调用微信发消息CALL
开辟远程进程，在远程进程中开辟远程线程和写入DLL绝对路径
调用LoadLibrary让微信加载自己的DLL
将DLL加载进自己创建的exe进程中，计算导出函数的偏移
以同样的方式，在远]]></description><category></category></item><item><title><![CDATA[PC微信3.5.0.46几个函数位置]]></title><link>https://blog.youkuaiyun.com/ljc545w/article/details/123065975</link><guid>https://blog.youkuaiyun.com/ljc545w/article/details/123065975</guid><author>ljc545w</author><pubDate>Tue, 22 Feb 2022 13:44:08 +0800</pubDate><description><![CDATA[文章目录发文本消息发文件接收消息未加密图片数据wxid查询好友信息
发文本消息
WeChatWin.dll: 78670000
787D42EE    8D46 38         lea     eax, dword ptr [esi+38]          ; 取at结构体
787D42F1    6A 01           push    1                                ; 0x1
787D42F3    50              push    eax]]></description><category></category></item><item><title><![CDATA[PC微信逆向之发送消息]]></title><link>https://blog.youkuaiyun.com/ljc545w/article/details/122751284</link><guid>https://blog.youkuaiyun.com/ljc545w/article/details/122751284</guid><author>ljc545w</author><pubDate>Sun, 30 Jan 2022 11:23:06 +0800</pubDate><description><![CDATA[PC微信逆向之发送消息写在前面工具定位CALL地址调用生成DLL注入与外部调用注入部分代码写在后面
写在前面
最近在搞微信的发送消息CALL，跟着网上的教程，一步一步走，很容易定位到CALL的地址，在适当的地方用OD断下，修改压入的参数内容，消息内容或接收人成功改变，但在使用C++调用的时候，因为不懂汇编指令，所以踩了一些坑。
工具
微信 3.5.0.46
Windows10 Pro
OllyICE 1.10
Cheat Engine 7.0
Visual Studio 2019
定位CALL地址
这部分感]]></description><category></category></item><item><title><![CDATA[为网站添加APlayer音乐播放控件]]></title><link>https://blog.youkuaiyun.com/ljc545w/article/details/113683042</link><guid>https://blog.youkuaiyun.com/ljc545w/article/details/113683042</guid><author>ljc545w</author><pubDate>Fri, 05 Feb 2021 10:51:17 +0800</pubDate><description><![CDATA[文章目录源代码和文档准备工作修改配置模型与视图管理后台编写模板收尾注意事项可优化内容
源代码和文档
Github地址
APlayer文档
准备工作
默认你已拥有Django基础知识，并且设备中安装了python和Django环境，会使用pip包管理工具
#安装Django
pip install django
#创建项目和app
django-admin startproject myproject
cd myproject
python manage.py startapp myplayer
#创建超级用]]></description><category></category></item><item><title><![CDATA[简单仿制腾讯大数据星云图]]></title><link>https://blog.youkuaiyun.com/ljc545w/article/details/112585278</link><guid>https://blog.youkuaiyun.com/ljc545w/article/details/112585278</guid><author>ljc545w</author><pubDate>Wed, 13 Jan 2021 19:47:57 +0800</pubDate><description><![CDATA[文章目录写在前面用到的包静态文件代码部分采集数据数据去重获取国家边界装饰器绘图主函数边界文本完整代码参考文献
写在前面
带伙们可以先看下腾讯的图，非常漂亮：

腾讯位置大数据星云图

再看看本文代码绘制的图，逼格降低99%：



但是轮廓还是有的！！！对吧？
用到的包
import re
import requests
import json
from fake_useragent import UserAgent
import pandas as pd
import numpy as np
from s]]></description><category></category></item><item><title><![CDATA[Python模拟二维码登录百度]]></title><link>https://blog.youkuaiyun.com/ljc545w/article/details/111054624</link><guid>https://blog.youkuaiyun.com/ljc545w/article/details/111054624</guid><author>ljc545w</author><pubDate>Fri, 11 Dec 2020 22:50:15 +0800</pubDate><description><![CDATA[模拟二维码登录百度写在前面准备工作二维码地址登录状态获取gid登录参数代码部分二维码展示获取cookie完整代码写在后面
写在前面
前段时间写了利用BDUSS到达百度首页，这一次尝试使用二维码模拟登录，目前网上能搜到的相关内容基本失效了，但是思路基本不变，无非是百度改了些参数。本文较为复杂，要求对python的requests模块以及Chrome审查元素有一定了解，我不确定自己是否能完全讲明白，讲多少是多少吧，各位看官请坐。
准备工作
二维码地址
打开Chrome浏览器，清理掉baidu.com下的所有co]]></description><category></category></item><item><title><![CDATA[Python贴吧灌水脚本]]></title><link>https://blog.youkuaiyun.com/ljc545w/article/details/110623655</link><guid>https://blog.youkuaiyun.com/ljc545w/article/details/110623655</guid><author>ljc545w</author><pubDate>Fri, 04 Dec 2020 21:58:19 +0800</pubDate><description><![CDATA[写在前面
作为一个水笔，我的梦想是无休止的灌水，无休止的经验+3，所以写了这么一个东西帮我灌水！需要的参数是cookie中的BDUSS，如何获取，咳咳，百度一下就好了嘛。
包和全局变量
#网页请求
import requests
#对变量进行深拷贝
import copy
#时间、正则
import time,re
#网页解析
from bs4 import BeautifulSoup as bs
#请求头
headers = {
    "User-Agent": "Mozilla/5.0 (Window]]></description><category></category></item></channel></rss>