网上那么多人发了教程, 你们不会还以为我会说 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] |
修改前的代码
修改步骤
修改后的代码
保存修改并应用补丁
找到任意位置保存补丁文件, 然后手动将其复制到原文件所在目录, 替换掉原始文件。
-
点击
文件
->补丁
, 然后选择修补文件
效果验证
修改后, 别人撤回消息时, 你不会收到撤回提示, 但消息仍然会保留
原文