首页
社区
课程
招聘
[原创]PC微信逆向--实现消息防撤回
发表于: 2020-3-11 09:54 13909

[原创]PC微信逆向--实现消息防撤回

2020-3-11 09:54
13909

自从聊天软件消息撤回功能问世后,对于撤回的消息,我们对它一直有种强烈的好奇感。“Ta刚撤回了什么?是骂我的话?还是说喜欢我?还是把发给其他人的消息误发给了我?好气呀,都看不到了...”这是我们看到消息被撤回后的内心独白。但是今天,看完了本篇文章你就可以说:

我们看一下效果图,撤回的消息被我们看到了,相当于防(防止)撤回

好了,看完效果,接下来我们看一下怎么找到它的位置,并用代码hook它。

本文用到的软件工具:

用CE打开微信进程

用另一个微信号给在电脑登录的微信号随机发一条消息,勾选UTF-16选项,然后在CE中搜索消息内容

撤回消息,看到一条xml消息,双击它添加到地址列表

打开OD,附加微信进程,用dd命令定位到上面的那个地址

再给电脑登录那个微信号发一条消息,然后在上面那个地址下内存写入断点。为什么是内存写入断点?因为我们上文亲眼目睹了消息撤回后这个地址的字符串被改写了。

下好断点后再把消息撤回,此时断点被触发,微信被断下,断下后,删除内存断点。在堆栈里寻找我们想要的内容,看到一个包含撤回提示wxid撤回内容的call

在反汇编窗口中跟随这个call,点击这个call,按F2在该call下断点,按F9继续运行。再给在电脑登录那个微信号发一条消息并撤回,该call断下

说明,这个call就是我们要找的消息撤回的位置,而且它有我们想要的数据

找到了call,来整理一下该call的数据,数据都是存在堆栈里,所以有:

接下来编写一个dll,来hook这个call,读取esp偏移地址的数据。

在VS创建一个dll项目,核心代码如下:

Hook相关代码:

代码写完后,生成dll,把它注入到微信进程,防撤回消息就能实现了。

总结:微信版本一直会变化,相应的hook地址也会改变,但是有了这个思路,它更新版本,我们也能快速的找到call。这个消息撤回的call也比较好找,像我这样初学逆向的朋友可以尝试自己找一下。

 
 
 

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 5
支持
分享
最新回复 (26)
雪    币: 25308
活跃值: (4722)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
图片看不到
2020-3-11 11:37
0
雪    币: 47147
活跃值: (20415)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
3
huangyalei 图片看不到
开始图片是外链,速度慢,脚本处理了一下,图片已放到论坛本地,正常了。
2020-3-11 12:01
0
雪    币: 2685
活跃值: (3680)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
4
kanxue 开始图片是外链,速度慢,脚本处理了一下,图片已放到论坛本地,正常了。
谢谢处理,辛苦了
2020-3-11 12:06
0
雪    币: 200
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
奈何只会易语言、、不过C看的是真的舒服  连寄存器都直接可以调用, 
最后于 2020-3-11 12:07 被xiaoxinfeng编辑 ,原因:
2020-3-11 12:07
0
雪    币: 2685
活跃值: (3680)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
6
xiaoxinfeng 奈何只会易语言、、不过C看的是真的舒服  连寄存器都直接可以调用, 
C语言大法好
2020-3-11 12:18
0
雪    币: 6933
活跃值: (3475)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
思路清晰,处理方法很直接。
2020-3-11 16:47
0
雪    币: 83
活跃值: (1087)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
8
感谢
2020-3-11 20:44
0
雪    币: 7756
活跃值: (3465)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
不错,分析的很详细
2020-3-12 07:59
0
雪    币: 41
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
10
生成dll可否发一份呢
2020-3-12 09:46
0
雪    币: 2685
活跃值: (3680)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
11

可以

最后于 2020-3-14 00:26 被luoyesiqiu编辑 ,原因:
上传的附件:
2020-3-12 20:44
0
雪    币: 364
活跃值: (1721)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
12
已读
2020-3-13 09:19
0
雪    币: 2510
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
13
感谢分享
2020-3-13 18:04
1
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
能发一下整个代码吗,谢谢大哥
2020-3-14 09:18
0
雪    币: 2685
活跃值: (3680)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
15
驴哥。。。 能发一下整个代码吗,谢谢大哥

https://www.lanzous.com/ia8dmib

2020-3-14 10:17
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
谢谢大哥
2020-3-14 14:27
0
雪    币: 4
活跃值: (346)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
为什么要搜索808080
2020-3-16 10:56
0
雪    币: 187
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
为什么我按照楼主的方法找不到这个call,而且好几个call里都有 "撤回了一条消息"
2020-3-17 21:59
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
为什么我算出来的是0x28b33f,难道return (DWORD)LoadLibraryW(L"WeChatWin.dll");返回的地址有0x1000是空的吗,球楼主大大解答
2020-3-19 14:11
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
20
楼主,我想弄一个把别人发来的图片都保存的HOOK功能, 开始的想法是直接在微信的FileStorage\Image目录下把加密的图片解密出来, 在进行保存,  可是发现一个情况, 就是别人发来的图片, 原图不是百分百会自动保存成加密文件的, 有时候需要点开图片,查过看大图他才会自动保存下来. 我是拿着别人在发的视频教程新开始学习的. 是个新萌, 请问.楼主对于这个自动保存别人发的图片功能,有什么好的文案或建议吗?  
2020-3-21 16:50
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
21
楼主你好,我想请教一下这两行是指什么,怎么算出来的。
#define REVOCK_CALL_RVA 0x28c33f
#define REVOCK_CALL_TARGET_RVA 0x28ccd0
2020-3-23 07:35
0
雪    币: 20
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
 挺详细的,感谢
2020-3-23 17:26
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
23
高手
2020-3-23 17:53
0
雪    币: 9
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
24
大哥,能发一下完整代码吗?
2021-10-19 10:27
0
雪    币: 9
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
25
https://www.lanzous.com/ia8dmib这个网址失效了
2021-10-19 10:28
0
游客
登录 | 注册 方可回帖
返回
//