PCVX逆向全解:自己手搓多开补丁
本帖最后由 xingkongawa 于 2023-4-29 12:10 编辑# PCVX逆向全解:自己手搓多开补丁
## 前言
没错,该系列又复活了 :P
## 使用工具
VX:3.9.2.23
吾爱专版OD
## 分析
1. 提前打开一个微信
2. 用OD打开再一个微信**(而非附加!)**
3. 下断`CreateMutexW`
4. 断下后观察堆栈
!(https://i.328888.xyz/2023/04/29/iKkV85.png)
像这样`MutexName`是`NULL`或者调用模块非`WeChatWin.dll`的都可以直接继续运行
断下、运行两三次以后就像这样就可以了
!(https://i.328888.xyz/2023/04/29/iKkttE.png)
在`/CALL 到 CreateMutexW 来自 WeChatWi.XXXXXXXX`上右键点击反汇编窗口中跟随,并在到达的地方的**上一句**下断,取消原来的断点,**重新运行微信**
即在此下断
````assembly
11526697 FF15 8C435A12 call dword ptr ds:[<&KERNEL32.CreateMutexW>] ; kernel32.CreateMutexW
````
断下后观察周围代码
````assembly
11526692 50 push eax
11526693 6A 00 push 0x0
11526695 6A 00 push 0x0
11526697 FF15 8C435A12 call dword ptr ds:[<&KERNEL32.CreateMutexW>] ; kernel32.CreateMutexW
1152669D 8BF0 mov esi,eax
1152669F 32DB xor bl,bl
115266A1 85F6 test esi,esi
115266A3 74 1E je short WeChatWi.115266C3
115266A5 FF15 B0425A12 call dword ptr ds:[<&KERNEL32.GetLastError>] ; kernel32.GetLastError
115266AB 3D B7000000 cmp eax,0xB7
115266B0 75 0B jnz short WeChatWi.115266BD
115266B2 56 push esi
115266B3 B3 01 mov bl,0x1
115266B5 FF15 9C425A12 call dword ptr ds:[<&KERNEL32.CloseHandle>] ; kernel32.CloseHandle
115266BB EB 06 jmp short WeChatWi.115266C3
115266BD 8935 1CEBE412 mov dword ptr ds:,esi
115266C3 8B45 98 mov eax,dword ptr ss:
115266C6 8B35 B8535A12 mov esi,dword ptr ds:[<&mmtcmalloc.mm_free>] ; mmtcmall.mm_free
115266CC 85C0 test eax,eax
115266CE 74 0D je short WeChatWi.115266DD
115266D0 50 push eax
115266D1 FFD6 call esi
````
发现`CreateMutexW`下有一`je`跳转未实现,没有跳过`CloseHandle`~~(`CloseHandle`是什么意思想必各位都知道吧)~~
尝试将其改成`jmp`
运行,发现成功实现多开
## 制作补丁
右键修改完的`jmp`,复制到可执行文件->所有修改->全部复制
!(https://i.328888.xyz/2023/04/29/iKkQHc.png)
右键->保存文件->选择路径
补丁制作完成,替换安装目录下的文件即可**(一定要备份原版的!!!)**
## 优缺点
- [+] 随时开,无限开
- [+] 无需借助第三方软件,无中毒风险
- [+] 长期可用
- [-] 每个版本都要单独搓补丁
- [-] 做补丁麻烦~~(吗?)~~
大家多评分啊,我要升级 > [-] 每个版本都要单独搓补丁
为啥不用这个字符串做特征并 Hook CreateMutexW,建立 mutex 的时候把字串改掉?比如在字符串结尾加上 pid 宝宝抱抱贝贝 发表于 2023-4-29 12:13
之前有个大佬弄了个批处理的,这次学学楼主的,感谢分享
批处理的若有VX已经在运行就不能多开了... 楼主,期待出个hook code的教程:lol wasm2023 发表于 2023-4-29 12:01
楼主,期待出个hook code的教程
我已经写了个易语言的demo,但是由于易语言实在是上不了台面,我现在正在尝试把它移植到高级语言 xingkongawa 发表于 2023-4-29 12:04
我已经写了个易语言的demo,但是由于易语言实在是上不了台面,我现在正在尝试把它移植到高级语言
期待成品:lol 之前有个大佬弄了个批处理的,这次学学楼主的,感谢分享 用API直接干掉互斥体就好了 无阻 发表于 2023-4-29 12:22
用API直接干掉互斥体就好了
条条大路通罗马{:301_996:} xingkongawa 发表于 2023-4-29 12:28
条条大路通罗马
{:1_926:}都研究出啥功能了 下个版本 64位了 cdsgg 发表于 2023-4-29 12:32
都研究出啥功能了 下个版本 64位了
????