网上那么多人发了教程, 你们不会还以为我会说 revoke 这个关键字吗?
那我就没必要再发一遍了。实际上, 使用 x32dbg/x64dbg 搜索 IM.dll 文件, 搜索 revoke 关键字后, 会出现一大堆结果, 能找到十几个相关的字符串, 这还能叫做关键字吗?
经过我反复确认:
好友防撤回 bytes_reserved
群消息防撤回 bytes_userdef
软件版本
准备操作
首先, 启动 QQ 并使用 x32dbg 调试工具分析 IM.DLL 文件。
将 QQ 运行起来
打开 x32dbg
选择 文件 -> 附加, 然后选择 QQ 进程
点击 符号 -> 搜索, 输入 im.dll, 找到 IM.dll 模块并双击进入代码空间
好友防撤回
在调试中, 搜索 bytes_reserved 字符串, 来找到与好友防撤回相关的代码。
右键点击, 选择 搜索 -> 当前模块 -> 字符串, 然后输入 bytes_reserved
根据多次经验总结, 通常第三个结果是我们要找的
修改代码如下
6D23D28A | 897D F4 | mov dword ptr ss:[ebp-C],edi |
6D23D28D | 8B06 | mov eax,dword ptr ds:[esi] |
6D23D28F | 51 | push ecx | # 从此处开始修改
6D23D290 | 68 58975B6D | push im.6D5B9758 | 6D5B9758:"bytes_reserved"
6D23D295 | 56 | push esi |
6D23D296 | FF50 78 | call dword ptr ds:[eax+78] | [eax+78]:&L"诠焕贀焊慭湩"
6D23D299 | 85C0 | test eax,eax | # jmp 到这里
6D23D29B | 79 39 | jns im.6D23D2D6 |
6D23D29D | 8D45 0C | lea eax,dword ptr ss:[ebp+C] |
修改前的代码
修改步骤
修改后的代码
群消息防撤回
接下来, 搜索 bytes_userdef 字符串来找到与群消息防撤回相关的代码。
点击 引用 搜索字符串 bytes_userdef
修改群消息防撤回的代码
6D23D0D7 | 8B45 F0 | mov eax,dword ptr ss:[ebp-10] |
6D23D0DA | 8D55 EC | lea edx,dword ptr ss:[ebp-14] |
6D23D0DD | 52 | push edx |
6D23D0DE | 895D EC | mov dword ptr ss:[ebp-14],ebx |
6D23D0E1 | 68 E89A5B6D | push im.6D5B9AE8 | 6D5B9AE8:"bytes_userdef" # 从此处开始修改
6D23D0E6 | 8B08 | mov ecx,dword ptr ds:[eax] |
6D23D0E8 | 50 | push eax |
6D23D0E9 | FF51 78 | call dword ptr ds:[ecx+78] |
6D23D0EC | 85C0 | test eax,eax | # jmp 到这里
6D23D0EE | 79 2D | jns im.6D23D11D |
6D23D0F0 | 8D45 0C | lea eax,dword ptr ss:[ebp+C] |
修改前的代码
修改步骤
修改后的代码
保存修改并应用补丁
找到任意位置保存补丁文件, 然后手动将其复制到原文件所在目录, 替换掉原始文件。
点击 文件 -> 补丁, 然后选择 修补文件
效果验证
修改后, 别人撤回消息时, 你不会收到撤回提示, 但消息仍然会保留
原文
实现简单的QQ消息防撤回功能
关于XX和TXX的防撤回,直接搜索关键字,一步到位!