Tencent QQ 防撤回, 直接搜索关键字, 一步到位!

网上那么多人发了教程, 你们不会还以为我会说 revoke 这个关键字吗?

那我就没必要再发一遍了。实际上, 使用 x32dbg/x64dbg 搜索 IM.dll 文件, 搜索 revoke 关键字后, 会出现一大堆结果, 能找到十几个相关的字符串, 这还能叫做关键字吗?

经过我反复确认:

  • 好友防撤回 bytes_reserved
  • 群消息防撤回 bytes_userdef

软件版本

about_qq

准备操作

首先, 启动 QQ 并使用 x32dbg 调试工具分析 IM.DLL 文件。

  1. 将 QQ 运行起来

  2. 打开 x32dbg

  3. 选择 文件 -> 附加, 然后选择 QQ 进程

    x32dbg_attach

  4. 点击 符号 -> 搜索, 输入 im.dll, 找到 IM.dll 模块并双击进入代码空间

    x32dbg_symbols

好友防撤回

在调试中, 搜索 bytes_reserved 字符串, 来找到与好友防撤回相关的代码。

  1. 右键点击, 选择 搜索 -> 当前模块 -> 字符串, 然后输入 bytes_reserved

    x32dbg_search

    根据多次经验总结, 通常第三个结果是我们要找的

    x32dbg_search_bytes_reserved

  2. 修改代码如下

    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]            |
    

    修改前的代码

    x32dbg_search_bytes_reserved_original

    修改步骤

    x32dbg_search_bytes_reserved_modify

    修改后的代码

    x32dbg_search_bytes_reserved_modify_after

群消息防撤回

接下来, 搜索 bytes_userdef 字符串来找到与群消息防撤回相关的代码。

  1. 点击 引用 搜索字符串 bytes_userdef

    x32dbg_search_bytes_userdef

  2. 修改群消息防撤回的代码

    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]            |
    

    修改前的代码

    x32dbg_search_bytes_userdef_original

    修改步骤

    x32dbg_search_bytes_userdef_modify

    修改后的代码

    x32dbg_search_bytes_userdef_modify_after

保存修改并应用补丁

找到任意位置保存补丁文件, 然后手动将其复制到原文件所在目录, 替换掉原始文件。

  1. 点击 文件 -> 补丁, 然后选择 修补文件

    x32dbg_patch

效果验证

修改后, 别人撤回消息时, 你不会收到撤回提示, 但消息仍然会保留

actual_results.gif


原文

实现简单的QQ消息防撤回功能
关于XX和TXX的防撤回,直接搜索关键字,一步到位!

最后更新于 2025-02-18
使用 Hugo 构建
主题 StackJimmy 设计