sunnycandy 发表于 2024-8-6 22:22

小白逆向--去除Windows微信多开限制

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

# 准备工具

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,附加微信


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


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

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

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


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


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



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


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


到达设定的断点处


可以看到,是直接停在第四个红点处,这意味着微信调用的是CreateMutexW接口,而没有用另外三个。
   
10.接下来开始按F8, 一步一步执行程序,直到出现多开限制导致的现象——即第4步中打开的微信窗口被唤起


执行到图中标记的这一句时(该行右侧的“打开窗口”为我自己注释所得,并非原来就有),右边的微信窗口自动唤起,此时我们就能确定多开限制相关的代码段的大致范围,从 CreateMutexW 所在的代码行,到窗口被唤起时,所执行到的代码行。
   
11.接下来要收缩代码范围,根据模块进行收缩
   
窗口的左上角会显示模块的名称,如微信窗口被唤起时,所在的模块为wechatwin.dll


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


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


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


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


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

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




15.构建补丁








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

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

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

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

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

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

-----------------------------------------------------------------------------------------------------
回复贴我删不掉了,抱歉。我问错人了,我以为你是对此类逆向研究得大佬。
点进去一看,是版规{:1_907:}

冰炎梦幻 发表于 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?mod=faq&action=faq&id=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

学习一下 谢谢分享{:1_921:}

aa0810666 发表于 2024-8-7 22:10

看不懂思密达 有点乱

jl0205 发表于 2024-8-8 06:37

感谢分享
页: [1] 2 3 4 5 6 7 8
查看完整版本: 小白逆向--去除Windows微信多开限制