本帖最后由 xingkongawa 于 2023-3-5 07:23 编辑
PCVX逆向全解:登录二维码分析与获取
前言
尝试了各种教程,基本都是只适用于2.X 版本的VX
经过两个小时的含辛茹苦地研究,研究出一种适用于3.X 的登录二维码的分析思路
环境
1.PCVX:3.9.0.28 (理论3.X 通用思路,3.9.0.28 测试通过)
2.CE
3.x32dbg 或者OD
4.WinHex (可选)
避坑注解:建议使用OD ,x32dbg 可能会出现VX莫名其妙退出的问题
基础知识(大佬可直接跳过)
VX的登录二维码在内存内是以png 形式存储的
让我们先看一下png 的文件格式
避坑注解:新版本是指向?png,而非IHDR
因此一直找不到二维码地址,后来才发现被他人的教程误导了
寻找二维码图片指针
打开VX,CE附加VX
搜索字节数组89 50 4E 47
2023/3/5注:此处步骤标注错误,应先点击新的扫描再输入89 50 4E 47
将除了绿色地址的所有地址添加到地址列表
(由于隔得时间比较久了,二维码可能刷新了,我这边重新扫描了一次)
搜索第一个地址,如图:
(如果没找到或者只有绿色的地址,则用地址栏内第二个地址尝试搜索,直到找到不是绿色的地址)
PS:此处可能扫描到多个地址,随意选择一个即可
寻找CALL
打开OD,附加VX,在搜到的指针处下断
用手机扫描VX二维码,点击取消登录,观察是否断下
此时VX极容易崩溃。。。崩溃了只好重试了
若未断下,就只能从头重新尝试了...
此处我是未断下,重新尝试...
经过一段时间的尝试,成功断下
断下的地方像这样:
断下后删除内存断点,在断下的地址下断
继续运行VX,重新扫码,取消登录
断下后查看堆栈窗口
选中后Enter 进入
来到像这样的内存
显而易见,是调用了这个call 才导致该指针发生改变
call 处下断,取消原断点
F8 跟进到retn
retn 后来到如图所示内存,继续F8
retn 后来到如图所示内存,在疑似关键CALL上下断,删除原断点
结构就像这样:
7965BCEA 8B75 14 mov esi,dword ptr ss:[ebp+0x14]
7965BCED BA 288A4E7B mov edx,WeChatWi.7B4E8A28 ; ASCII "LoginWnd::eventProc"
7965BCF2 56 push esi
7965BCF3 68 81020000 push 0x281
7965BCF8 B9 0C844E7B mov ecx,WeChatWi.7B4E840C ; ASCII "LoginWnd"
7965BCFD E8 2EA92500 call WeChatWi.798B6630
7965BD02 83C4 08 add esp,0x8
7965BD05 84C0 test al,al
7965BD07 0F85 51110000 jnz WeChatWi.7965CE5E
7965BD0D FF76 34 push dword ptr ds:[esi+0x34]
7965BD10 8D4D 0C lea ecx,dword ptr ss:[ebp+0xC]
7965BD13 FF76 30 push dword ptr ds:[esi+0x30]
7965BD16 E8 A5494400 call WeChatWi.79AA06C0
7965BD1B 8D45 0C lea eax,dword ptr ss:[ebp+0xC]
7965BD1E C745 FC 0000000>mov dword ptr ss:[ebp-0x4],0x0
7965BD25 8B4F 38 mov ecx,dword ptr ds:[edi+0x38]
7965BD28 50 push eax
7965BD29 E8 32E2EFFF call WeChatWi.79559F60 ; 疑似关键CALL
7965BD2E 8B4F 28 mov ecx,dword ptr ds:[edi+0x28]
7965BD31 6A 01 push 0x1
7965BD33 6A 00 push 0x0
7965BD35 E8 8EE71F01 call WeChatWi.7A85A4C8
断下后F8 一下(让他调用完CALL )
右键EAX ,点击数据窗口中跟随
如果你看到了类似这个样子的结构,那么恭喜你找到登录二维码的CALL 了
本篇文章到此结束,如果反响不错,我会出一篇代码HOOK的教程 :P
又:附上本版本VX原版下载地址
下载地址.txt
(325 Bytes, 下载次数: 9)
|