挂海论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
 友情提示:文字/图片广告均非网站意见,请担保交易勿直接付款,由此产生的责任自负
游戏交易就上寄售网-专注稳定-诚信赢天下玩游戏来117游戏网(H5不下载也能玩手游传奇,吃鸡,竞技都有)天下盾/国内/免实名/免备案CDN无视一切CC/DD攻击 找塔科夫作者TG @wuhao1954 QQ283931494 →入驻S9企业发卡网各种全黑号辅助群:475351077
██【我要租此广告位】██... .
查看: 4289|回复: 3
打印 上一主题 下一主题

[讨论交流] 写点东西,菜鸟也玩保护...

[复制链接]
4中级会员
587/600

587

积分

178

主题

6

听众
已帮网友解决0 个问题
好评
0
贡献
409
海币
3229
交易币
0
跳转到指定楼层
楼主
发表于 2015-2-8 17:20:16 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
提醒:若下载的软件是收费的"请不要付款",可能是骗子,请立即联系本站举报,执意要付款被骗后本站概不负责。(任何交易请走第三方中介,请勿直接付款交易以免被骗!切记).

友情提示:文字/图片广告均非本站意见,请担保交易勿直接付款,由此产生的责任自负!!!↑↑


本帖最后由 JolaSia 于 2015-2-8 17:25 编辑

写点东西,菜鸟也玩保护...
写点杂言,有错误之处也很难避免,希望大家指正...  
说点题外话,很多朋友来经常问,要入门,该怎么做,很惭愧的说,至于网上那些教程,自己也没看过, 不过可以谈谈自己的几年下来的一些经验,可提供大家参考.有人说现在的程序都加强壳,还做 是不是还得去学脱壳?自己对壳没什么了解,不过自己调试过的游戏数量自己也记不清了,基本都是带壳调试,虽然不脱壳,起码加壳还是会的,那因为很现实的原因,必须保护自己的代码,想想现在的动不动就是VM,开句玩笑,那些壳方面的知识好是好,如果业余时间多,纯兴趣研究到可以.不过你得多久才能搞VM呢?等你到了能搞VM了,那不知道有什么M出来了,所以壳方面的东西,在做G方面不是必要的,可以在业余时间去分析研究.  
也有朋友问,是不是先把汇编学的滚瓜乱熟,我觉得那东西必须学,尤其基本的必须掌握,象寄存器,函数调用规则,栈结构..等,尤其掌握好汇编和高级语言之间的关系,很简单的说,你能不能看懂代码,讲的具体点,你能不能针对分析的代码进行模拟或者调用.很多都说开发脱机等.你想想也能知道,假设你发现算法部分,如果你不能模拟,把算法部分扣出来,想做脱机我想很难,毕竟搞密码学的少数.  
又有朋友问,我是不是得学ring 0方面的知识,我感觉适当了解是需要的,如果要深入,感觉不是必要的.现在的工具还是很多,即使工具搞不定,很多还是可以从ring 3 出发解决问题.  

写的有点乱...废话就到这吧.  

言归正转..机器里拿了2个游戏,做一些分析.分析的过程可能有一些跳跃和省去,因为都是以前分析了,拿到1个游戏,一般先确定游戏的主程序,现在很多游戏主程序都有commline,那首先取他的commline,方面我们OD直接启动他,跟踪启动过程.但是一些游戏虽然没有commline,但是依然不能正常启动,例如W美系列的游戏.第1个游戏,就拿W美降龙之剑说说.  

游戏主程序client.exe,直接丢OD里,分析他的启动过程.分析的过程我就省去了,我们知道直接启动client.exe貌似不行的...经过调试发现1个关键函数..  

