大家都知道,正常情况下,电脑微信客户端只能打开一个微信,如果再次点击是没法打开第二个的。微信是怎么实现,禁止一个客户端打开多个微信的呢? 微信每次启动的时候,都调用: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];
目前已经实现了大部分功能,运行稳定,比如:发各种消息,接收各种消息,群管,下载文件,加好友,检测僵尸粉,发朋友圈等等功能,可提供接口,方便二次开发,欢迎技术交流
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.