xingkongawa 发表于 2023-4-29 11:22

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)

右键->保存文件->选择路径

补丁制作完成,替换安装目录下的文件即可**(一定要备份原版的!!!)**

## 优缺点

- [+] 随时开,无限开

- [+] 无需借助第三方软件,无中毒风险

- [+] 长期可用

- [-] 每个版本都要单独搓补丁

- [-] 做补丁麻烦~~(吗?)~~
大家多评分啊,我要升级

爱飞的猫 发表于 2023-5-1 04:25

> [-] 每个版本都要单独搓补丁

为啥不用这个字符串做特征并 Hook CreateMutexW,建立 mutex 的时候把字串改掉?比如在字符串结尾加上 pid

xingkongawa 发表于 2023-4-29 12:15

宝宝抱抱贝贝 发表于 2023-4-29 12:13
之前有个大佬弄了个批处理的,这次学学楼主的,感谢分享

批处理的若有VX已经在运行就不能多开了...

wasm2023 发表于 2023-4-29 12:01

楼主,期待出个hook code的教程:lol

xingkongawa 发表于 2023-4-29 12:04

wasm2023 发表于 2023-4-29 12:01
楼主,期待出个hook code的教程

我已经写了个易语言的demo,但是由于易语言实在是上不了台面,我现在正在尝试把它移植到高级语言

wasm2023 发表于 2023-4-29 12:06

xingkongawa 发表于 2023-4-29 12:04
我已经写了个易语言的demo,但是由于易语言实在是上不了台面,我现在正在尝试把它移植到高级语言

期待成品:lol

宝宝抱抱贝贝 发表于 2023-4-29 12:13

之前有个大佬弄了个批处理的,这次学学楼主的,感谢分享

无阻 发表于 2023-4-29 12:22

用API直接干掉互斥体就好了

xingkongawa 发表于 2023-4-29 12:28

无阻 发表于 2023-4-29 12:22
用API直接干掉互斥体就好了

条条大路通罗马{:301_996:}

cdsgg 发表于 2023-4-29 12:32

xingkongawa 发表于 2023-4-29 12:28
条条大路通罗马

{:1_926:}都研究出啥功能了 下个版本 64位了

xingkongawa 发表于 2023-4-29 12:50

cdsgg 发表于 2023-4-29 12:32
都研究出啥功能了 下个版本 64位了

????
页: [1] 2 3 4
查看完整版本: PCVX逆向全解:自己手搓多开补丁