TIM防撤回实现(萌新之作)
## TIM防撤回实现作为一个常年混迹各种群的资深潜水党,每次翻看聊天记录的时候都能发现一堆的撤回信息,看着非常不舒服,并且网上也有很多的防撤回例子提供学习,所以就打算自己也动手尝试做一个防撤回的功能。
> 1. 第一步通过notepad在bin目录下的所有dll中搜索revoke关键字
>
>
>
>
>
> 2. 然后我们就可以上**od**或**x32dbg**对这些DLL下断找CALL了,我这里使用的是**x32dbg**,因为它的搜索过滤比OD要舒服很多
>
>> 1. 打开软件,附加进程,附加之后会自动断下来,记得F9
>>
>>
>>
>> 2. 在**模块**(快捷键:<kbd>Crtl</kbd>+<kbd>E</kbd>)中进入我们之前找到的DLL
>>
>>
>>
>> 3. 在模块内搜索字符串``revoke``,看看有没有比较可疑的地方,下断进行尝试
>>
>> 这里有个``EnableMsgRevokeMenuItem``,看起来应该是软件初始化之类的,不管他,全部都下断点试试
>>
>> 4. 小号给自己发条消息并撤回,断点没反应,那就重复此步骤,在下一个模块内继续搜索下断,直到断下来
>
> 3. 找到关键位置,进行具体分析
>
>> 1. 在``im.dll``中我们通过``revoke``发现了大量的关键字
>>
>>
>>
>>``L"DoRevokeBuddyMessage failed to get msg_info."``撤回好友消息失败的日志,基本可以确定就撤回就和这个模块相关了,继续看看下面的字符
>>
>>
>>
>>这三个有重大嫌疑啊,从上到下分别是 好友(buddy)、讨论组(discussion)、群(group)消息撤回,三个都下断点,进行尝试。
>>
>> 2. 小号发消息并撤回,成功断在了``5FBBDE65:OnNotifyBuddyMessageRevoked(pNotifyMsgBody, pDataExtraInfo)``。
>>
>>
>>
>> 3. 单步往下,很快就可以看到一个大跳转,不过看了一下跳转的地址``5FBBDFA2``,是直接过了返回,再往下那块就是讨论组的撤回了,应该不是这里,继续往下
>>
>>
>>
>>
>>
>> 4. 来到第一个call,<kbd>F7</kbd>跟进
>>
>>
>>
>> 5. 发现两个大跳转,直接跳转到了返回处
>>
>>
>>
>> 6. 直接改之,<kbd>F9</kbd>,然后程序疯狂异常,无奈重启程序
>>
>> 7. 重启过程中想了下,都确定了这里就是实现撤回的函数,那直接返回应该也行的
>>
>> 8. 直接在函数入口处改返回
>>
>>
>>
>>``push ebp``改为``ret 8``
>>
>>
>>
>> 9. 小号发消息撤回试试
>>
>>
>>
>>
>>
>> 10. 第一张是电脑截图,第二张是手机截图,成功解决~
>>
>> 11. 依法修改群消息的撤回
>>
>>
>>
>>
>>
>> 成功。这里我是直接用的讨论组,因为我之前调试的时候发现讨论组撤回是直接走的群撤回逻辑,也就是说之前发现的三个关键处只需要修改两个就可以实现了,中间那个并没有发现哪里有调用
>>
>>
>
> 4. 修改完成就直接打补丁呗。<kbd>Crtl</kbd>+<kbd>p</kbd>
>
>
>
> 5. 退出tim,将保存的文件替换掉原来的文件,记得备份,至此大功告成~
第一次发帖,有什么问题还望多多指教,感谢!
参考资料: https://www.52pojie.cn/thread-702082-1-1.html diors-man 发表于 2019-10-10 21:24
企业微信防撤回怎么搞,也是按照这个思路?
企业微信没试过呢,不过微信也是差不多思路,微信的是直接修改WeChatWin.dll就可以实现 Mo. 发表于 2019-10-12 22:48
楼主请问我那三个地方也设置断点了然后用小号发消息再撤回没有出现你图上的那个断点咋回事呀?
私聊我一起探讨下? 谢谢分享,很详细。 学习了,感谢分享 感谢分享,不明觉厉。 这排版让我有点绝望 感谢分享,不明觉厉 支持楼主一波
学到了学到了
谢谢 分享 现在都用tim了