吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3866|回复: 78
收起左侧

[分享] 小白逆向--去除Windows微信多开限制

[复制链接]
sunnycandy 发表于 2024-8-6 22:22

一直对逆向很有兴趣,但没能实操过,这次在爱破上看到了一个小白教程,就跟着实操了一遍,并在实操的过程中弄明白了一些教程中并未提到的点,受益匪浅,在此记录。

准备工具

x64dbg

微信3.9.10.27 (不同版本的具体操作存在一定区别,但大致思路相同)

参考

https://www.52pojie.cn/thread-1951224-1-1.html

具体过程

1. 找到一个切入点

参考博客中,博主先调查出Windows下微信实现多开限制的方式——调用Windows的CreateMutex api来构建一个互斥体,之后便是通过追踪CreateMutex函数来打下第一个断点。

2.在x64dbg中打开微信

  1. 打开微信,不用登陆

  2. 打开xdbg64,  附加微信
    Untitled.png

3.先搜索wechat 选择 “附加”
Untitled 1.png

附加后,x64dbg就可以对微信进行调试

4.重新打开微信,无需登陆。这一步是为了使得之后x64dbg所操作的微信会进入多开限制相关的代码段中

5.选择断点页面, 删除所有默认断点
Untitled 2.png

6.选择cpu页面 CTRL + G 跳转搜索函数CreateMutex,有四个结果
Untitled 3.png

7.一个一个选择,并跳转到对应位置后,发现来源于同一处,都打一个断点

Untitled 4.png

8.先点击循环箭头重启调试微信
Untitled 5.png

9.多次点击运行或者按快捷键F9,直到到达我们设定断点处。(之所以按多次,是因为在运行过程中,会自动创建一些断点)
Untitled 6.png

到达设定的断点处
Untitled 7.png

可以看到,是直接停在第四个红点处,这意味着微信调用的是CreateMutexW接口,而没有用另外三个。

10.接下来开始按F8, 一步一步执行程序,直到出现多开限制导致的现象——即第4步中打开的微信窗口被唤起
Untitled 8.png

执行到图中标记的这一句时(该行右侧的“打开窗口”为我自己注释所得,并非原来就有),右边的微信窗口自动唤起,此时我们就能确定多开限制相关的代码段的大致范围,从 CreateMutexW 所在的代码行,到窗口被唤起时,所执行到的代码行。

11.接下来要收缩代码范围,根据模块进行收缩

窗口的左上角会显示模块的名称,如微信窗口被唤起时,所在的模块为wechatwin.dll
Untitled 9.png

而根据之前的图,CreateMutex断点所在模块为kernel32.dll, 在执行过程中,还加载过名为ntdll.dll等的其他模块,kernel32.dll与ntdll.dll模块等是系统模块(判断的方式请见第15步),不应该进行修改,否则可能会影响到其他软件甚至系统的使用,而wechatwin.dll是只有微信用的模块(判断的方式请见第15步),修改时无需担心影响到其他软件。因此我们需要重新执行一次8、9、10步,实时观察所在模块,找到第一次进入到wechatwin.dll是在哪一行,给该行加入注释,如下图
Untitled 10.png

可以看到,我们将范围缩短到了32行。

12.接下来就按F8逐步执行这个范围里的语句,并打注释记录条件跳转语句(je与jne)是否进行了跳转,如图,其中,“有不跳”意味着:在已经有一个微信窗口的情况下,该语句不会进行跳转
Untitled 13.png

13.关闭第4步中打开的微信窗口,则之后x64dbg所启动的微信就不会进入导致多开限制相关的代码段,重新测试第9步范围内的条件跳转语句,并进行标注。其中,“无不跳”意为:“在无其他微信窗口的情况下,该语句不会进行跳转”,“无跳”意为:“在无其他微信窗口的情况下,该语句会进行跳转”
Untitled 14.png