0040ED40   .  55            push ebp  
0040ED41   .  8BEC          mov ebp,esp  
0040ED43   .  83E4 F8       and esp,FFFFFFF8  
0040ED46   .  6A FF         push -1  
0040ED48   .  68 B6349400   push client.009434B6                     ;  SE 处理程序安装  
0040ED4D   .  64:A1 0000000>mov eax,dword ptr fs:[0]  
0040ED53   .  50            push eax  
0040ED54   .  64:8925 00000>mov dword ptr fs:[0],esp  
0040ED5B   .  81EC 74060000 sub esp,674  
0040ED61   .  53            push ebx  
0040ED62   .  55            push ebp  
0040ED63   .  8B2D 84529900 mov ebp,dword ptr ds:[<&KERNEL32.GetCurr>;  kernel32.GetCurrentDirectoryA  
0040ED69   .  56            push esi  
0040ED6A   .  57            push edi  
0040ED6B   .  8BF1          mov esi,ecx  
0040ED6D   .  33C0          xor eax,eax  
0040ED6F   .  33DB          xor ebx,ebx  
0040ED71   .  889C24 E00100>mov byte ptr ss:[esp+1E0],bl  
0040ED78   .  B9 3F000000   mov ecx,3F  
0040ED7D   .  8DBC24 E10100>lea edi,dword ptr ss:[esp+1E1]  
0040ED84   .  F3:AB         rep stos dword ptr es:[edi]  
0040ED86   .  66:AB         stos word ptr es:[edi]  
0040ED88   .  8D8424 E00100>lea eax,dword ptr ss:[esp+1E0]  
0040ED8F   .  50            push eax                                 ; /Buffer  
0040ED90   .  68 FF000000   push 0FF                                 ; |BufSize = FF (255.)  
0040ED95   .  FFD5          call ebp                                 ; \GetCurrentDirectoryA  
0040ED97   .  8DBC24 E00100>lea edi,dword ptr ss:[esp+1E0]  
0040ED9E   .  4F            dec edi  
0040ED9F   .  90            nop  
0040EDA0   >  8A47 01       mov al,byte ptr ds:[edi+1]  
0040EDA3   .  47            inc edi  
0040EDA4   .  3AC3          cmp al,bl  
0040EDA6   .^ 75 F8         jnz short client.0040EDA0  
0040EDA8   .  66:8B0D 6C639>mov cx,word ptr ds:[99636C]  
0040EDAF   .  66:890F       mov word ptr ds:[edi],cx  
0040EDB2   .  8DBC24 E00100>lea edi,dword ptr ss:[esp+1E0]  
0040EDB9   .  4F            dec edi  
0040EDBA   .  8D9B 00000000 lea ebx,dword ptr ds:[ebx]  
0040EDC0   >  8A47 01       mov al,byte ptr ds:[edi+1]  
0040EDC3   .  47            inc edi  
0040EDC4   .  3AC3          cmp al,bl  
0040EDC6   .^ 75 F8         jnz short client.0040EDC0  
0040EDC8   .  8B15 58639900 mov edx,dword ptr ds:[996358]  
0040EDCE   .  A1 5C639900   mov eax,dword ptr ds:[99635C]  
0040EDD3   .  8B0D 60639900 mov ecx,dword ptr ds:[996360]  
0040EDD9   .  8917          mov dword ptr ds:[edi],edx  
0040EDDB   .  8B15 64639900 mov edx,dword ptr ds:[996364]  
0040EDE1   .  8947 04       mov dword ptr ds:[edi+4],eax  
0040EDE4   .  A0 68639900   mov al,byte ptr ds:[996368]  
0040EDE9   .  894F 08       mov dword ptr ds:[edi+8],ecx  
0040EDEC   .  8957 0C       mov dword ptr ds:[edi+C],edx  
0040EDEF   .  8D4C24 1B     lea ecx,dword ptr ss:[esp+1B]  
0040EDF3   .  8847 10       mov byte ptr ds:[edi+10],al  
0040EDF6   .  E8 75F44500   call client.0086E270  
0040EDFB   .  6A 01         push 1  
0040EDFD   .  68 4C639900   push client.0099634C                     ;  ASCII "client.exe"  
0040EE02   .  8D4C24 23     lea ecx,dword ptr ss:[esp+23]  
0040EE06   .  899C24 940600>mov dword ptr ss:[esp+694],ebx  
0040EE0D   .  E8 5EB9FFFF   call client.0040A770  
0040EE12   .  6A 01         push 1  
0040EE14   .  68 3C639900   push client.0099633C                     ;  ASCII "client_r.exe"  
0040EE19   .  8D4C24 23     lea ecx,dword ptr ss:[esp+23]  
0040EE1D   .  8BF8          mov edi,eax  
0040EE1F   .  E8 4CB9FFFF   call client.0040A770  
0040EE24   .  33C9          xor ecx,ecx  
0040EE26   .  03F8          add edi,eax  
0040EE28   .  83FF 01       cmp edi,1  
0040EE2B   .  0F9EC1        setle cl  
0040EE2E   .  898E 88000000 mov dword ptr ds:[esi+88],ecx  
0040EE34   .  8B15 1856A600 mov edx,dword ptr ds:[A65618]  
0040EE3A   .  52            push edx  
0040EE3B   .  E8 60960500   call client.004684A0  
0040EE40   .  A1 785AA600   mov eax,dword ptr ds:[A65A78]  
0040EE45   .  83C4 04       add esp,4  
0040EE48   .  83F8 10       cmp eax,10  
0040EE4B   .  A1 645AA600   mov eax,dword ptr ds:[A65A64]  
0040EE50   .  73 05         jnb short client.0040EE57  
0040EE52   .  B8 645AA600   mov eax,client.00A65A64  
0040EE57   >  50            push eax  
0040EE58   .  8D8424 640100>lea eax,dword ptr ss:[esp+164]  
0040EE5F   .  68 78669900   push client.00996678                     ;  ASCII "%s"  
0040EE64   .  50            push eax  
0040EE65   .  E8 B4BE4F00   call client.0090AD1E  
0040EE6A   .  8B0D 64669900 mov ecx,dword ptr ds:[996664]  
0040EE70   .  8B15 68669900 mov edx,dword ptr ds:[996668]  
0040EE76   .  A1 6C669900   mov eax,dword ptr ds:[99666C]  
0040EE7B   .  83C4 0C       add esp,0C  
0040EE7E   .  894C24 30     mov dword ptr ss:[esp+30],ecx  
0040EE82   .  8B0D 70669900 mov ecx,dword ptr ds:[996670]  
0040EE88   .  895424 34     mov dword ptr ss:[esp+34],edx  
0040EE8C   .  66:8B15 74669>mov dx,word ptr ds:[996674]  
0040EE93   .  6A 02         push 2                                   ; /Priority = THREAD_PRIORITY_HIGHEST  
0040EE95   .  894424 3C     mov dword ptr ss:[esp+3C],eax            ; |  
0040EE99   .  894C24 40     mov dword ptr ss:[esp+40],ecx            ; |  
0040EE9D   .  66:895424 44  mov word ptr ss:[esp+44],dx              ; |  
0040EEA2   .  FF15 AC509900 call dword ptr ds:[<&KERNEL32.GetCurrent>; |[GetCurrentThread  
0040EEA8   .  50            push eax                                 ; |hThread  
0040EEA9   .  FF15 A8509900 call dword ptr ds:[<&KERNEL32.SetThreadP>; \SetThreadPriority  
0040EEAF   .  6A 60         push 60  
0040EEB1   .  E8 9A544300   call client.00844350  
0040EEB6   .  83C4 04       add esp,4  
0040EEB9   .  894424 14     mov dword ptr ss:[esp+14],eax  
0040EEBD   .  3BC3          cmp eax,ebx  
0040EEBF   .  C68424 8C0600>mov byte ptr ss:[esp+68C],1  
0040EEC7   .  74 0B         je short client.0040EED4  
0040EEC9   .  8BC8          mov ecx,eax  
0040EECB   .  E8 20D42F00   call client.0070C2F0  
0040EED0   .  8BF8          mov edi,eax  
0040EED2   .  EB 02         jmp short client.0040EED6  
0040EED4   >  33FF          xor edi,edi  
0040EED6   >  3BFB          cmp edi,ebx  
0040EED8   .  889C24 8C0600>mov byte ptr ss:[esp+68C],bl  
0040EEDF   .  74 07         je short client.0040EEE8  
0040EEE1   .  8B07          mov eax,dword ptr ds:[edi]  
0040EEE3   .  8BXF          mov ecx,edi  
0040EEE5   .  FF50 04       call dword ptr ds:[eax+4]  
0040EEE8   >  8B8E A8000000 mov ecx,dword ptr ds:[esi+A8]  
0040EEEE   .  3BCB          cmp ecx,ebx  
0040EEF0   .  74 05         je short client.0040EEF7  
0040EEF2   .  8B11          mov edx,dword ptr ds:[ecx]  
0040EEF4   .  FF52 08       call dword ptr ds:[edx+8]  
0040EEF7   >  89BE A8000000 mov dword ptr ds:[esi+A8],edi  
0040EEFD   .  E8 8E3E0000   call client.00412D90  
0040EF02   .  68 48669900   push client.00996648                     ; /Title = "<<W美-降龙之剑>>自动更新"  
0040EF07   .  53            push ebx                                 ; |Class  
0040EF08   .  FF15 D4539900 call dword ptr ds:[<&USER32.FindWindowA>>; \FindWindowA  
0040EF0E   .  894424 14     mov dword ptr ss:[esp+14],eax  
0040EF12   .  33C0          xor eax,eax  
0040EF14   .  885C24 60     mov byte ptr ss:[esp+60],bl  
0040EF18   .  B9 3F000000   mov ecx,3F  
0040EF1D   .  8D7C24 61     lea edi,dword ptr ss:[esp+61]  
0040EF21   .  F3:AB         rep stos dword ptr es:[edi]  
0040EF23   .  66:AB         stos word ptr es:[edi]  
0040EF25   .  8D4424 60     lea eax,dword ptr ss:[esp+60]  
0040EF29   .  50            push eax  
0040EF2A   .  68 FF000000   push 0FF  
0040EF2F   .  FFD5          call ebp  
0040EF31   .  8D7C24 60     lea edi,dword ptr ss:[esp+60]  
0040EF35   .  4F            dec edi  
0040EF36   >  8A47 01       mov al,byte ptr ds:[edi+1]  
0040EF39   .  47            inc edi  
0040EF3A   .  3AC3          cmp al,bl  
0040EF3C   .^ 75 F8         jnz short client.0040EF36  
0040EF3E   .  8B0D 44669900 mov ecx,dword ptr ds:[996644]            ;  client.0050505C  
0040EF44   .  8D4424 60     lea eax,dword ptr ss:[esp+60]  
0040EF48   .  890F          mov dword ptr ds:[edi],ecx  
0040EF4A   .  C74424 5C 0F0>mov dword ptr ss:[esp+5C],0F  
0040EF52   .  895C24 58     mov dword ptr ss:[esp+58],ebx  
0040EF56   .  885C24 48     mov byte ptr ss:[esp+48],bl  
0040EF5A   .  8D50 01       lea edx,dword ptr ds:[eax+1]  
0040EF5D   .  8D49 00       lea ecx,dword ptr ds:[ecx]  
0040EF60   >  8A08          mov cl,byte ptr ds:[eax]  
0040EF62   .  40            inc eax  
0040EF63   .  3ACB          cmp cl,bl  
0040EF65   .^ 75 F9         jnz short client.0040EF60  
0040EF67   .  2BC2          sub eax,edx  
0040EF69   .  50            push eax  
0040EF6A   .  8D5424 64     lea edx,dword ptr ss:[esp+64]  
0040EF6E   .  52            push edx  
0040EF6F   .  8D4C24 4C     lea ecx,dword ptr ss:[esp+4C]  
0040EF73   .  E8 382XFFFF   call client.00401BB0  
0040EF78   .  8D4424 44     lea eax,dword ptr ss:[esp+44]  
0040EF7C   .  50            push eax  
0040EF7D   .  C68424 900600>mov byte ptr ss:[esp+690],2  
0040EF85   .  E8 A6134300   call client.00840330  
0040EF8A   .  8B4C24 60     mov ecx,dword ptr ss:[esp+60]  
0040EF8E   .  83C4 04       add esp,4  
0040EF91   .  F7D8          neg eax  
0040EF93   .  1AC0          sbb al,al  
0040EF95   .  FEC0          inc al  
0040EF97   .  83F9 10       cmp ecx,10  
0040EF9A   .  884424 1F     mov byte ptr ss:[esp+1F],al  
0040EF9E   .  889C24 8C0600>mov byte ptr ss:[esp+68C],bl  
0040EFA5      72 11         jb short client.0040EFB8  
0040EFA7   .  8B4C24 48     mov ecx,dword ptr ss:[esp+48]  
0040EFAB   .  51            push ecx  
0040EFAC   .  E8 30B64F00   call client.0090A5E1  
0040EFB1   .  8A4424 23     mov al,byte ptr ss:[esp+23]  
0040EFB5   .  83C4 04       add esp,4  
0040EFB8   >  3AC3          cmp al,bl  
0040EFBA   .  74 0D         je short client.0040EFC9  
0040EFBC   .  8D5424 60     lea edx,dword ptr ss:[esp+60]  
0040EFC0   .  52            push edx  
0040EFC1   .  E8 AEFD4F00   call client.0090ED74  
0040EFC6   .  83C4 04       add esp,4  
0040EFC9      8D7C24 60     lea edi,dword ptr ss:[esp+60]  
0040EFCD      4F            dec edi  
0040EFCE   .  8BFF          mov edi,edi  
0040EFD0   >  8A47 01       mov al,byte ptr ds:[edi+1]  
0040EFD3   .  47            inc edi  
0040EFD4   .  3AC3          cmp al,bl  
0040EFD6   .^ 75 F8         jnz short client.0040EFD0  
0040EFD8   .  66:A1 6C63990>mov ax,word ptr ds:[99636C]  
0040EFDE   .  66:8907       mov word ptr ds:[edi],ax  
0040EFE1   .  68 D4AF84XF   push XF84AFD4  
0040EFE6   .  E8 7981FFFF   call client.00407164  
0040EFEB   $  FF3424        push dword ptr ss:[esp]  
0040EFEE   .  894C24 28     mov dword ptr ss:[esp+28],ecx  
0040EFF2   .  66:0FB6E8     movzx bp,al  
0040EFF6   .  66:0FCE       bswap si  
0040EFF9   .  5E            pop esi  
0040EFFA   .  9C            pushfd  
0040EFFB   .  8F4424 20     pop dword ptr ss:[esp+20]  
0040EFFF   .  D3ED          shr ebp,cl  
0040F001   .  66:0FBDE9     bsr bp,cx  
0040F005   .  66:0FCD       bswap bp  
0040F008   .  66:0FB3C5     btr bp,ax  
0040F00C   .  894424 1C     mov dword ptr ss:[esp+1C],eax  
0040F010   .  66:D3E6       shl si,cl  
0040F013   .  0FACDE 0F     shrd esi,ebx,0F  
0040F017   .  66:09F5       or bp,si  
0040F01A   .  895424 18     mov dword ptr ss:[esp+18],edx  
0040F01E   .  E9 A9C30000   jmp client.0041B3CC  
0040F023   .  FECA          dec dl  
0040F025   .  30C8          xor al,cl  
0040F027   .  8B55 00       mov edx,dword ptr ss:[ebp]  
0040F02A   .  C0F0 06       sal al,6  
0040F02D   .  F5            cmc  
0040F02E   .  F5            cmc  
0040F02F   .  24 57         and al,57  
0040F031   .  83C5 02       add ebp,2  
0040F034   .  E8 CD83FFFF   call client.00407406  
0040F039   $  E9 BD900000   jmp client.004180FB  
0040F03E   >  F6D2          not dl  
0040F040   .  F5            cmc  
0040F041   .  66:894C24 08  mov word ptr ss:[esp+8],cx  
0040F046   .  83ED 02       sub ebp,2  
0040F049   .  E8 46910000   call client.00418194  
0040F04E   >  9C            pushfd  
0040F04F   .  D2E0          shl al,cl  
0040F051   .  53            push ebx  
0040F052      66:8945 04    mov word ptr ss:[ebp+4],ax  
0040F056      883424        mov byte ptr ss:[esp],dh  
0040F059      E9 AEB80000   jmp client.0041A90C  
0040F05E      894C24 24     mov dword ptr ss:[esp+24],ecx  
0040F062      66:87F5       xchg bp,si  
0040F065      55            push ebp  
0040F066      E9 E7B20000   jmp client.0041A352  
0040F06B      86E0          xchg al,ah  
0040F06D      880424        mov byte ptr ss:[esp],al  
0040F070      F6C6 E0       test dh,0E0  
0040F073      53            push ebx  
0040F074      66:29C3       sub bx,ax  
0040F077      F5            cmc  
0040F078      68 74D6F477   push 77F4D674                            ;  ASCII "QuoteRDNValue"  
0040F07D      80FD 4C       cmp ch,4C  
0040F080    ^ E9 55B0FFFF   jmp client.0040A0DA  
0040F085      E8 93AE0000   call client.00419F1D  
0040F08A      12E8          adc ch,al  
0040F08C      40            inc eax  
0040F08D      36:43         inc ebx  
0040F08F      008B 08682C66 add byte ptr ds:[ebx+662C6808],cl  
0040F095      99            cdq  
0040F096      0050 FF       add byte ptr ds:[eax-1],dl  
0040F099      51            push ecx  
0040F09A      108B 2DA05099 adc byte ptr ds:[ebx+9950A02D],cl  
0040F0A0      0083 C4086800 add byte ptr ds:[ebx+6808C4],al  
0040F0A6      4E            dec esi  
0040F0A7      A6            cmps byte ptr ds:[esi],byte ptr es:[edi]  
0040F0A8      0053 6A       add byte ptr ds:[ebx+6A],dl  
0040F0AB      02FF          add bh,bh  
0040F0AD      D5 8B         aad 8B  
0040F0AF      F8            clc  
0040F0B0      3BFB          cmp edi,ebx  
0040F0B2      74 0E         je short client.0040F0C2  
0040F0B4   .  57            push edi                                 ; /hEvent  
0040F0B5   .  FF15 9C509900 call dword ptr ds:[<&KERNEL32.SetEvent>] ; \SetEvent  
0040F0BB   .  57            push edi                                 ; /hObject  
0040F0BC   .  FF15 34529900 call dword ptr ds:[<&KERNEL32.CloseHandl>; \CloseHandle  
0040F0C2   >  68 1C669900   push client.0099661C                     ;  ASCII "PPStartEvent"  
0040F0C7   .  53            push ebx  
0040F0C8   .  6A 02         push 2  
0040F0CA   .  FFD5          call ebp  
0040F0CC   .  8BF8          mov edi,eax  
0040F0CE   .  3BFB          cmp edi,ebx  
0040F0D0   .  74 0E         je short client.0040F0E0  
0040F0D2   .  57            push edi                                 ; /hEvent  
0040F0D3   .  FF15 9C509900 call dword ptr ds:[<&KERNEL32.SetEvent>] ; \SetEvent  
0040F0D9   .  57            push edi                                 ; /hObject  
0040F0DA   .  FF15 34529900 call dword ptr ds:[<&KERNEL32.CloseHandl>; \CloseHandle  
0040F0E0   >  6A 04         push 4  
0040F0E2   .  889E 90000000 mov byte ptr ds:[esi+90],bl  
0040F0E8   .  E8 AE984E00   call client.008F899B  
0040F0ED   .  83C4 04       add esp,4  
0040F0F0   .  894424 14     mov dword ptr ss:[esp+14],eax  
0040F0F4   .  3BC3          cmp eax,ebx  
0040F0F6   .  C68424 8C0600>mov byte ptr ss:[esp+68C],3  
0040F0FE   .  74 09         je short client.0040F109  
0040F100   .  8BC8          mov ecx,eax  
0040F102   .  E8 59690000   call client.00415A60  
0040F107   .  EB 02         jmp short client.0040F10B  
0040F109   >  33C0          xor eax,eax  
0040F10B   >  889C24 8C0600>mov byte ptr ss:[esp+68C],bl  
0040F112   .  8946 08       mov dword ptr ds:[esi+8],eax  
0040F115   .  E8 36F00400   call client.0045E150  
0040F11A   .  50            push eax  
0040F11B   .  E8 D0EF0400   call client.0045E0F0  
0040F120   .  8B4E 08       mov ecx,dword ptr ds:[esi+8]  
0040F123   .  50            push eax  
0040F124   .  8D9424 680100>lea edx,dword ptr ss:[esp+168]  
0040F12B   .  52            push edx  
0040F12C   .  8D4424 3C     lea eax,dword ptr ss:[esp+3C]  
0040F130   .  50            push eax  
0040F131   .  E8 3A8A0000   call client.00417B70  
0040F136   .  85C0          test eax,eax  
0040F138   .  75 0E         jnz short client.0040F148  
0040F13A   .  6A 30         push 30  
0040F13C   .  53            push ebx  
0040F13D   .  68 08669900   push client.00996608  
0040F142   .  53            push ebx  
0040F143   .  E9 CE000000   jmp client.0040F216  
0040F148   >  E8 83354300   call client.008426D0  
0040F14D   .  8B08          mov ecx,dword ptr ds:[eax]  
0040F14F   .  68 F0659900   push client.009965F0                     ;  ASCII "Create Window Sucess"  
0040F154   .  50            push eax  
0040F155   .  FF51 10       call dword ptr ds:[ecx+10]  
0040F158   .  6A 04         push 4  
0040F15A   .  E8 3C984E00   call client.008F899B  
0040F15F   .  8BF8          mov edi,eax  
0040F161   .  83C4 0C       add esp,0C  
0040F164   .  3BFB          cmp edi,ebx  
0040F166   .  74 11         je short client.0040F179  
0040F168   .  8D5424 30     lea edx,dword ptr ss:[esp+30]  
0040F16C   .  52            push edx                                 ; /MutexName  
0040F16D   .  53            push ebx                                 ; |InitialOwner  
0040F16E   .  53            push ebx                                 ; |pSecurity  
0040F16F   .  FF15 64519900 call dword ptr ds:[<&KERNEL32.CreateMute>; \CreateMutexA  
0040F175   .  8907          mov dword ptr ds:[edi],eax  
0040F177   .  EB 02         jmp short client.0040F17B  
0040F179   >  33FF          xor edi,edi  
0040F17B   >  8B46 08       mov eax,dword ptr ds:[esi+8]  
0040F17E   .  89BE 9C010000 mov dword ptr ds:[esi+19C],edi  
0040F184   .  8B08          mov ecx,dword ptr ds:[eax]  
0040F186   .  6A 05         push 5                                   ; /ShowState = SW_SHOW  
0040F188   .  51            push ecx                                 ; |hWnd  
0040F189   .  FF15 CC539900 call dword ptr ds:[<&USER32.ShowWindow>] ; \ShowWindow  
0040F18F   .  8B56 08       mov edx,dword ptr ds:[esi+8]  
0040F192   .  8B02          mov eax,dword ptr ds:[edx]  
0040F194   .  50            push eax                                 ; /hWnd  
0040F195   .  FF15 C8539900 call dword ptr ds:[<&USER32.UpdateWindow>; \UpdateWindow  
0040F19B   .  8D8E 40010000 lea ecx,dword ptr ds:[esi+140]  
0040F1A1   .  51            push ecx                                 ; /pRect  
0040F1A2   .  FF15 C4539900 call dword ptr ds:[<&USER32.GetClipCurso>; \GetClipCursor  
0040F1A8   .  8D9424 E00300>lea edx,dword ptr ss:[esp+3E0]  
0040F1AF   .  52            push edx                                 ; /Buffer  
0040F1B0   .  68 FF000000   push 0FF                                 ; |BufSize = FF (255.)  
0040F1B5   .  FF15 84529900 call dword ptr ds:[<&KERNEL32.GetCurrent>; \GetCurrentDirectoryA  
0040F1BB   .  8D8424 E00300>lea eax,dword ptr ss:[esp+3E0]  
0040F1C2   .  50            push eax  
0040F1C3   .  8D8C24 840500>lea ecx,dword ptr ss:[esp+584]  
0040F1CA   .  68 E0659900   push client.009965E0                     ;  ASCII "%s\system.ini"  
0040F1XF   .  51            push ecx  
0040F1D0   .  E8 49BB4F00   call client.0090AD1E  
0040F1D5   .  A1 60FFA600   mov eax,dword ptr ds:[A6FF60]  
0040F1DA   .  83C4 0C       add esp,0C  
0040F1DD   .  3BC3          cmp eax,ebx  
0040F1DF   .  0F85 30010000 jnz client.0040F315  
0040F1E5   .  E8 D62E4300   call client.008420C0  
0040F1EA   .  8B56 08       mov edx,dword ptr ds:[esi+8]  
0040F1ED   .  8B02          mov eax,dword ptr ds:[edx]  
0040F1EF   .  6A 01         push 1  
0040F1F1   .  53            push ebx  
0040F1F2   .  50            push eax  
0040F1F3   .  E8 582F4300   call client.00842150  
0040F1F8   .  83C4 0C       add esp,0C  
0040F1FB   .  3BC3          cmp eax,ebx  
0040F1FD   .  A3 60FFA600   mov dword ptr ds:[A6FF60],eax  
0040F202   .  75 44         jnz short client.0040F248  
0040F204   .  8B4E 08       mov ecx,dword ptr ds:[esi+8]  
0040F207   .  8B11          mov edx,dword ptr ds:[ecx]  
0040F209   .  6A 10         push 10                                  ; /Style = MB_OK|MB_ICONHAND|MB_APPLMODAL  
0040F20B   .  68 D0659900   push client.009965D0                     ; |Title = "DirectX3D异常"  
0040F210   .  68 70659900   push client.00996570                     ; |Text = "未发现DirectX3D设备,请确认未禁用3D加速功能且测试Direct 3D通过, 或更新最新的显卡驱动后再尝试游戏"  
0040F215   .  52            push edx                                 ; |hOwner  
0040F216   >  FF15 8C539900 call dword ptr ds:[<&USER32.MessageBoxA>>; \MessageBoxA  
0040F21C   .  8D4C24 1B     lea ecx,dword ptr ss:[esp+1B]  
0040F220   .  C78424 8C0600>mov dword ptr ss:[esp+68C],-1  
0040F22B   .  E8 D01DFFFF   call client.00401000  
0040F230   .  33C0          xor eax,eax  
0040F232   .  8B8C24 840600>mov ecx,dword ptr ss:[esp+684]  
0040F239   .  64:890D 00000>mov dword ptr fs:[0],ecx  
0040F240   .  5F            pop edi  
0040F241   .  5E            pop esi  
0040F242   .  5D            pop ebp  
0040F243   .  5B            pop ebx  
0040F244   .  8BE5          mov esp,ebp  
0040F246   .  5D            pop ebp  
0040F247   .  C3            retn  

经过分析, 发现1个关键判断,主要 判断是不是登陆器启动  

0040EFA5     /72 11         jb short client.0040EFB8  

下面的信息可以看到和启动保护有关,那我们能不能跳过呢?  

由于VM的关系, 那OD 分析出来的代码可能有点问题..  

看看正常的代码。。。  

0040F08B      E8 40364300   call client.008426D0  
0040F090      8B08          mov ecx,dword ptr ds:[eax]  
0040F092      68 2C669900   push client.0099662C                     ;  ASCII "PP Sucess"  
0040F097      50            push eax  
0040F098      FF51 10       call dword ptr ds:[ecx+10]  
0040F09B      8B2D A0509900 mov ebp,dword ptr ds:[<&KERNEL32.OpenEve>;  kernel32.OpenEventA  
0040F0A1      83C4 08       add esp,8  
0040F0A4      68 004EA600   push client.00A64E00                     ;  ASCII "PP_XLZJ_EventA"  
0040F0A9      53            push ebx  
0040F0AA      6A 02         push 2  
0040F0AC      FFD5          call ebp  
0040F0AE      8BF8          mov edi,eax  
0040F0B0      3BFB          cmp edi,ebx  
0040F0B2      74 0E         je short client.0040F0C2  
0040F0B4   .  57            push edi                                 ; /hEvent  
0040F0B5   .  FF15 9C509900 call dword ptr ds:[<&KERNEL32.SetEvent>] ; \SetEvent  
0040F0BB   .  57            push edi                                 ; /hObject  
0040F0BC   .  FF15 34529900 call dword ptr ds:[<&KERNEL32.CloseHandl>; \CloseHandle  
0040F0C2   >  68 1C669900   push client.0099661C                     ;  ASCII "PPStartEvent"  
0040F0C7   .  53            push ebx  
0040F0C8   .  6A 02         push 2  
0040F0CA   .  FFD5          call ebp  
0040F0CC   .  8BF8          mov edi,eax  
0040F0CE   .  3BFB          cmp edi,ebx  
0040F0D0   .  74 0E         je short client.0040F0E0  
0040F0D2   .  57            push edi                                 ; /hEvent  
0040F0D3   .  FF15 9C509900 call dword ptr ds:[<&KERNEL32.SetEvent>] ; \SetEvent  
0040F0D9   .  57            push edi                                 ; /hObject  
0040F0DA   .  FF15 34529900 call dword ptr ds:[<&KERNEL32.CloseHandl>; \CloseHandle  
0040F0E0   >  6A 04         push 4  
0040F0E2   .  889E 90000000 mov byte ptr ds:[esi+90],bl  
0040F0E8   .  E8 AE984E00   call client.008F899B  
0040F0ED   .  83C4 04       add esp,4  
0040F0F0   .  894424 14     mov dword ptr ss:[esp+14],eax  
0040F0F4   .  3BC3          cmp eax,ebx  
0040F0F6   .  C68424 8C0600>mov byte ptr ss:[esp+68C],3  
0040F0FE   .  74 09         je short client.0040F109  


那我们找1个位置 给他JMP过来....  

这样游戏可以正常跑起来了.  


游戏跑起来后,发现大概2分钟左右,游戏即退出,那说明客户端还有校验....  

那要稳定一些调试,那肯定需要解决这个问题...  

经过分析..  

游戏出错是由于异常导致的...其中必须经过1个函数  

0090A6A9  /> /55            push ebp  
0090A6AA  |. |8BEC          mov ebp,esp  
0090A6AC  |. |83EC 04       sub esp,4  
0090A6AF  |. |53            push ebx  
0090A6B0  |. |56            push esi  
0090A6B1  |. |57            push edi  
0090A6B2  |. |FC            cld  
0090A6B3  |. |8945 FC       mov [local.1],eax  
0090A6B6  |. |33C0          xor eax,eax  
0090A6B8  |. |50            push eax  
0090A6B9  |. |50            push eax  
0090A6BA  |. |50            push eax  
0090A6BB  |. |FF75 FC       push [local.1]  
0090A6BE  |. |FF75 14       push [arg.4]  
0090A6C1  |. |FF75 10       push [arg.3]  
0090A6C4  |. |FF75 0C       push [arg.2]  
0090A6C7  |. |FF75 08       push [arg.1]  
0090A6CA  |. |E8 04720000   call client.009118D3  
0090A6XF  |. |83C4 20       add esp,20  
0090A6D2  |. |8945 FC       mov [local.1],eax  
0090A6D5  |. |5F            pop edi  
0090A6D6  |. |5E            pop esi  
0090A6D7  |. |5B            pop ebx  
0090A6D8  |. |8B45 FC       mov eax,[local.1]  
0090A6DB  |. |8BE5          mov esp,ebp  
0090A6DD  |. |5D            pop ebp  
0090A6DE  \. |C3            retn  

发现调用的地方..  

0094354C   $  B8 A403A000   mov eax,client.00A003A4                  ;  结构异常处理程序  
00943551   .^ E9 5371FXFF   jmp client.0090A6A9  
00943556      CC            int3  

下断...  


我们在堆栈里翻翻...  


.....  


0012F834  |7C92E48A  返回到 ntdll.KiUserApcDispatcher+3A 来自 ntdll.7C94A970  
0012F838  |00000000  
0012F83C  |0012F864  
0012F840  |0012F848  
0012F844  |0012F864  
0012F848  |C0000005  
0012F84C  |00000000  
0012F850  |00000000  
0012F854  |00AC94CD  client.00AC94CD  


C0000005 这样的异常 我就不解释了,  


client.00AC94CD 是什么 我们进去看看...  

00AC94CD      CD 22         int 22  

原来00AC94CD 是int22,执行到这后触发异常,程序无法处理.所以退出了.那把 00AC94CD  nop掉2个字节即可...  

这下客户端他老实了...正常调试.   
现在NP,HS,XTrap的保护越来越多,国内还有TP,GPK 之流,越来越多, 面对这些保护,如果你无法从ring 0上对抗,那是不是真的一点办法都没有呢?  

我简单介绍下我处理国外某XTrap保护下的游戏.  

首先用OD 启动他的主程序...  

发现关键CALL  
005F4EF0  /$  81EC 44070000          sub esp,744  
005F4EF6  |.  53                     push ebx  
005F4EF7  |.  56                     push esi  
005F4EF8  |.  57                     push edi  
005F4EF9  |.  33DB                   xor ebx,ebx  
005F4EFB  |.  B9 4A000000            mov ecx,4A  
005F4F00  |.  33C0                   xor eax,eax  
005F4F02  |.  8DBC24 29020000        lea edi,dword ptr ss:[esp+229]  
005F4F09  |.  889C24 28020000        mov byte ptr ss:[esp+228],bl  
005F4F10  |.  F3:AB                  rep stos dword ptr es:[edi]  
005F4F12  |.  66:AB                  stos word ptr es:[edi]  
005F4F14  |.  AA                     stos byte ptr es:[edi]  
005F4F15  |.  B9 40000000            mov ecx,40  
005F4F1A  |.  33C0                   xor eax,eax  
005F4F1C  |.  8DBC24 59040000        lea edi,dword ptr ss:[esp+459]  
005F4F23  |.  889C24 58040000        mov byte ptr ss:[esp+458],bl  
005F4F2A  |.  F3:AB                  rep stos dword ptr es:[edi]  
005F4F2C  |.  66:AB                  stos word ptr es:[edi]  
005F4F2E  |.  AA                     stos byte ptr es:[edi]  
005F4F2F  |.  B9 40000000            mov ecx,40  
005F4F34  |.  33C0                   xor eax,eax  
005F4F36  |.  8DBC24 25010000        lea edi,dword ptr ss:[esp+125]  
005F4F3D  |.  889C24 24010000        mov byte ptr ss:[esp+124],bl  
005F4F44  |.  F3:AB                  rep stos dword ptr es:[edi]  
005F4F46  |.  66:AB                  stos word ptr es:[edi]  
005F4F48  |.  AA                     stos byte ptr es:[edi]  
005F4F49  |.  B9 40000000            mov ecx,40  
005F4F4E  |.  33C0                   xor eax,eax  
005F4F50  |.  8DBC24 55030000        lea edi,dword ptr ss:[esp+355]  
005F4F57  |.  889C24 54030000        mov byte ptr ss:[esp+354],bl  
005F4F5E  |.  F3:AB                  rep stos dword ptr es:[edi]  
005F4F60  |.  66:AB                  stos word ptr es:[edi]  
005F4F62  |.  AA                     stos byte ptr es:[edi]  
005F4F63  |.  E8 78060000            call Fiesta.005F55E0  
005F4F68  |.  8BB424 54070000        mov esi,dword ptr ss:[esp+754]  
005F4F6F  |.  56                     push esi  
005F4F70  |.  68 209F8300            push Fiesta.00839F20                     ;  ASCII "%s"  
005F4F75  |.  68 F2C89000            push Fiesta.0090C8F2  
005F4F7A  |.  E8 C8F31700            call Fiesta.00774347  
005F4F7F  |.  83C4 0C                add esp,0C  
005F4F82  |.  81C6 80000000          add esi,80  
005F4F88  |.  56                     push esi  
005F4F89  |.  68 209F8300            push Fiesta.00839F20                     ;  ASCII "%s"  
005F4F8E  |.  68 E0C69000            push Fiesta.0090C6E0  
005F4F93  |.  E8 AFF31700            call Fiesta.00774347  
005F4F98  |.  83C4 0C                add esp,0C  
005F4F9B  |.  C705 D8C59000 410000D5 mov dword ptr ds:[90C5D8],D5000041  
005F4FA5  |.  C705 D4C59000 000000E5 mov dword ptr ds:[90C5D4],E5000000  
005F4FAF  |.  68 A89D8300            push Fiesta.00839DA8                     ;  ASCII "211.115.86.66"  
005F4FB4  |.  68 209F8300            push Fiesta.00839F20                     ;  ASCII "%s"  
005F4FB9  |.  68 ECC79000            push Fiesta.0090C7EC  
005F4FBE  |.  E8 84F31700            call Fiesta.00774347  
005F4FC3  |.  8BB424 64070000        mov esi,dword ptr ss:[esp+764]  
005F4FCA  |.  83C4 0C                add esp,0C  
005F4FCD  |.  66:C705 F0C89000 7809  mov word ptr ds:[90C8F0],978  
005F4FD6  |.  56                     push esi                                 ; /String  
005F4FD7  |.  FF15 90F17B00          call dword ptr ds:[<&KERNEL32.lstrlenA>] ; \lstrlenA  
005F4FDD  |.  85C0                   test eax,eax  
005F4FDF  |.  75 74                  jnz short Fiesta.005F5055  
005F4FE1  |.  8D8424 54030000        lea eax,dword ptr ss:[esp+354]  
005F4FE8  |.  68 04010000            push 104                                 ; /BufSize = 104 (260.)  
005F4FED  |.  50                     push eax                                 ; |PathBuffer  
005F4FEE  |.  53                     push ebx                                 ; |hModule  
005F4FEF  |.  FF15 CXF17B00          call dword ptr ds:[<&KERNEL32.GetModuleF>; \GetModuleFileNameA  
005F4FF5  |.  85C0                   test eax,eax  
005F4FF7  |.  75 2D                  jnz short Fiesta.005F5026  
005F4FF9  |.  FF15 9XF07B00          call dword ptr ds:[<&KERNEL32.GetLastErr>; [GetLastError  
005F4FFF  |.  6A 01                  push 1  
005F5001  |.  50                     push eax  
005F5002  |.  6A 11                  push 11  
005F5004  |.  68 50CC9000            push Fiesta.0090CC50  
005F5009  |.  E8 E2400000            call Fiesta.005F90F0  
005F500E  |.  83C4 10                add esp,10  
005F5011  |.  891D 44C49000          mov dword ptr ds:[90C444],ebx  
005F5017  |.  E8 C42A0000            call Fiesta.005F7AE0  
005F501C  |.  5F                     pop edi  
005F501D  |.  5E                     pop esi  
005F501E  |.  5B                     pop ebx  
005F501F  |.  81C4 44070000          add esp,744  
005F5025  |.  C3                     retn  
005F5026  |>  8D8C24 58040000        lea ecx,dword ptr ss:[esp+458]  
005F502D  |.  8D9424 54030000        lea edx,dword ptr ss:[esp+354]  
005F5034  |.  51                     push ecx  
005F5035  |.  52                     push edx  
005F5036  |.  E8 85360000            call Fiesta.005F86C0  
005F503B  |.  83C4 08                add esp,8  
005F503E  |.  8D8424 58040000        lea eax,dword ptr ss:[esp+458]  
005F5045  |.  8D8C24 24010000        lea ecx,dword ptr ss:[esp+124]  
005F504C  |.  50                     push eax  
005F504D  |.  68 149F8300            push Fiesta.00839F14                     ;  ASCII "%s\XTrap"  
005F5052  |.  51                     push ecx  
005F5053  |.  EB 0E                  jmp short Fiesta.005F5063  
005F5055  |>  56                     push esi  
005F5056  |.  8D9424 28010000        lea edx,dword ptr ss:[esp+128]  
005F505D  |.  68 149F8300            push Fiesta.00839F14                     ;  ASCII "%s\XTrap"  
005F5062  |.  52                     push edx  
005F5063  |>  E8 DFF21700            call Fiesta.00774347  
005F5068  |.  83C4 0C                add esp,0C  
005F506B  |.  8D8424 28020000        lea eax,dword ptr ss:[esp+228]  
005F5072  |.  8D8C24 24010000        lea ecx,dword ptr ss:[esp+124]  
005F5079  |.  50                     push eax  
005F507A  |.  68 B0C59000            push Fiesta.0090C5B0  
005F507F  |.  51                     push ecx  
005F5080  |.  E8 AB230000            call Fiesta.005F7430  
005F5085  |.  8B8424 58020000        mov eax,dword ptr ss:[esp+258]  
005F508C  |.  83C4 0C                add esp,0C  
005F508F  |.  83F8 02                cmp eax,2  
005F5092  |.  0F84 B6010000          je Fiesta.005F524E  
005F5098  |.  3D 01500A00            cmp eax,0A5001  
005F509D  |.  0F84 AB010000          je Fiesta.005F524E  
005F50A3  |.  B9 40000000            mov ecx,40  
005F50A8  |.  33C0                   xor eax,eax  
005F50AA  |.  8D7C24 21              lea edi,dword ptr ss:[esp+21]  
005F50AE  |.  885C24 20              mov byte ptr ss:[esp+20],bl  
005F50B2  |.  F3:AB                  rep stos dword ptr es:[edi]  
005F50B4  |.  66:AB                  stos word ptr es:[edi]  
005F50B6  |.  33D2                   xor edx,edx  
005F50B8  |.  68 089F8300            push Fiesta.00839F08                     ;  ASCII "XTrapVa.dll"  
005F50BD  |.  895424 14              mov dword ptr ss:[esp+14],edx  
005F50C1  |.  8D4C24 24              lea ecx,dword ptr ss:[esp+24]  
005F50C5  |.  AA                     stos byte ptr es:[edi]  
005F50C6  |.  8D8424 28010000        lea eax,dword ptr ss:[esp+128]  
005F50CD  |.  895424 18              mov dword ptr ss:[esp+18],edx  
005F50D1  |.  50                     push eax  
005F50D2  |.  895424 20              mov dword ptr ss:[esp+20],edx  
005F50D6  |.  68 009F8300            push Fiesta.00839F00                     ;  ASCII "%s\%s"  
005F50DB  |.  51                     push ecx  
005F50DC  |.  895C24 1C              mov dword ptr ss:[esp+1C],ebx  
005F50E0  |.  895424 2C              mov dword ptr ss:[esp+2C],edx  
005F50E4  |.  E8 5EF21700            call Fiesta.00774347  
005F50E9  |.  8D5424 1C              lea edx,dword ptr ss:[esp+1C]  
005F50ED  |.  8D4424 30              lea eax,dword ptr ss:[esp+30]  
005F50F1  |.  52                     push edx  
005F50F2  |.  50                     push eax  
005F50F3  |.  E8 F8350000            call Fiesta.005F86F0  
005F50F8  |.  83C4 18                add esp,18  
005F50FB  |.  8D8C24 24010000        lea ecx,dword ptr ss:[esp+124]  
005F5102  |.  8D5424 20              lea edx,dword ptr ss:[esp+20]  
005F5106  |.  68 F89E8300            push Fiesta.00839EF8                     ;  ASCII "*.xtp"  
005F510B  |.  51                     push ecx  
005F510C  |.  68 009F8300            push Fiesta.00839F00                     ;  ASCII "%s\%s"  
005F5111  |.  52                     push edx  
005F5112  |.  E8 30F21700            call Fiesta.00774347  
005F5117  |.  8D4424 20              lea eax,dword ptr ss:[esp+20]  
005F511B  |.  8D4C24 30              lea ecx,dword ptr ss:[esp+30]  
005F511F  |.  50                     push eax  
005F5120  |.  51                     push ecx  
005F5121  |.  E8 CA350000            call Fiesta.005F86F0  
005F5126  |.  83C4 18                add esp,18  
005F5129  |.  8D9424 24010000        lea edx,dword ptr ss:[esp+124]  
005F5130  |.  8D4424 20              lea eax,dword ptr ss:[esp+20]  
005F5134  |.  68 EC9E8300            push Fiesta.00839EEC                     ;  ASCII "XTrap.XT"  
005F5139  |.  52                     push edx  
005F513A  |.  68 009F8300            push Fiesta.00839F00                     ;  ASCII "%s\%s"  
005F513F  |.  50                     push eax  
005F5140  |.  E8 02F21700            call Fiesta.00774347  
005F5145  |.  8D4C24 24              lea ecx,dword ptr ss:[esp+24]  
005F5149  |.  8D5424 30              lea edx,dword ptr ss:[esp+30]  
005F514D  |.  51                     push ecx  
005F514E  |.  52                     push edx  
005F514F  |.  E8 9C350000            call Fiesta.005F86F0  
005F5154  |.  83C4 18                add esp,18  
005F5157  |.  8D8424 24010000        lea eax,dword ptr ss:[esp+124]  
005F515E  |.  8D4C24 20              lea ecx,dword ptr ss:[esp+20]  
005F5162  |.  68 E49E8300            push Fiesta.00839EE4                     ;  ASCII "*.dll"  
005F5167  |.  50                     push eax  
005F5168  |.  68 009F8300            push Fiesta.00839F00                     ;  ASCII "%s\%s"  
005F516D  |.  51                     push ecx  
005F516E  |.  E8 D4F11700            call Fiesta.00774347  
005F5173  |.  8D5424 28              lea edx,dword ptr ss:[esp+28]  
005F5177  |.  8D4424 30              lea eax,dword ptr ss:[esp+30]  
005F517B  |.  52                     push edx  
005F517C  |.  50                     push eax  
005F517D  |.  E8 6E350000            call Fiesta.005F86F0  
005F5182  |.  83C4 18                add esp,18  
005F5185  |.  8D8C24 24010000        lea ecx,dword ptr ss:[esp+124]  
005F518C  |.  8D5424 20              lea edx,dword ptr ss:[esp+20]  
005F5190  |.  68 E09E8300            push Fiesta.00839EE0                     ;  ASCII "*.*"  
005F5195  |.  51                     push ecx  
005F5196  |.  68 009F8300            push Fiesta.00839F00                     ;  ASCII "%s\%s"  
005F519B  |.  52                     push edx  
005F519C  |.  E8 A6F11700            call Fiesta.00774347  
005F51A1  |.  8D4424 2C              lea eax,dword ptr ss:[esp+2C]  
005F51A5  |.  8D4C24 30              lea ecx,dword ptr ss:[esp+30]  
005F51A9  |.  50                     push eax  
005F51AA  |.  51                     push ecx  
005F51AB  |.  E8 40350000            call Fiesta.005F86F0  
005F51B0  |.  8B8424 64020000        mov eax,dword ptr ss:[esp+264]  
005F51B7  |.  83C4 18                add esp,18  
005F51BA  |.  3D 0B500A00            cmp eax,0A500B  
005F51BF  |.  75 45                  jnz short Fiesta.005F5206  
005F51C1  |.  8B4424 1C              mov eax,dword ptr ss:[esp+1C]  
005F51C5  |.  8B4C24 18              mov ecx,dword ptr ss:[esp+18]  
005F51C9  |.  8D9424 24010000        lea edx,dword ptr ss:[esp+124]  
005F51D0  |.  52                     push edx  
005F51D1  |.  8B5424 18              mov edx,dword ptr ss:[esp+18]  
005F51D5  |.  50                     push eax  
005F51D6  |.  8B4424 18              mov eax,dword ptr ss:[esp+18]  
005F51DA  |.  51                     push ecx  
005F51DB  |.  8B4C24 18              mov ecx,dword ptr ss:[esp+18]  
005F51DF  |.  52                     push edx  
005F51E0  |.  8B15 ECCD9000          mov edx,dword ptr ds:[90CDEC]  
005F51E6  |.  50                     push eax  
005F51E7  |.  A1 F0CD9000            mov eax,dword ptr ds:[90CDF0]  
005F51EC  |.  51                     push ecx  
005F51ED  |.  52                     push edx  
005F51EE  |.  50                     push eax  
005F51EF  |.  8D8C24 7C050000        lea ecx,dword ptr ss:[esp+57C]  
005F51F6  |.  68 C49E8300            push Fiesta.00839EC4                     ;  ASCII "%08X.(%d).%d.%d.%d.%d.%d.%s"  
005F51FB  |.  51                     push ecx  
005F51FC  |.  E8 46F11700            call Fiesta.00774347  
005F5201  |.  83C4 28                add esp,28  
005F5204  |.  EB 1E                  jmp short Fiesta.005F5224  
005F5206  |>  8D9424 54020000        lea edx,dword ptr ss:[esp+254]  
005F520D  |.  52                     push edx  
005F520E  |.  50                     push eax  
005F520F  |.  8D8424 64050000        lea eax,dword ptr ss:[esp+564]  
005F5216  |.  68 BC9E8300            push Fiesta.00839EBC                     ;  ASCII "%08X.%s"  
005F521B  |.  50                     push eax  
005F521C  |.  E8 26F11700            call Fiesta.00774347  
005F5221  |.  83C4 10                add esp,10  
005F5224  |>  8B0D ECCD9000          mov ecx,dword ptr ds:[90CDEC]  
005F522A  |.  6A 03                  push 3  
005F522C  |.  51                     push ecx  
005F522D  |.  8D9424 64050000        lea edx,dword ptr ss:[esp+564]  
005F5234  |.  6A 11                  push 11  
005F5236  |.  52                     push edx  
005F5237  |.  E8 B43E0000            call Fiesta.005F90F0  
005F523C  |.  83C4 10                add esp,10  
005F523F  |.  E8 9C280000            call Fiesta.005F7AE0  
005F5244  |.  5F                     pop edi  
005F5245  |.  5E                     pop esi  
005F5246  |.  5B                     pop ebx  
005F5247  |.  81C4 44070000          add esp,744  
005F524D  |.  C3                     retn  
005F524E  |>  B9 18000000            mov ecx,18  
005F5253  |.  8DB424 54020000        lea esi,dword ptr ss:[esp+254]  
005F525A  |.  BF F0CB9000            mov edi,Fiesta.0090CBF0  
005F525F  |.  83E8 02                sub eax,2  
005F5262  |.  F3:A5                  rep movs dword ptr es:[edi],dword ptr ds>  
005F5264  |.  74 0D                  je short Fiesta.005F5273  
005F5266  |.  2D FF4F0A00            sub eax,0A4FFF  
005F526B  |.  891D 44C49000          mov dword ptr ds:[90C444],ebx  
005F5271  |.  75 0A                  jnz short Fiesta.005F527D  
005F5273  |>  C705 44C49000 01000000 mov dword ptr ds:[90C444],1  
005F527D  |>  8D8424 28020000        lea eax,dword ptr ss:[esp+228]  
005F5284  |.  50                     push eax  
005F5285  |.  E8 362D0000            call Fiesta.005F7FC0  
005F528A  |.  8B8424 50020000        mov eax,dword ptr ss:[esp+250]  
005F5291  |.  83C4 04                add esp,4  
005F5294  |.  83F8 02                cmp eax,2  
005F5297  |.  74 41                  je short Fiesta.005F52DA  
005F5299  |.  8B0D ECCD9000          mov ecx,dword ptr ds:[90CDEC]  
005F529F  |.  8B15 F0CD9000          mov edx,dword ptr ds:[90CDF0]  
005F52A5  |.  51                     push ecx  
005F52A6  |.  52                     push edx  
005F52A7  |.  50                     push eax  
005F52A8  |.  8D8424 68050000        lea eax,dword ptr ss:[esp+568]  
005F52AF  |.  68 AC9E8300            push Fiesta.00839EAC                     ;  ASCII "%08X.%08x.(%d)"  
005F52B4  |.  50                     push eax  
005F52B5  |.  E8 8DF01700            call Fiesta.00774347  
005F52BA  |.  8B0D F0CD9000          mov ecx,dword ptr ds:[90CDF0]  
005F52C0  |.  6A 12                  push 12  
005F52C2  |.  51                     push ecx  
005F52C3  |.  8D9424 78050000        lea edx,dword ptr ss:[esp+578]  
005F52CA  |.  6A 11                  push 11  
005F52CC  |.  52                     push edx  
005F52CD  |.  E8 1E3E0000            call Fiesta.005F90F0  
005F52D2  |.  83C4 24                add esp,24  
005F52D5  |.  E8 06280000            call Fiesta.005F7AE0  
005F52DA  |>  5F                     pop edi  
005F52DB  |.  5E                     pop esi  
005F52DC  |.  C705 E8CD9000 00010000 mov dword ptr ds:[90CDE8],100  
005F52E6  |.  5B                     pop ebx  
005F52E7  |.  81C4 44070000          add esp,744  
005F52ED  \.  C3                     retn  

其中发现 关键CALL  

005F5080  |.  E8 AB230000            call Fiesta.005F7430  

这个Call执行后启动保护.  

OD 跟进后 发现为无参函数,所以直接retn,不给保护启动.  


发现下面call出来还有1个返回值校验.  

005F5098  |.  3D 01500A00            cmp eax,0A5001  

那找个位置,写进去  

005F5085  |.  8B8424 58020000        mov eax,dword ptr ss:[esp+258]  

改成  

005F5085      B8 01500A00            mov eax,0A5001  
005F508A      90                     nop  
005F508B      90                     nop  


这边总结下,各类型保护启动的过程都有返回值校验,象np,hs,gpk等.  

到此发现OD可以正常启动游戏... 发现角色游戏后,1分钟左右,客户端关闭,那说明保护有通信,那我们真的是不是无能为力呢?  

不急,等等慢慢道来.  





因为客户端关闭,还是比较容易处理的,经过几处修改,发现客户端已经很听话了,不关闭,但是角色一段时间后掉线.那说明XTrap和服务端还是存在通信的...  
那必须找出通讯关键处,经过调试发现..  

005F77F0  /$  A1 C0CD9000   mov eax,dword ptr ds:[90CDC0]            ;  XTrapVa.dll_Base判断....  
005F77F5  |.  85C0          test eax,eax  
005F77F7  |.  75 05         jnz short Fiesta.005F77FE                ;  强制跳  
005F77F9  |.  E8 E2020000   call Fiesta.005F7AE0                     ;  做坏事  
005F77FE  |>  8B4424 14     mov eax,dword ptr ss:[esp+14]  
005F7802  |.  8B4C24 10     mov ecx,dword ptr ss:[esp+10]  
005F7806  |.  8B5424 0C     mov edx,dword ptr ss:[esp+C]  
005F780A  |.  50            push eax  
005F780B  |.  8B4424 0C     mov eax,dword ptr ss:[esp+C]  
005F780F  |.  51            push ecx  
005F7810  |.  8B4C24 0C     mov ecx,dword ptr ss:[esp+C]  
005F7814  |.  52            push edx  
005F7815  |.  50            push eax  
005F7816  |.  51            push ecx  
005F7817  |.  FF15 FCCD9000 call dword ptr ds:[90CDFC]               ;  XTrapVa.dll_Base+A4A0 通信函数调用  
005F781D  |.  83C4 14       add esp,14  
005F7820  \.  C3            retn  


所以代码上处理就简单了.  

说一下我的处理方式,我是直接复制出XTrapVa.dll,改名为a.dll,这是为了避免XTrap的更新,去重复更新这部分,因为一般情况下这类保护算法上是不会有大变动的.  
      if XX = 0 then  
      begin  
         XX:= LoadLibrary('a.dll');  
         //PDWORD($0090CDC0)^:= XX; //BASE 不能写进去,写进去后触发更多判断...  
         PDWORD($0090CDFC)^:= XX+$A4A0; //通信CALL写进去...  
      end;  


至于  //PDWORD($0090CDC0)^:= XX; //为什么不写进去,具体的游戏还是得分析.我是直接强制跳







联系我时,请说是在 挂海论坛 上看到的,谢谢!



上一篇:小试DirectX游戏CPU优化
下一篇:脱机写作——参考参考
免责声明:
1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关。一切关于该内容及资源商业行为与www.52ghai.com无关。

2、本站提供的一切资源内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。

3、本站信息来自第三方用户,非本站自制,版权归原作者享有,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

4、如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵犯你版权的,请邮件与我们联系删除(邮箱:[email protected]),本站将立即改正。

3正式会员
128/300

128

积分

51

主题

3

听众
已帮网友解决0 个问题
好评
0
贡献
77
海币
6699
交易币
0
沙发
发表于 2015-2-8 19:23:08 | 只看该作者
感恩无私的分享与奉献 :)
贡献
23
海币
183
交易币
0
板凳
发表于 2015-2-8 20:01:34 | 只看该作者
.......................真是难得给力的帖子啊。
3正式会员
220/300

220

积分

81

主题

1

听众
已帮网友解决0 个问题
好评
0
贡献
139
海币
992
交易币
0
地板
发表于 2015-2-26 11:57:24 | 只看该作者
不错 支持下
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

免责声明|Archiver|手机版|小黑屋|挂海论坛

GMT+8, 2024-5-10 03:24 , Processed in 0.507711 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.2

本站资源来自互联网用户收集发布,如有侵权请邮件与我们联系处理。xhzlw@foxmail.com

快速回复 返回顶部 返回列表