war3多开的实现

好孩子不怎么玩游戏,就拿这个练下手了,看郁的教程装了个热血,那个直接SetWindowText然后将游戏换个目录就可以多开。

先运行一个Frozen Throne.exe,然后再运行一个提示“魔兽争霸资料片:冰封王座已经运行”,OD载入bp MessageBoxA下断,执行后ait+f9返回用户代码

004010AE |. 6A 00 PUSH 0 ; /Style = MB_OK|MB_APPLMODAL 004010B0 |. 8D4C24 40 LEA ECX,DWORD PTR SS:[ESP+40] ; | 004010B4 |. 50 PUSH EAX ; |Title 004010B5 |. 51 PUSH ECX ; |Text 004010B6 |. 6A 00 PUSH 0 ; |hOwner = NULL 004010B8 |. FF15 34714000 CALL DWORD PTR DS:[<&USER32.MessageBoxA>>; \MessageBoxA 004010BE |. 8B5424 10 MOV EDX,DWORD PTR SS:[ESP+10] 004010C2 |. 52 PUSH EDX ; /hObject 004010C3 |. FF15 58704000 CALL DWORD PTR DS:[<&KERNEL32.CloseHandl>; \CloseHandle


看到CloseHandle没,应该是使用的创建互斥对象来防多开的,向上找,看到了GetLastError了

0040103C |. FFD5 CALL EBP ; [GetLastError 0040103E |. 3D B7000000 CMP EAX,0B7 00401043 |. 75 1A JNZ SHORT Frozen_T.0040105F


果断JNZ改为JMP,上面看到使用的是CreateEvent。保存修改,运行下,不行,又出来错误提示“请核实您的冰封王座光盘已在光盘驱动器中,然后点击重试”,OD载入修改好后的Frozen Throne.exe,发现是创建了个进程,Frozen Throne.exe就相当于个loader,那我们直接分析war3.exe吧

先运行一个war3.exe,然后再运行一个提示“warcraft III was unable to initialize”,od载入bp MessageBoxA,F9运行,断下,ALT+F9返回用户代码,弹出那个窗口了,所在的是GAME.DLL这个模块,在附近没有发现可以跳过这个CALL的地方,按CTRL+F9执行到返回,往上拉可以看到“warcraft III was unable to initialize“这个字符串了,CTRL+F9继续执行到返回

6F00974A 85C0 TEST EAX,EAX 6F00974C 74 0F JE SHORT Game.6F00975D 6F00974E E8 ED270000 CALL Game.6F00BF40 6F009753 33C9 XOR ECX,ECX 6F009755 E8 66D1FFFF CALL Game.6F0068C0 ;返回到这个CALL 6F00975A 33C0 XOR EAX,EAX 6F00975C C3 RETN 6F00975D B9 9881886F MOV ECX,Game.6F888198 ; ASCII "Warcraft III Game Application"

在这个CALL的上面看到了个跳转,改为强制跳转试下,保存修改,成功多开

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值