在第二个条件跳转语句,“已有微信窗口”与“无其他微信窗口”的行为就有了区分;但无法排除剩下两个跳转语句会产生影响的可能性,因此对剩下的两个跳转语句打上断点,不断按“F9”,观察在微信窗口出现之前,这两个断点是否会激活。
Untitled 15.png

在该过程中,断点并未激活,因此可以排除剩下两个条件跳转语句对结果会起影响的可能性。

14.修改跳转条件,将jne修改为jmp
Untitled 16.png

Untitled 17.png

15.构建补丁

Untitled 18.png

Untitled 19.png

Untitled 20.png

点击修补文件后,弹出的文件管理器所在的路径即为当前模块所在的路径,可以根据该路径判断模块是系统模块还是单个应用的模块。将文件名设置为 模块名+New.dll,进行保存。

16.备份源文件,启用补丁

打开文件管理器,进入文件保存路径,将原来的模块(即WeChatWin.dll)命名为WeChatWin.dll.bak, 用于出问题时软件恢复,再将我们保存的文件(即WeChatWinNew.dll)命名为WeChatWin.dll。

17.重启微信,可以进行多开,预期目标完成
Untitled 21.png

免费评分

参与人数 9吾爱币 +15 热心值 +9 收起 理由
Vedere + 1 + 1 用心讨论,共获提升!
junglecat + 1 + 1 我很赞同!
yxuebo1987 + 1 + 1 我很赞同!
Hmily + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
bailemenmlbj + 1 + 1 谢谢@Thanks!接下来期待“防撤回”教程
榻榻米 + 1 + 1 热心回复!
st0rm + 1 + 1 谢谢 @Thanks!
q1581 + 1 + 1 虽然有点复杂,但实际上一点都不容易。小白最省事的办法是快速点击微信程序.
jl0205 + 1 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

tlvip 发表于 2024-8-7 20:09
本帖最后由 tlvip 于 2024-8-7 20:14 编辑
Hmily 发表于 2024-8-7 10:55
你贴图的方法错了,搞复杂了,看这个教程https://www.52pojie.cn/misc.php?mod=faq&action=faq&id=29&messa ...

大佬,手机上的老版本微信不让登录可有什么好办法?
不能升级,老爷机升级了就废了。
论坛找了一圈,貌似没人研究这个。

主要的目的就是想用报废手机接个微信消息。

-----------------------------------------------------------------------------------------------------
回复贴我删不掉了,抱歉。我问错人了,我以为你是对此类逆向研究得大佬。
点进去一看,是版规
冰炎梦幻 发表于 2024-8-7 22:54
根据题主思路。给一个小白不同版本可行的方法。
先备份原WeChatWin.dll,WINHEX打开WeChatWin.dll,搜索HEX:3DB70000000F85
然后把0F 85 WX YZ 改为E9 WX+1 YZ 00
比如0F 85 55 AA 就改为E9 56 AA 00
cbkxh 发表于 2024-8-9 00:40
tlvip 发表于 2024-8-7 20:09
大佬,手机上的老版本微信不让登录可有什么好办法?
不能升级,老爷机升级了就废了。
论坛找了一圈,貌 ...

我也有这个问题,旧手机因系统老 微信不让升级,以前的微信聊天无法看到了,唉
Hmily 发表于 2024-8-7 10:55
你贴图的方法错了,搞复杂了,看这个教程https://www.52pojie.cn/misc.php? ... 29&messageid=36 ,尽快编辑下帖子修改一下,不然图片会失效丢失。
a774570121 发表于 2024-8-7 18:41
学习了谢谢
zzqzzq 发表于 2024-8-7 19:14
感谢分享
reasuna 发表于 2024-8-7 21:37
能多开是好事
xy838108 发表于 2024-8-7 21:41
学习一下 谢谢分享
aa0810666 发表于 2024-8-7 22:10
看不懂思密达 有点乱
jl0205 发表于 2024-8-8 06:37
感谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-14 08:00

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表