本帖最后由 rateltalk 于 2021-8-29 20:10 编辑
自己搞明白了,就分享出来供大家参考,同时也希望大家跟帖分享其他功能。
dll基址:641E0000(WechatWin_基址)
Call地址:64524CC3 FFD0 call eax ; WeChatWi.645BB150
ESI:00752558
Hook ESI,偏移如下:
$-274 >07BEB0B0 ASCII "111.32.166.106"
$-240 >00000001 #消息类型,1|文本,3|图片、、、
$-23C >00000000 #0|发出,1|收到
$-238 >00000002 #未知
$-234 >612B5BF9
$-230 >119ABE10 UNICODE "248xxxx050@chatroom" #私聊时为发送者ID,群聊时为群ID
$-108 >075D5938 UNICODE "xnxxxxngwx" #私聊时为0,群聊时为发送者ID
$-F4 >119B8230 UNICODE "8c5ed9b43c1eea5e08c8eea1b4bbef" #未知参数
$-A0 >04C09898 UNICODE "<msgsource>\n\t<atuserlist>wxid_tzznot7981xxxx</atus" #群聊at用户XML列表
Hook源码(WxReciveMessage为十六进制 (“344CC3”))
Hook_Air (WechatWin_基址 + WxReciveMessage, 5, { 96, 86, 232, 0, 0, 0, 0, 97 }, 到整数 (&接收消息), 真)
消息处理
变量名 | 类 型 | 静态 | 数组 | 备 注 | type | 整数型 | | | msg_type | 整数型 | | | from_wxid | 文本型 | | | from_name | 文本型 | | | final_from_wxid | 文本型 | | | final_from_name | 文本型 | | | msg_source | 整数型 | | | msg | 文本型 | | | at_wxid | 文本型 | | | unknow | 文本型 | | |
type = 100 msg_type = 内存读整数 (数据地址 - 十六进制 (“240”)) msg_source = 内存读整数 (数据地址 - 十六进制 (“23C”)) from_wxid = 编码_Unicode到Ansi (内存读字节集 (内存读整数 (数据地址 - 十六进制 (“230”)), 100 )) msg = 编码_Unicode到Ansi (内存读字节集 (内存读整数 (数据地址 - 十六进制 (“208”)), 8460 )) at_wxid = 编码_Unicode到Ansi (内存读字节集 (内存读整数 (数据地址 - 十六进制 (“A0”)), 8460 )) unknow = 编码_Unicode到Ansi (内存读字节集 (内存读整数 (数据地址 - 十六进制 (“F4”)), 40 )) 如果 (内存读整数 (数据地址 - 十六进制 (“108”)) ≠ 0 )type = 200 final_from_wxid = 编码_Unicode到Ansi (内存读字节集 (内存读整数 (数据地址 - 十六进制 (“108”)), 100 )) final_from_wxid = from_wxid 客户端发送 (客户端指针, 到字节集 (“Messg” + #Split + 到文本 (type ) + #Split + 到文本 (msg_type ) + #Split + from_wxid + #Split + final_from_wxid + #Split + msg + #Split + 到文本 (msg_source ) + #Split + at_wxid + #Split + unknow ), , , )
补充内容 (2021-8-30 08:49):
.版本 2
.支持库 const
.子程序 Hook_Air, , 公开
.参数 Hook地址, 整数型, , Hook的地址
.参数 备份长度, 整数型, , 备份长度字节数,超过5个字节默认会用填...
补充内容 (2021-8-30 08:49):
补充字数限制,放到回复吧 |