Ollydbg(OD)汇编初探--QQ防撤回破解(QQ轻聊版7.7L 14298测试成功)
这里用的是52PJ汉化版的Ollydbg,下载解压运行主程序即可.
先来张测试成功的图,然后再进行破解操作
根据前人的经验,QQ撤回功能是由".Bin\im.dll"里的函数来控制的,这里我们只需要修改im.dll就能达到防撤回的目的了,下面我们来开始:
打开Ollydbg,加载im.dll
加载完成后,在"C LCG -主线程"窗口中单击右键打开菜单选择"查找>所有参考文本字串"
在弹出的"R 文本字符串参考"窗口中将右边的滑块拖到最前面,然后在该第一行单击右键打开菜单,选择"查找文本",在弹出的搜索框中输入"revoke",点击"确定"开始搜索(注意取消"区别大小写")
一直搜索,直到出现这三行,根据前人的经验,这三行就是控制QQ消息撤回的关键
OnNotifyBuddyMessageRevoked(pNotifyMsgBody, pDataE)
OnNotifyGroupMessageRevoked(pNotifyMsgBody, pDataE)
OnNotifyMiscMessageRevoked(pNotifyMsgBody, pDataE)
选中其中一行,双击后跳回"C LCG"窗口,找到这个命令的位置,注意箭头所示的那条线,一个完整的函数段是用类似[的框起来的
滑动鼠标滚轮,找到这段命令的末尾,现在看到的是"retn 0x8"(记下来,后面要用到),这里的意思是这段函数最后一条命令是执行"retn 0x8"
再滚动鼠标滚轮,找到这段函数的起始行,在该行点击右键打开菜单,选择"汇编",输入前面查到的"retn 0x8",其目的就是在这段函数一开始就执行"retn 0x8",完全忽略中间的命令,这样QQ消息撤回就无效了
如法炮制,将这三条命名都改完,然后在"C LCG 主线程"窗口单击右键打开菜单,选择"复制到可执行文件>所有修改",然后选择"全部复制",这个操作的目的是把所有的修改复制回im.dll里去
在弹出的"D 文件"窗口中单击右键打开菜单,选择"保存文件",这样我们就把im.dll修改完了
然后我们把我们修改好的im.dll复制到".\Bin"替换原来的就好了(如果提示文件被使用不能替换,是由于其它文件占用或者TX的驱动保护,可以用文件暴力删除工具或者粉碎机来先删除),完成后我们就可以登陆QQ来测试了
测试成功,本次教程结束!
注:
所有工具与思路均来源于互联网,感谢前人的付出!
也有人用nop或者dmp的方法来跳过撤回命令,但目前我使用的这个方法是操作最少最简单的,强烈推荐!
网上也有别人做好的成本补丁,但不推荐使用,因为不同版本的im.dll并不通用,使用后会导致QQ崩溃!