微信逆向之自己动手去除微信多开限制
一、我们先猜猜微信是怎么实现不能打开多个的,在网上找到一篇文章使用Windows的互斥体Mutex可以实现程序的运行互斥。
使用Windows的互斥体Mutex可以实现程序的运行互斥,原理为使用为进程建立一个仅为该进程所拥有的互斥体,这个互斥体可以被其他程序检测到,但不可以被其他程序获取,在持有Mutex互斥体的程序退出后(包括被结束进程后)该Mutex互斥体自动被释放。
代码实现
使用互斥体Mutex需要引入Windows.h头文件
二、知道了实现原理,我们直接上xdbg64,我们知道了创建互斥体调用的Windows api CreateMutex方法 所以我们直接搜这个看看
1.首先打开微信不用登陆
2.打开xdbg64 附加微信

3.先搜索wechat 选择 附加

4.选择断点页面 选择所有断点删除先

5.选择cpu页面 CTRL + G 跳转搜索函数CreateMutex 我们选择 CreateMutexW函数确定

6.点击左边的小圆点 下一个断点

7. 先点击循环箭头 重启调试微信 然后点击运行或者直接按快捷键F9
因为这个CreateMutexW不只创建互斥体调用 有很多地方也调用了
所以我们一直F9运行观察
当第N次在这个断点断下的时候 我们观察到右边的寄存器的字符串有明显的信息提示是在创建或检查互斥体了
那么我们就不要再F9了,现在直接F8一步一步的跟

8.当我们一直F8跟到这的时候 发现了关键信息 preInstanceAlreadyRun
看到这个我们猜应该是去判断了互斥体存在了 然后执行退出程序的逻辑
然后上面有一个判断 应该就是判断互斥体有没有的 所以我们直接改这个判断让他永远跳过去不执行里面的逻辑不就行了吗

9.有了思路 我们直接双击这个判断编辑
把je改成jmp就行了 jmp就是直接调用的意思 具体去看汇编指令
然后确定就修改好了

10.我们修改后要打补丁 直接右击选择补丁

11.会列出来所有修改的地方 我们全选然后 修补文件

WeChatWin.dll

浙公网安备 33010602011771号