大佬勿喷,写给逆向微信新手看的
测试hook使用的软件:
Windows 10系统
vs2019
Cheat Engine7.2
Ollydbg 吾爱pj版本
微信版本:3.2.1.123
了解微信禁止多开原理
微信使用的是mutex 互斥
启动微信的时候会用CreateMutexW来创建互斥体,微信互斥体名字:_WeChat_App_Instance_Identity_Mutex_Name
用od设置断点找到互斥体名字地址,ce修改互斥体名字
1.用od打开微信,打开后不要运行。
2.搜索微信调用的CreateMutexW函数
3.点击确定会跳转到这里,按下f2设置断点
4.用od运行程序
5.断下来之后检查这里,会发现微信互斥体名字(如果没有的话多点几下运行程序,还是没有就检查是不是断点设置错误了)
6.选中这个call,右键点击它,反汇编跟随
7.点击后会跳转到反汇编窗口,往上滑一点会找到微信互斥体名字
8.右键点击这个互斥体名字,数据窗口跟随,立即数
9.用ce搜索这个地址,修改里面的值
这个编码选上
修改里面的值
10.od取消之前设置的断点,点下运行程序
11.程序运行后,我们在再打开一下微信,会发现可以直接双开了。
实现多开思路
1.创建一个微信挂起进程
2.往微信挂起进程里面注入dll,修改互斥体名字
3.恢复进程
实现多开代码
dll
#include<windows.h>
#include <iostream>
//获取模块基质
DWORD getdlljz() {
HMODULE wxdll = LoadLibraryA("WeChatWin.dll");
return (DWORD)wxdll;
}
VOID wxdk() {
DWORD mkjz = getdlljz();
//模块基质+互斥体偏移地址
DWORD wxmz1 = mkjz + 0x188B2E8;
//要修改的互斥体名字宽字符,如果要多开很多个微信请用随机宽字符
//不用随机字符只能打开两个,一个dll注入打开,一个正常打开
wchar_t wt[] = L"cnhdcjd";
int addrvar = 0;
addrvar = (int)&wt;
//修改内存页属性可读可写
DWORD lpfOldProtect;
BOOL ccc1 = VirtualProtectEx(GetCurrentProcess(), (LPVOID)wxmz1, sizeof(wt), PAGE_EXECUTE_READWRITE, &lpfOldProtect);
if (ccc1 == 0)
{
MessageBox(NULL, "修改失败", "Title(标题)", MB_OK);
}
//修改互斥体名字
BOOL ccc = WriteProcessMemory(GetCurrentProcess(), (LPVOID)wxmz1, wt, sizeof(wt), NULL);
if (ccc1 == 0)
{
MessageBox(NULL, "修改失败1", "Title(标题)", MB_OK);
}
}
挂起程序和注入dll的就不写了,网上有很多
qq2244357123
版权声明:本文为qq_36608560原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。