工具:x64dbg

微信客户端版本:4.0.0.26

文件-附加,选择带窗口标题的 Weixin 进程

点击”符号”选项,在模块中搜索到 weixin.dll,双击进入

通过搜索字符串revokemsg或匹配特征57 53 48 83 EC 20 48 89 CE 80 3D D1 F7 DC 05 00 75 21 48 B8,定位到消息撤回调用逻辑处。

jne weixin.7FFEE4A62F24修改为jmp weixin.7FFEE4A62F24,跳过下方撤回消息执行逻辑

JNE 和 JMP 都是汇编中控制程序执行流程的跳转指令,但这两有所不同:

JNE:不相等时跳转,通常通过 CMP 指令来比较两个寄存器或内存中的值是否相等,不相等时 ZF (零标志位)会被置为 0,此时会执行跳转到 JNE 指令后的地址。

JMP:无条件跳转,CPU 直接跳转到 JMP 指令后的地址。

修改后,右键选择”补丁”-“修补文件”,保存为新的 weixin.dll 文件。

用 patch 后的替换掉原本的weixin.dll ,即可实现防撤回。

发送端撤回消息:

接收端: