QQ防撤回

QQ防撤回

版本截图
QQ防撤回_第1张图片

收集信息

这一步非常关键,因为在分析时,思路如果不对,基本上是分析不出来的,这里我们从敏感字符串开始。先搜一搜撤销的英文单词
QQ防撤回_第2张图片
如图知道了好几个单词,锁定关键字一个一个使用Notepad++的搜索功能,再文件中搜索。
QQ防撤回_第3张图片
查看搜索结果,发现又两个和消息有关的,message
所以有限分析IM.dll和MsgMgr.dll

初步分析IM.dll和MsgMgr.dll

使用LordPE或其他问价你查看DLL的导出,发现这两个DLL的导出函数都有一下四个函数:
QQ防撤回_第4张图片
这四个函数是COM组件的标配。所以可以确定是COM组件。(COM组件是windows下抽象于二进制层的API接口,可以适应各种编程语言,包括C++,C#,VB等,比SDK API适应性更强)

QQ防撤回_第5张图片
QQ防撤回_第6张图片
可以发现MsgMgr.dll只有4个导出,其他没有了,而IM.dll还有及格导出函数,貌似与网络听信有关(导出函数PostTask),那就先分析IM.dll

使用x32dbg详细分析IM.dll

运行TIM,附加程序
QQ防撤回_第7张图片
在符号选项卡中找到IM.dll模块,进入其代码空间。
QQ防撤回_第8张图片插在该模块所有字符串

在字符串中寻找和撤销(revoke)相关的

QQ防撤回_第9张图片在字符串中定位撤销字符串
QQ防撤回_第10张图片由于撤销字符串比较多,为了方便定位代码,可以右键在所有命令上下断点
QQ防撤回_第11张图片构建测试环境,寻找撤销CALL

再启动一个QQ,给被调试的tim,然后再撤回,发现会断到以下代码处,分析附近代码

QQ防撤回_第12张图片测试附近的每一个CALL。让其直接返回,可以找到起作用的CALL

经过测试附近代码,发现关键函数是以下的CALL

QQ防撤回_第13张图片修改下面的跳转,Nop掉,保存。

测试结果
QQ防撤回_第14张图片总结:

tim QQ 的聊天记录在本地和服务器应该都有保存,而撤销功能,服务器我们没有办法阻止,本地我们有机会做到不撤销,防撤销的原理就是patch修改本地聊天信息的代码,让对方撤销之后,本地依然显示即可。

你可能感兴趣的:(娱乐)