看过不少防撤回的帖子,今天也记录一下这个过程吧。
对于QQ消息撤回机制这里推荐夜影师傅的博客,
https://blog.youkuaiyun.com/whklhhhh/article/details/78620498
正题
尝试最简单的的办法,当然是搜索关键字符串了。
查找关键函数无疑是最浪费时间的,在这发现了010Editor的新功能,用起来还挺舒服的。
这里要选Unicode类型,之前版本好像是Ascii类型的,这也算我踩过的坑吧,当然在不看任何帖子的情况下,这个坑还是挺深的。
发现最多的就是在MsgMgr.dll中和IM.dll中。
好吧,这里我压根没有分析,正常人都会认为我们应该分析MsgMgr.dll这个文件,然后经大量帖子证明,我们应该分析IM.dll。
附加QQ,分析IM.dll这个文件看看。(对于这次逆向,感觉OD不是很好用,这次使用x32_dbg)
来到IM.DLL模块搜索字符串,
总不能一个一个分析吧,我也不会啊(23333333)。
先从第一个下断点,发现没什么卵用。而且有一大部分很明显功能相似,那我们直接从这里下断。
经过我3.99级的英语水平翻译,Buddy那行和私聊撤回相关,Group那行和群聊撤回相关,至于中间那行,我就当做没看见。
在OnNotifyBuddyMessageRevoked下断,然后用小号发消息然后撤回,嗯,perfect,完美断在了这里。
到这里,不是有手就行了?
直接干掉这个函数看看,我们翻到这个函数最后的返回处,
然后将函数开头处修改为相同的值。
->>>> ret 8
经过测验,完美防撤回。
对于群聊撤回也是同样的思路。
总结
没有技术含量,在没有任何帮助的前提下,是对耐心的考验,只要能找到关键函数patch掉,就没什么操作了。