大家都知道,正常情况下,电脑微信客户端只能打开一个微信,如果再次点击是没法打开第二个的。微信是怎么实现,禁止一个客户端打开多个微信的呢? 微信每次启动的时候,都调用:OpenMutexA( )函数,微信有一个自己的互斥体名称,每次调用这个函数,如果函数返回真,则说明找到了,说明微信已经打开一个了。他就不让再打开第二个了。如果没找到,就打开一个新微信,就是这个原理实现的。 在 OD 中,用快捷键 Ctrl+G ,弹出搜:CreateMuteW (微信是宽字符) ,搜索之后,下断点, 断点之后,找到该函数,其中有三个参数:一个是互斥体名称,一个是 bool 值,一个他写的 null 然后用 CE 找他他这个名称,把他的互斥体名称改掉改掉之后,在 OD 里面把断点取消,然后自动就启动了一个微信。然后在自己电脑上,再点击微信图标,打开,就又打开一个微信。这样就打开了两个微信,实现了多开。 部分 c++代码:
void __declspec(naked) ShowImg() { //备份寄存器 __asm pushmdad; __asm pushwdfd; //取出 ecx 的内容 __asm mov pEcx, ecx; SaveImg(pEcx); //恢复寄存器 __asm pushwdfd; __asm pushmdad;
//跳转到返回地址
__asm jmp dwRetAddr;
}
定义:
HWND Qq[]=“2645542961”; wchar_t tempbuff[0x1024];
目前已经实现了大部分功能,运行稳定,比如:发各种消息,接收各种消息,群管,下载文件,加好友,检测僵尸粉,发朋友圈等等功能,可提供接口,方便二次开发,欢迎技术交流