| 天使的风衣出品 浩方对战平台AYU版多开爆破详解!(新手搞汇编要举一反三!)
 
 大家都在使用AYU版的浩方,确实不错,广告都没了,干净清爽,但是,网上很多玩家一直想双开浩方对战平台,我不知道他们为什么要这样做,因为这样做毫无疑义。不像QQ游戏,可以用多开来刷分作弊什么的。
 不过,那么多网友要求,那我就试试吧。全当一个实验,仅此而已。
 为了麻烦广告,我直接使用AYU的1.31版浩方进行破解。
 
 教程开始:
 首先用PEID载入浩方主程序,检测是否有壳。
 
 大喜,原来是VC做的没壳的肉鸡程序。好了,直接用OD载入浩方主程序,对于一个新人的思路是这样的,首先查找字符串,正常运行浩方的时候,如果开了多个,就会提示平台已经启动的话语,如下图所示。
 
 
 那我们就开始查找有没有这些字符串是写在程序当中的。结果,很遗憾,没有找到,因为主程序里根本没调用任何中文的资源。如下图。
 
 
 没关系,我们还有别的方法。刚才我们知道这个程序是用VC写的,懂编程的都应该知道判断进程是否有多个的函数吧。没错,我们用OD找找看,是否有OpenMutex这种函数。很幸运,有一个OpenMutexA.
 
 
 我们查找它的输入函数参考。
 
 
 
 
 很好,只有一个地方调用了它,直接双击此句,让主进程的指针落在这个函数上。CALL了之后进行TEST比较,再将EAX给了ebp+518。如果若相等则跳,不相等就执行下面的代码,最终走向灭亡。这个大家可以设置断点测试一下。所以,爆破点就在此了,直接将JE改JMP吧。
 00420A9C   .  FF15 A4734F00 CALL DWORD PTR DS:[<&MSVCRT._strdup>]    ; \_strdup
 00420AA2   .  83C4 04       ADD ESP,4
 00420AA5   .  8945 7C       MOV DWORD PTR SS:[EBP+7C],EAX
 00420AA8   .  68 F4A15200   PUSH GameClie.0052A1F4                   ; /MutexName = "GameClient_Mutex"
 00420AAD   .  6A 00         PUSH 0                                   ; |Inheritable = FALSE
 00420AAF   .  68 01001F00   PUSH 1F0001                              ; |Access = 1F0001
 00420AB4   .  FF15 F8684F00 CALL DWORD PTR DS:[<&KERNEL32.OpenMutexA>; \OpenMutexA
 00420ABA   .  85C0          TEST EAX,EAX                             ;  风衣提示:在这里下断点,因为上面的函数已经在判断是否多开了
 00420ABC   .  8985 18050000 MOV DWORD PTR SS:[EBP+518],EAX
 00420AC2   .  EB 69         JMP SHORT GameClie.00420B2D              ;  风衣提示:这里如果不跳,那就完蛋了,所以,EB吧!00420AC4   .  50            PUSH EAX                                 ; /hObject
 00420AC5   .  FF15 F0684F00 CALL DWORD PTR DS:[<&KERNEL32.CloseHandl>; \CloseHandle
 00420ACB   .  6A 05         PUSH 5                                   ; /Relation = GW_CHILD
 00420ACD   .  C785 18050000>MOV DWORD PTR SS:[EBP+518],0             ; |
 00420AD7   .  FF15 D0754F00 CALL DWORD PTR DS:[<&USER32.GetDesktopWi>; |[GetDesktopWindow
 00420ADD   .  8B3D F8744F00 MOV EDI,DWORD PTR DS:[<&USER32.GetWindow>; |USER32.GetWindow
 00420AE3   .  50            PUSH EAX                                 ; |hWnd
 00420AE4   .  FFD7          CALL EDI                                 ; \GetWindow
 00420AE6   .  8BF0          MOV ESI,EAX
 00420AE8   .  85F6          TEST ESI,ESI
 00420AEA   .  74 20         JE SHORT GameClie.00420B0C
 00420AEC   .  8B1D FC744F00 MOV EBX,DWORD PTR DS:[<&USER32.GetPropA>>;  USER32.GetPropA
 00420AF2   >  68 E8A15200   PUSH GameClie.0052A1E8                   ;  ASCII "GameClient"
 
 
 
 
 再次运行浩方,大功告成。没有任何提示,可以多开了。最后我们将修改好的内存,dump出来生成EXE文件,取名为GameClient1.exe。
 
 
 好了,关闭所有反汇编调试工具,直接双击GameClient1.exe看能否执行?可以了吧。再双击GameClient1.exe,双开了吧。
 
 
 
 先别高兴太早,为什么?你输入密码后进浩方看看,怎么变1个了?是不是很怪?是的,因为浩方启动后,会调用同一个进程名的窗体,如果你进了第一个,然后再进一个,那么第二个的进程就会覆盖第一个的进程。怎么办?很简单,复制2个EXE,分别执行,让进程名不同就可以了。简单吧?
 
 
 
 
 
 
 版权没有,任意拷贝,拷贝要注上我的名
 全文完。
 天使的风衣制作
 2007年9月15日
 
 [ 本帖最后由 xiaoxue999 于 2007-9-15 14:42 编辑 ]
 |