CSDN浏览器插件
登录
微信PC Hook - 接收文本消息 原创
2020-02-17 17:33:06
2点赞
ZHX0AN
码龄3年
关注
一、系统环境
使用到的软件:
Parallels虚拟机
Windows 10系统
Visual studio 2019
Cheat Engine
Ollydbg 51破解版
微信版本:3.1.0.67
二、CE附加微信
给微信发消息11111111,CE扫描中11111111。
在这里插入图片描述
发送aaaaaaaa,变成aaaaaaaa的地址是我们要找的。修改type长度为100,再次发送cccccccc,含有<msgsource>是我们要找的地址,记录地址05D06E26。
在这里插入图片描述
三、OD获取内容
打开OD,因为每次内容会改变,所以使用dd 05D06E26下内存写入的断点。
发送一条消息,程序中断,堆栈窗口往下翻,看到“lass SyncMgr”,消息同步。
在这里插入图片描述
53524AAB中右键【反汇编窗口跟随】,函数位置下断点
在这里插入图片描述
删除内存写入断点,放程序执行完。
再发一条消息,程序断下来。查看寄存器的值。
dd esp的值:
在这里插入图片描述
dd [[esp]],往下翻能看到消息内容。
在这里插入图片描述
获取消息的偏移地址:
消息类型
$+30 >00000001
消息发送者:[[esp]] + 40
113F57F8 12081648 UNICODE "wxid_4j4mqsuzdgie22"
消息:[[esp]] + 68
113F5820 11EC4C50 UNICODE "123456789"
[[esp]] + 178
113F58E0 12081878 UNICODE "4a41e2c81b8aa6ac942f50d24eb2fd06"
[[esp]] + 1b8
113F5920 11EC48C0 UNICODE "<msgsource />\n"
发送一条群消息,获取群消息的偏移地址:
消息类型
$+30 >00000001
消息接收者:[[esp]] + 40
$+40 >0480E0E8 UNICODE "24377562166@chatroom"
消息:[[esp]] + 68
$+68 >0BE25220 UNICODE "@小助手 00000000"
发送者:[[esp]] + 164
$+164 >0BE24DD0 UNICODE "wxid_4j4mqsuzdgie22"
$+178 >0D2F3D40 UNICODE "e8f16db681840089c227bef5239b0832"
at微信号:[[esp]] + 1B8
$+1B8 >0D5BA348 UNICODE "<msgsource>\n\t<atuserlist>wxid_4sy2barbyny712</atus"
代码实现
这儿我选择79F1D505作为hook地址,79F1D50B作为返回地址。
//hook地址
79F1D505 B9 503C3F7B mov ecx,WeChatWi.7B3F3C50
79F1D50A 57 push edi
//返回地址
79F1D50B FF50 08 call dword ptr ds:[eax+0x8]
核心代码
hook函数:
//组装跳转数据
BYTE jmpCode[5] = { 0 };
jmpCode[0] = 0xE9;
//新跳转指令中的数据=跳转的地址-原地址(HOOK的地址)-跳转指令的长度
*(DWORD*)&jmpCode[1] = (DWORD)RecieveMsgHook - hookAddress - 5;
//覆盖指令 B9 503C3F7B
WriteProcessMemory(GetCurrentProcess(), (LPVOID)hookAddress, jmpCode, 5, 0);
RecieveMsg函数:
DWORD** msgAddress = (DWORD**)r_esp;
//消息类型[[esp]]+0x30
DWORD msgType = *((DWORD*)(**msgAddress + msgTypeOffset));
...
在这里插入图片描述
非特殊说明,本文版权归HPay所有,转载请注明出处.
本文类型: Java工具