微信逆向之自己动手去除微信多开限制,小白也能看懂
PS:我也是入门级水平,大佬慎看。工具准备:xdbg64、微信最新版3.9.11.25 其他版本的也大同小异 思路基本都一样
前言:之前一直使用的bat脚本多开微信 很不爽 每次想中途多开一个微信 都要关闭所有的 才能重新打开多个
所以今天来个修改dll版本的,想什么时候开就什么时候开!
一、我们先猜猜微信是怎么实现不能打开多个的,在网上找到一篇文章使用Windows的互斥体Mutex可以实现程序的运行互斥。
使用Windows的互斥体Mutex可以实现程序的运行互斥,原理为使用为进程建立一个仅为该进程所拥有的互斥体,这个互斥体可以被其他程序检测到,但不可以被其他程序获取,在持有Mutex互斥体的程序退出后(包括被结束进程后)该Mutex互斥体自动被释放。
代码实现
使用互斥体Mutex需要引入Windows.h头文件。
#include <windows.h>
int main() {
// 创建互斥体,其中第二个变量为TRUE表示该互斥体为该程序所拥有,第三个变量是互斥体的名字
HANDLE hMutex = CreateMutex(NULL, TRUE, "MyMutexApplication");
// 检查互斥体是否已经存在,如果存在则表示已经有程序持有名为"MyMutexApplication"的互斥体,即已经有相同程序运行
if (GetLastError() == ERROR_ALREADY_EXISTS) {
// 关闭互斥体句柄并退出程序
CloseHandle(hMutex);
return 0;
}
//如果没有出现错误,则表示互斥体未创建,相同程序没有运行
//执行程序逻辑 ...
// 关闭互斥体句柄
CloseHandle(hMutex);
return 0;
}
二、知道了实现原理,我们直接上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.会列出来所有修改的地方 我们全选然后 修补文件
12.为了不把原文件覆盖替换掉 我们起个新名字WinChatWinNew.dll
保存好 就能关闭xdbg64了
13.我们去安装目录先把 原来的文件WinChatWin.dll 重命名加上.bak
这样做的好处是防止我们替换文件后微信如果异常打不开 我们还能改回来恢复
14.然后我们把我们刚才打补丁的新文件WinChatWinNew.dll改成原文件名WinChatWin.dll
这样微信启动就读取我们打过补丁的dll了
15.然后我们直接点击桌面的微信图标试试吧 多点几次发现 限制没了
16.哈哈 又能愉快的玩耍了 伙伴们赶快去动手试试吧{:1_927:}
亲自动手!完成 成就感满满;www
看完喜欢的伙伴,给个免费的评分在走好吗:lol{:1_919:}
本帖最后由 shuai20 于 2024-9-2 14:54 编辑
楼主的方法,我没有搞定,还是要感谢楼主,用楼主的数据,我借助了winhex搞定了
替换十六进制
0F84BD000000FF15F4246501
替换为
E9BE00000000FF15F4246501
上面是微信3.9.11.25版用
下面是微信最新版3.9.12.9,方法同上
0F84BD000000FF1524656501
替换为
E9BE00000000FF1524656501 666666666666 大神真牛!!!但是有个简单的方法,enter+鼠标左边点微信,也可以多开
学习了,感谢 wfql1024 发表于 2024-8-12 02:57
哇,大佬,想知道这个原理是啥呀,是怎么得到要将哪个替换到哪个的,楼主的方法我想用Python自动化完成, ...
原理就是查找十六进制汇编命令的特征码,直接修改。 不错,试一试效果怎么样。 {:1_921:} 多开不会把号给嘎了吧 666666{:301_998:} 学习了,感谢 学习了,感谢 这个好,真材实料 这个好 这个好 大佬牛啊 大神真是牛哈 多开不会把号封了!有人试过吗