PC微信HOOK-PC微信逆向-消息防撤回(版本3.0.0.47)
具体源码如下(VC++):
//************************************************************ // 函数名称: AntiRevoke // 函数说明: 防撤回 // 作 者: keepmoving8 // 时 间: 2020/9/15 // 参 数: void // 返 回 值: void //************************************************************ //用来存储备份指令 unsigned char backupCode[5] = { 0 }; void AntiRevoke() { //用5个汇编字令指令nop,机器二进制指令为:x90; unsigned char fix[5] = { 0x90, 0x90 ,0x90 ,0x90 ,0x90 }; DWORD dwPathcAddr = (DWORD)GetModuleHandle(L"WeChatWin.dll") + 0x3B65DB; //修改代码段属性 DWORD dwOldAttr = 0; //获取修改内存权限 VirtualProtect((LPVOID)dwPathcAddr, 5, PAGE_EXECUTE_READWRITE, &dwOldAttr); //保存5个字节的原指令 memcpy(backupCode, (LPVOID)dwPathcAddr, 5); //修改5个字节的原指令为Nop memcpy((LPVOID)dwPathcAddr, fix, 5); //恢复属性 VirtualProtect((LPVOID)dwPathcAddr, 5, dwOldAttr, &dwOldAttr); } //************************************************************ // 函数名称: UnAntiRevoke // 函数说明: 恢复防撤回 // 作 者: keepmoving8 // 时 间: 2020/9/15 // 参 数: void // 返 回 值: void //************************************************************ void UnAntiRevoke() { //0xE8为汇编指令 call if (backupCode[0] == 0xE8) { DWORD dwPathcAddr = (DWORD)GetModuleHandle(L"WeChatWin.dll") + 0x3B65DB; //修改代码段属性 DWORD dwOldAttr = 0; VirtualProtect((LPVOID)dwPathcAddr, 5, PAGE_EXECUTE_READWRITE, &dwOldAttr); //还原的原指令 memcpy((LPVOID)dwPathcAddr, backupCode, 5); //恢复属性 VirtualProtect((LPVOID)dwPathcAddr, 5, dwOldAttr, &dwOldAttr); //修改备份指令为空 memset(backupCode, 0, 5); } }
上一篇:
uniapp开发微信小程序-2.页面制作