首页
社区
课程
招聘
[原创]APEX保护系统.有破解思路,有案例分析,有官方源码。
发表于: 2013-6-22 01:10 42971

[原创]APEX保护系统.有破解思路,有案例分析,有官方源码。

2013-6-22 01:10
42971

今天在求助问答区,有朋友问apex的问题。就找了找几年前,研究apex的文档,一点心得体会,然后整理了一下,发出来。

【名称】                        
                APEX保护系统
                关于Apex保护系统的官方详细文档,请参考:附录A--有源码,有说明,有文档。需要的朋友可以参考。
               
【分析时间】       
                2011-9-12
               
                特别说明:
                        该分析文档是Apex早期的版本,现在版本不再适用,属于正常,只是作为一个参考。
                       
                        如果是个新手,去搞保护系统,往往会失去方向,
                        因为那些个保护系统(tp,np,zp,hp,hs,gpk,apllo,xtrap等等)都已经发展了很多年。
                        为了方便学习研究,可以尝试的去找找一些老游戏,那些个早期的版本来研究。
                       
                        比如:apex早期的版本,在 香港的晴空物语Online,刀剑英雄2,香港的新骑士中加了老版本。
                        可以避免直接接触高版本导致失去方向,失去信心。

【如何识别】
          网游的客户端目录中如果有 ACDC.dat 文件,那么可以确定有apex保护。
  
          关键的2个驱动保护文件:
                  wydsken.sys
                  wyqk.sys
  
【技术特点】       
                1,驱动级反调试,反OD调试。
                   --OD无法打开运行,无法附加。
                  
                   硬解决办法:
                                   用xueTr恢复IAT,EAT 钩子,停掉时钟检测等等,比较麻烦。
                                   {原则:当我遇到一个钢筋修筑的大门的时候,我通常是避开大门,找个墙缝,挖大点,进去。}
                  
                   取巧解决办法:
                                   由于Apex是游戏登陆之后,在角色选择的时候启动的,
                                   所以在进入游戏之前可以调试,可以下断,可以附加,也可以打开运行。
                         可以下硬件断点。
                         对于写个脱机,通讯协议的加密算法以及密码的二次加密算法,
                         在选择角色之前,也就是apex启动之前,全部可以搞定。
                        
                         另外,实在想在进入游戏后想下断点,怎么办?                        
                         下断点,需要在APex启动之前下好,在游戏中会断下来的,
                         只是需要手动指定Eip,跳过断点处,可以单步。(如果不手动处理EIP,会出错的哦)
                        
                2,Apex保持和Server的通讯。
               
                           Apex保护系统和Server保持了通讯,所以不能简单的暴力破解,干掉了事,这样会导致断线。
                                APex没有单独的通讯Socket实例化,而是利用Game本身的Socket实例,
                                所以可以bp send,往上找几层,很轻松找到Apex的通讯加密算法。
                               
                       
                3,APex虽然没有加壳。但是Apex本地的Client代码不完全,关键代码是在APex启动之后从服务器下载的。
               
                        解决:可以在下载之后找到Apex的线程Dump出来。
                       
                4,Apex防多开。
                       
                                a,干掉互斥对象,测试,不行。
                                b,用沙盘技术也不行。
                                虽然可以开起多个Client,但是开2个号,其中一个必定不到1分钟断线。
                               
                                脱机可以成功避免防多开。案例中有说明。
                               
                5,代码花指令
                               
                                这个可以手动修复,不难。
               
                6,虚拟机代码。
               
                          这个东西可以不管的,案例中有说明。
               
                       
【案例一香港的晴空物语】

【案例一新干线的新骑士】

附录A :Apex官方源码+文档,点击下载“ Apex保护系统.part1.rar Apex保护系统.part2.rar”。

未完待续。。。。


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 5
支持
分享
最新回复 (46)
雪    币: 1839
活跃值: (295)
能力值: ( LV9,RANK:370 )
在线值:
发帖
回帖
粉丝
2
【案例一香港的晴空物语】
【版本】                        2011-07-27
       

【dump游戏的game.bin】
        - 虽然无壳, 但是找不到 Game.exe,只有一个Launcher.exe。
    原因:游戏的客户端exe(_Launcher.exe ),是2个exe的合成:Launcher.exe 和 Game.exe
          静态下: Game.exe是作为_Launcher.exe的数据段存在的,并且加密压缩过。
  
  - 游戏的真实启动过程:
                  用OD先启动 Launcher.exe,然后看到 创建一个Game.exe的进程,并挂起。
                  然后,解密解压缩数据段Game.bin,WriteMem写入到刚才挂起的进程。
                  然后,Launcher.exe退出,Game.exe 恢复Sume。
                  
                     
- 关键点:
          .text:00422690
.text:00422690 ; 作用:修复Pe文件头;这里很关键,修复Game.exe的Pe头。
.text:00422690 ; 功能: 在这里DUmp出来Game.exe
.text:00422690 ; 参数:
.text:00422690 ; 0012DFAC   01C80020 Gamebin的原始地址
.text:00422690 ; 0012DFB0   008AC198 写入地址
.text:00422690 ; 0012DFB4   0012DFD8
.text:00422690 ; 0012DFB8   0012DFD4
.text:00422690 ; 0012DFBC   0012DFDC
.text:00422690 ; 0012DFC0   0012DFE0 路径
.text:00422690 ; 备注:
.text:00422690 ; 0012DFD4  00 00 00 00 06 00 00 00 00 00 00 00 00 00 00 00  ...............
.text:00422690 ; 0012DFE4  46 3A 5C C7 E7 BF D5 CE EF D5 5A 5C 47 44 4F 6E  F:\晴空物語\GDOn
.text:00422690 ; 0012DFF4  6C 69 6E 65 48 4B 5C 5F 4C 61 75 6E 63 68 65 72  lineHK\_Launcher
.text:00422690 ; 0012E004  2E 65 78 65                                      .exe
.text:00422690
.text:00422690 ; int __stdcall Fix_GameBin_PE(int pAddrGamebin,int,int,int,int,int)
.text:00422690 Fix_GameBin_PE  proc near               ; CODE XREF: CreateProcessA_WriteMem_Quit3+DAp
.text:00422690
.text:00422690 pAddrGamebin    = dword ptr  4
.text:00422690 arg_4           = dword ptr  8
.text:00422690 arg_8           = dword ptr  0Ch
.text:00422690 arg_C           = dword ptr  10h
.text:00422690 arg_10          = dword ptr  14h
.text:00422690 arg_14          = dword ptr  18h
.text:00422690
.text:00422690                 mov     eax, [esp+arg_4]
.text:00422694                 cmp     eax, 40h
.text:00422697                 jnb     short loc_42269E
.text:00422699                 xor     al, al
.text:0042269B                 retn    18h
.text:0042269E ; ---------------------------------------------------------------------------
.text:0042269E
.text:0042269E loc_42269E:                             ; CODE XREF: Fix_GameBin_PE+7j
.text:0042269E                 push    ebx
.text:0042269F                 mov     ebx, [esp+4+pAddrGamebin]
.text:004226A3                 cmp     word ptr [ebx], 5A4Dh                        //PE头标志
.text:004226A8                 jz      short loc_4226B0
.text:004226AA                 xor     al, al
.text:004226AC                 pop     ebx
.text:004226AD                 retn    18h
.text:004226B0 ; ---------------------------------------------------------------------------
.text:004226B0
.text:004226B0 loc_4226B0:                             ; CODE XREF: Fix_GameBin_PE+18j
.text:004226B0                 push    esi
.text:004226B1                 mov     esi, [ebx+3Ch]
.text:004226B4                 lea     edx, [esi+0F8h]
.text:004226BA                 cmp     eax, edx
.text:004226BC                 jl      loc_422834
.text:004226C2                 add     esi, ebx
.text:004226C4                 cmp     dword ptr [esi], 4550h
.text:004226CA                 jnz     loc_422834
.text:004226D0                 movzx   edx, word ptr [esi+16h]
.text:004226D4                 test    edx, 2000h
.text:004226DA                 jnz     loc_422834
.text:004226E0                 test    dl, 2
.text:004226E3                 jz      loc_422834
.text:004226E9                 cmp     word ptr [esi+14h], 0E0h
.text:004226EF                 jnz     loc_422834
.text:004226F5                 push    edi
.text:004226F6                 lea     edi, [esi+0F8h]
.text:004226FC                 push    edi
.text:004226FD                 push    esi
.text:004226FE                 push    eax
.text:004226FF                 push    ebx
.text:00422700                 call    sub_4225E0
.text:00422705                 test    eax, eax
.text:00422707                 mov     ecx, [esp+0Ch+arg_14]
.text:0042270B                 mov     [ecx], eax
.text:0042270D                 jnz     short loc_422717
.text:0042270F                 pop     edi
.text:00422710                 pop     esi
.text:00422711                 xor     al, al
.text:00422713                 pop     ebx
.text:00422714                 retn    18h
.text:00422717 ; ---------------------------------------------------------------------------
.text:00422717
.text:00422717 loc_422717:                             ; CODE XREF: Fix_GameBin_PE+7Dj
.text:00422717                 push    ebp
.text:00422718                 push    40h             ; flProtect
.text:0042271A                 push    1000h           ; flAllocationType
.text:0042271F                 push    eax             ; dwSize
.text:00422720                 push    0               ; lpAddress
.text:00422722                 call    ds:VirtualAlloc
.text:00422728                 test    eax, eax
.text:0042272A                 mov     ebp, [esp+10h+arg_10]
.text:0042272E                 mov     [ebp+0], eax
.text:00422731                 jz      loc_42282B
.text:00422737                 movzx   ecx, word ptr [esi+6]
.text:0042273B                 test    ecx, ecx
.text:0042273D                 mov     edx, [esi+54h]
.text:00422740                 jle     short loc_42275B
.text:00422742                 lea     esi, [edi+14h]
.text:00422745                 mov     edi, ecx
.text:00422747
.text:00422747 loc_422747:                             ; CODE XREF: Fix_GameBin_PE+C9j
.text:00422747                 mov     ecx, [esi]
.text:00422749                 test    ecx, ecx
.text:0042274B                 jz      short loc_422753
.text:0042274D                 cmp     ecx, edx
.text:0042274F                 jnb     short loc_422753
.text:00422751                 mov     edx, ecx
.text:00422753
.text:00422753 loc_422753:                             ; CODE XREF: Fix_GameBin_PE+BBj
.text:00422753                                         ; Fix_GameBin_PE+BFj
.text:00422753                 add     esi, 28h
.text:00422756                 sub     edi, 1
.text:00422759                 jnz     short loc_422747
.text:0042275B
.text:0042275B loc_42275B:                             ; CODE XREF: Fix_GameBin_PE+B0j
.text:0042275B                 push    edx
.text:0042275C                 push    ebx
.text:0042275D                 push    eax
.text:0042275E                 call    unknown_libname_54 ; Microsoft VisualC 2-8/net runtime
.text:00422763                 mov     eax, [ebp+0]
.text:00422766                 mov     edx, [eax+3Ch]
.text:00422769                 mov     ebp, [esp+1Ch+arg_8]
.text:0042276D                 add     eax, edx
.text:0042276F                 mov     [ebp+0], eax
.text:00422772                 lea     edi, [eax+0F8h]
.text:00422778                 mov     eax, [esp+1Ch+arg_C]
.text:0042277C                 mov     [eax], edi
.text:0042277E                 mov     ebx, [ebp+0]
.text:00422781                 mov     ecx, [ebx+38h]
.text:00422784                 mov     edx, [ebx+54h]
.text:00422787                 lea     eax, [edx+ecx-1]
.text:0042278B                 xor     edx, edx
.text:0042278D                 div     ecx
.text:0042278F                 add     esp, 0Ch
.text:00422792                 mov     [esp+10h+arg_4], 0
.text:0042279A                 mov     esi, eax
.text:0042279C                 mov     eax, [esp+10h+arg_10]
.text:004227A0                 imul    esi, ecx
.text:004227A3                 add     esi, [eax]
.text:004227A5                 cmp     word ptr [ebx+6], 0
.text:004227AA                 jbe     short loc_42282B
.text:004227AC                 xor     ebx, ebx
.text:004227AE                 mov     edi, edi
.text:004227B0
.text:004227B0 loc_4227B0:                             ; CODE XREF: Fix_GameBin_PE+199j
.text:004227B0                 mov     eax, [ebx+edi+0Ch]
.text:004227B4                 test    eax, eax
.text:004227B6                 jz      short loc_4227C0
.text:004227B8                 mov     edx, [esp+10h+arg_10]
.text:004227BC                 mov     esi, [edx]
.text:004227BE                 add     esi, eax
.text:004227C0
.text:004227C0 loc_4227C0:                             ; CODE XREF: Fix_GameBin_PE+126j
.text:004227C0                 mov     eax, [ebx+edi+10h]
.text:004227C4                 test    eax, eax
.text:004227C6                 jz      short loc_422801
.text:004227C8                 push    eax
.text:004227C9                 mov     eax, [ebx+edi+14h]
.text:004227CD                 add     eax, [esp+14h+pAddrGamebin]
.text:004227D1                 push    eax
.text:004227D2                 push    esi
.text:004227D3                 call    unknown_libname_54 ; Microsoft VisualC 2-8/net runtime
.text:004227D8                 mov     ecx, [esp+1Ch+arg_C]
.text:004227DC                 mov     edi, [ecx]
.text:004227DE                 mov     eax, [ebx+edi+10h]
.text:004227E2                 mov     edx, [ebx+edi+8]
.text:004227E6                 add     esp, 0Ch
.text:004227E9                 cmp     edx, eax
.text:004227EB                 jnb     short loc_4227F9
.text:004227ED                 mov     edx, [ebp+0]
.text:004227F0                 mov     ecx, [edx+38h]
.text:004227F3                 lea     eax, [eax+ecx-1]
.text:004227F7                 jmp     short loc_422809
.text:004227F9 ; ---------------------------------------------------------------------------
.text:004227F9
.text:004227F9 loc_4227F9:                             ; CODE XREF: Fix_GameBin_PE+15Bj
.text:004227F9                 mov     eax, [ebp+0]
.text:004227FC                 mov     ecx, [eax+38h]
.text:004227FF                 jmp     short loc_422805
.text:00422801 ; ---------------------------------------------------------------------------
.text:00422801
.text:00422801 loc_422801:                             ; CODE XREF: Fix_GameBin_PE+136j
.text:00422801                 mov     edx, [ebx+edi+8]
.text:00422805
.text:00422805 loc_422805:                             ; CODE XREF: Fix_GameBin_PE+16Fj
.text:00422805                 lea     eax, [edx+ecx-1]
.text:00422809
.text:00422809 loc_422809:                             ; CODE XREF: Fix_GameBin_PE+167j
.text:00422809                 xor     edx, edx
.text:0042280B                 div     ecx
.text:0042280D                 mov     edx, [ebp+0]
.text:00422810                 movzx   edx, word ptr [edx+6]
.text:00422814                 add     ebx, 28h
.text:00422817                 imul    eax, ecx
.text:0042281A                 add     esi, eax
.text:0042281C                 mov     eax, [esp+10h+arg_4]
.text:00422820                 add     eax, 1
.text:00422823                 cmp     eax, edx
.text:00422825                 mov     [esp+10h+arg_4], eax
.text:00422829                 jl      short loc_4227B0
.text:0042282B
.text:0042282B loc_42282B:                             ; CODE XREF: Fix_GameBin_PE+A1j
.text:0042282B                                         ; Fix_GameBin_PE+11Aj
.text:0042282B                 pop     ebp
.text:0042282C                 pop     edi
.text:0042282D                 pop     esi
.text:0042282E                 mov     al, 1
.text:00422830                 pop     ebx
.text:00422831                 retn    18h
.text:00422834 ; ---------------------------------------------------------------------------
.text:00422834
.text:00422834 loc_422834:                             ; CODE XREF: Fix_GameBin_PE+2Cj
.text:00422834                                         ; Fix_GameBin_PE+3Aj ...
.text:00422834                 pop     esi
.text:00422835                 xor     al, al
.text:00422837                 pop     ebx
.text:00422838                 retn    18h
.text:00422838 Fix_GameBin_PE  endp
     
  -  简单dump方法: 游戏更新完毕之后,OD附加,然后下断,Dump
                          00421995  |.  83C4 20                 add     esp, 20
                        00421998  |.  8D5424 1C               lea     edx, dword ptr [esp+1C]
                        0042199C  |.  52                      push    edx
                        0042199D  |.  8D4424 1C               lea     eax, dword ptr [esp+1C]
                        004219A1  |.  50                      push    eax
                        004219A2  |.  8B8424 38110000         mov     eax, dword ptr [esp+1138]
                        004219A9  |.  8D4C24 18               lea     ecx, dword ptr [esp+18]
                        004219AD  |.  51                      push    ecx
                        004219AE  |.  8D5424 20               lea     edx, dword ptr [esp+20]
                        004219B2  |.  52                      push    edx
                        004219B3  |.  50                      push    eax
                        004219B4  |.  55                      push    ebp                              ;  Dump:  ebp;ebp就是Game.bin的镜像首地址。
                        004219B5  |.  8BCE                    mov     ecx, esi
                        004219B7  |.  83CF FF                 or      edi, FFFFFFFF
                        004219BA  |.  E8 41F9FFFF             call    00421300
                        004219BF  |.  84C0                    test    al, al
                       

   
  
【启动参数】
  
  在call    00422690  ;修复Pe文件头;这里很关键,修复Game.exe的Pe头。
    从Call=00422690的最后一个参数ebp,ebp+$20就是 Game.bin的地址。Dump另存出来,可以得到 boGame.exe.
  另存出来的boGame.exe. 加参数 " EasyFun -a  -p"  可以直接启动游戏。
  
   - 先Dump出来boGame.exe ; 启动参数EasyFun -a  -p
   
  另存出来的 boGame.exe.exe 加参数 EasyFun -a  -p  
  可以直接启动游戏。
   

【游戏本身的通讯协议加密算法的破解过程】
-用 OD+strong版本。

-根据WSARecv,然后一直下 硬件读取断点,找到Decrypt的Call,然后在DecryptCall下断点,发现加密也
  用这个Call。于是,找到了SendPack的未加密之前的明文地址。

-- 下面是关于通讯协议的加密,解密算法。

        关键Call.HookSendAddr: 对通讯协议加密处理。
版本:游戏_Launcher.exe 2011-08-24
空间:_Launcher.exe
特征码: 83C5025583C3025383C7FE - 48h ;                               

00A87880    53                              push    ebx                              
                                                         ; Login_Acc(只有一个参数A,Ecx是SocketClass),
                                                         HookSendAddr(明文数据buf首地址):buf=[[Esp+4]+4]+2 ,(明文长度)SrcSize=[[Esp+4]+4] ;(返回地址)lpRet=[Esp+2C]
00A87881    55                              push    ebp
00A87882    56                              push    esi
00A87883    57                              push    edi
00A87884    8B7C24 14                       mov     edi, dword ptr [esp+14]           ; 参数A
00A87888    8B6F 04                         mov     ebp, dword ptr [edi+4]            ; ebp=[edi+4]=Srcbuf
00A8788B    3B6F 08                         cmp     ebp, dword ptr [edi+8]
00A8788E    8BF1                            mov     esi, ecx
00A87890    76 08                           jbe     short 00A8789A
00A87892    E8 40E8A3FF                     call    004C60D7
00A87897    3B6F 08                         cmp     ebp, dword ptr [edi+8]
00A8789A    72 05                           jb      short 00A878A1
00A8789C    E8 36E8A3FF                     call    004C60D7
00A878A1    8B5F 04                         mov     ebx, dword ptr [edi+4]
00A878A4    3B5F 08                         cmp     ebx, dword ptr [edi+8]
00A878A7    76 08                           jbe     short 00A878B1
00A878A9    E8 29E8A3FF                     call    004C60D7
00A878AE    3B5F 08                         cmp     ebx, dword ptr [edi+8]
00A878B1    72 05                           jb      short 00A878B8
00A878B3    E8 1FE8A3FF                     call    004C60D7
00A878B8    8B47 04                         mov     eax, dword ptr [edi+4]
00A878BB    85C0                            test    eax, eax
00A878BD    75 04                           jnz     short 00A878C3
00A878BF    33FF                            xor     edi, edi
00A878C1    EB 05                           jmp     short 00A878C8
00A878C3    8B7F 08                         mov     edi, dword ptr [edi+8]
00A878C6    2BF8                            sub     edi, eax
00A878C8    83C5 02                         add     ebp, 2                         //特征码 83C5025583C3025383C7FE
00A878CB    55                              push    ebp
00A878CC    83C3 02                         add     ebx, 2
00A878CF    53                              push    ebx
00A878D0    83C7 FE                         add     edi, -2
00A878D3    8D46 54                         lea     eax, dword ptr [esi+54]
00A878D6    57                              push    edi
00A878D7    50                              push    eax
00A878D8    E8 A3260000                     call    00A89F80                                  ;EnCryptCall 加密数据
00A878DD    8B9E 80280000                   mov     ebx, dword ptr [esi+2880]           ;特征码//mov     ebx, dword ptr [esi+2880]
00A878E3    8B53 04                         mov     edx, dword ptr [ebx+4]
00A878E6    83C4 10                         add     esp, 10
00A878E9    8DBE 7C280000                   lea     edi, dword ptr [esi+287C]
00A878EF    8D4C24 14                       lea     ecx, dword ptr [esp+14]
00A878F3    51                              push    ecx
00A878F4    52                              push    edx
00A878F5    53                              push    ebx
00A878F6    8BCF                            mov     ecx, edi
00A878F8    E8 3377DEFF                     call    0086F030
00A878FD    6A 01                           push    1

关键Call.HookRecvAddr:对通讯协议解密处理。
版本:游戏_Launcher.exe 2011-08-24
空间:_Launcher.exe
特征码: 895D048B430489188B4E04 -2B

00A8FA50    3B5F 08                cmp     ebx, dword ptr [edi+8]
00A8FA53    72 05                  jb      short 00A8FA5A
00A8FA55    E8 246BA3FF            call    004C657E
00A8FA5A    8B6F 04                mov     ebp, dword ptr [edi+4]
00A8FA5D    3B6F 08                cmp     ebp, dword ptr [edi+8]
00A8FA60    76 08                  jbe     short 00A8FA6A
00A8FA62    E8 176BA3FF            call    004C657E
00A8FA67    3B6F 08                cmp     ebp, dword ptr [edi+8]
00A8FA6A    72 05                  jb      short 00A8FA71
00A8FA6C    E8 0D6BA3FF            call    004C657E
00A8FA71    8B47 04                mov     eax, dword ptr [edi+4]         
00A8FA74    85C0                   test    eax, eax
00A8FA76    75 04                  jnz     short 00A8FA7C
00A8FA78    33FF                   xor     edi, edi
00A8FA7A    EB 05                  jmp     short 00A8FA81
00A8FA7C    8B7F 08                mov     edi, dword ptr [edi+8]         
00A8FA7F    2BF8                   sub     edi, eax
00A8FA81    53                     push    ebx
00A8FA82    55                     push    ebp
00A8FA83    8D86 5C040000          lea     eax, dword ptr [esi+45C]
00A8FA89    57                     push    edi
00A8FA8A    50                     push    eax
00A8FA8B    E8 30200000            call    00A91AC0                                                                                        //解密Decrypt
00A8FA90    8BAE 74280000          mov     ebp, dword ptr [esi+2874]        ; 特征码,
                                        HookRecvAddr:Ebx=Ebp=Buf(明文buf首地址),Eax=Edi=SrcSize长度,
00A8FA96    8B55 04                mov     edx, dword ptr [ebp+4]
00A8FA99    83C4 10                add     esp, 10
00A8FA9C    8DBE 70280000          lea     edi, dword ptr [esi+2870]
00A8FAA2    8D4C24 20              lea     ecx, dword ptr [esp+20]
00A8FAA6    51                     push    ecx
00A8FAA7    52                     push    edx
00A8FAA8    55                     push    ebp
00A8FAA9    8BCF                   mov     ecx, edi
00A8FAAB    E8 0056C7FF            call    007050B0
00A8FAB0    6A 01                  push    1
00A8FAB2    8BCF                   mov     ecx, edi
00A8FAB4    8BD8                   mov     ebx, eax
00A8FAB6    E8 0562E9FF            call    00925CC0
00A8FABB    895D 04                mov     dword ptr [ebp+4], ebx            //特征码 895D048B430489188B4E04
00A8FABE    8B43 04                mov     eax, dword ptr [ebx+4]
00A8FAC1    8918                   mov     dword ptr [eax], ebx
00A8FAC3    8B4E 04                mov     ecx, dword ptr [esi+4]
00A8FAC6    E8 75E4FFFF            call    00A8DF40
00A8FACB    0FBF8E 92280000        movsx   ecx, word ptr [esi+2892]

【跟踪Game.exe加载Apex.exe的过程】
   Apex.exe 是作为数据存放在Game.exe里面,ACDC.dat只是更新补丁。
  1,从Game.exe的数据段读取出,Apex.exe。
  2,修复Apex。exe的IAT,reloc。
  3,启动Apex。exe。
  4,解密出 ACDC.dat的文件名,解密出 shplain (用来解密ACDC.dat数据的Key)
  5,用shplain 解密ACDC.dat,并写入Apex。exe线程。
  

  原始ACDC.dta
1A2008A0  1F 8B 08 00 00 00 00 00 00 0B C4 BD 0B 7C 54 D5  ?......慕|T
1A2008B0  B5 30 7E 66 E6 24 1C 60 64 06 1C 70 94 58 62 1D  ?~f?`dp擷b
1A2008C0  6D 34 B1 46 27 D6 E0 80 4D CC 83 80 80 F3 20 33  m4盕'粥€M虄€€?3
1A2008D0  D8 90 C4 B6 5C 1A 53 DA 8B 30 03 58 79 48 27 63  貝亩\S趮0XyH'c
1A2008E0  39 6C 46 69 AB D5 F6 DA 56 6F 6D EB A7 B6 9F BD  9lFi鲒Vom毵稛
1A2008F0  AD 8A F5 D1 84 60 12 1E F2 F2 01 8A AD A8 54 77  瓓跹刞蝌姯═w
1A200900  9C A0 41 04 C2 2B F3 5F 6B ED 73 E6 1D 1E B6 F7  湢A?骭k韘?恩
1A200910  FF F1 23 C9 39 FB EC E7 DA 6B AD BD D6 DA 6B AF  ??缵k众k
1A200920  FD 33 E5 9F 07 A4 A7 47 48 B2 04 FF AC 2D 6C 98  ?鍩ぇGH??l
  
  解密之后ACDC.exe
04CD0040  0E 1F BA 0E 00 B4 09 CD 21 B8 01 4C CD 21 54 68  ?.???L?Th
04CD0050  69 73 20 70 72 6F 67 72 61 6D 20 63 61 6E 6E 6F  is program canno
04CD0060  74 20 62 65 20 72 75 6E 20 69 6E 20 44 4F 53 20  t be run in DOS
04CD0070  6D 6F 64 65 2E 0D 0D 0A 24 00 00 00 00 00 00 00  mode....$.......
04CD0080  D9 7B 95 BB 9D 1A FB E8 9D 1A FB E8 9D 1A FB E8  賩暬???
04CD0090  1E 12 A6 E8 9E 1A FB E8 9D 1A FA E8 D3 1A FB E8  ﹁???
04CD00A0  98 16 F4 E8 89 1A FB E8 98 16 9B E8 98 1A FB E8  ?翳??涜?
04CD00B0  98 16 A4 E8 E1 1A FB E8 98 16 A7 E8 9C 1A FB E8  ?よ??ц?
04CD00C0  98 16 A1 E8 9C 1A FB E8 52 69 63 68 9D 1A FB E8  ?¤?Rich?
04CD00D0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
04CD00E0  00 00 00 00 00 00 00 00 50 45 00 00 4C 01 04 00  ........PE..L.
04CD00F0  21 88 C6 41 00 00 00 00 00 00 00 00 E0 00 0E 21  !埰A........?!
04CD0100  0B 01 07 0A 00 A0 00 00 00 90 00 00 00 00 00 00  ..?..?.....
04CD0110  8C 62 00 00 00 10 00 00 00 B0 00 00 00 00 00 10  宐......?....
          [OEP      ]
         

【跟踪Apex线程的通讯--得到“APex的加密算法”】
  
  参数只有Ecx:   SendbufAddr=[Ecx+0D50]
190E7C00    55                       push    ebp
190E7C01    8BEC                     mov     ebp, esp
190E7C03    83EC 08                  sub     esp, 8
190E7C06    53                       push    ebx
190E7C07    56                       push    esi
190E7C08    57                       push    edi
190E7C09    8BF1                     mov     esi, ecx
190E7C0B    C645 FF 00               mov     byte ptr [ebp-1], 0
190E7C0F    50                       push    eax
190E7C10    E8 00000000              call    190E7C15
190E7C15    58                       pop     eax
190E7C16    8945 F8                  mov     dword ptr [ebp-8], eax
190E7C19    58                       pop     eax
190E7C1A    0FB645 FB                movzx   eax, byte ptr [ebp-5]
190E7C1E    8B1D F0C01219            mov     ebx, dword ptr [1912C0F0]        ; KERNEL32.WaitForSingleObject
190E7C24    8BC8                     mov     ecx, eax
190E7C26    0FAFC8                   imul    ecx, eax
190E7C29    81C1 E9000000            add     ecx, 0E9
190E7C2F    898E 74110000            mov     dword ptr [esi+1174], ecx
190E7C35    C705 3FF01519 00000000   mov     dword ptr [1915F03F], 0
190E7C3F    8DBE 640F0000            lea     edi, dword ptr [esi+F64]
190E7C45    8B15 3FF01519            mov     edx, dword ptr [1915F03F]
190E7C4B    42                       inc     edx
190E7C4C    8BCE                     mov     ecx, esi
190E7C4E    8915 3FF01519            mov     dword ptr [1915F03F], edx
190E7C54    C605 43F01519 0B         mov     byte ptr [1915F043], 0B
190E7C5B    E8 8016FFFF              call    190D92E0
190E7C60    8BCE                     mov     ecx, esi
190E7C62    C605 43F01519 0C         mov     byte ptr [1915F043], 0C
190E7C69    E8 F29AFEFF              call    190D1760                         ;加密;ApexEncryptCall
190E7C6E    8BCE                     mov     ecx, esi
190E7C70    C605 43F01519 0D         mov     byte ptr [1915F043], 0D
190E7C77    E8 24BCFFFF              call    190E38A0                         ;Sendbuf; ApexSendbuf_1; 最终调用 Send4500 ;0DE824BCFFFF85C0
190E7C7C    85C0                     test    eax, eax
190E7C7E    7D 04                    jge     short 190E7C84
190E7C80    C645 FF 01               mov     byte ptr [ebp-1], 1
190E7C84    57                       push    edi
190E7C85    C605 43F01519 0E         mov     byte ptr [1915F043], 0E
190E7C8C    C745 F8 00000000         mov     dword ptr [ebp-8], 0
190E7C93    FF15 9CC01219            call    dword ptr [1912C09C]             ; ntdll.RtlEnterCriticalSection

【APEX通信数据的加密——解密的Call】

  因为apex和server的通讯协议的加密算法,不是用的游戏本事的加密算法。而是apex自己的加密算法。
4个参数:
                0012FC64   036C0C64  结果的长度         036C0C64  06 00 00 00
                0012FC68   00000006  原始长度
                0012FC6C   036D8250  Srcbuf                   036D8250  01 07 F9 F6 90 A0
                0012FC70   036D8250  Destbuf                  036D8250  01 07 F9 F6 90 A0  

说明:加密,解密都使用这个Call。这个Call的上层就可以找到Hook的地址。
00A89F80    55                              push    ebp                                       ; 封包数据加密_解密
00A89F81    53                              push    ebx
00A89F82    56                              push    esi
00A89F83    57                              push    edi
00A89F84    8B7C24 14                       mov     edi, dword ptr [esp+14]
00A89F88    8B5424 18                       mov     edx, dword ptr [esp+18]
00A89F8C    8B7424 1C                       mov     esi, dword ptr [esp+1C]
00A89F90    8B6C24 20                       mov     ebp, dword ptr [esp+20]
00A89F94    31C0                            xor     eax, eax
00A89F96    31DB                            xor     ebx, ebx
00A89F98    81FA 00000000                   cmp     edx, 0
00A89F9E    0F84 63010000                   je      00A8A107
00A89FA4    8A07                            mov     al, byte ptr [edi]
00A89FA6    8A5F 04                         mov     bl, byte ptr [edi+4]
00A89FA9    81C7 08000000                   add     edi, 8
00A89FAF    8D0C16                          lea     ecx, dword ptr [esi+edx]
00A89FB2    29F5                            sub     ebp, esi
00A89FB4    894C24 18                       mov     dword ptr [esp+18], ecx
00A89FB8    FEC0                            inc     al
00A89FBA    81BF 00010000 FFFFFFFF          cmp     dword ptr [edi+100], -1
00A89FC4    0F84 06010000                   je      00A8A0D0
00A89FCA    8B0C87                          mov     ecx, dword ptr [edi+eax*4]
00A89FCD    81E2 FCFFFFFF                   and     edx, FFFFFFFC
00A89FD3    0F84 B7000000                   je      00A8A090
00A89FD9    8D5416 FC                       lea     edx, dword ptr [esi+edx-4]
00A89FDD    895424 1C                       mov     dword ptr [esp+1C], edx
00A89FE1    896C24 20                       mov     dword ptr [esp+20], ebp
00A89FF0    00CB                            add     bl, cl
00A89FF2    8B149F                          mov     edx, dword ptr [edi+ebx*4]
00A89FF5    890C9F                          mov     dword ptr [edi+ebx*4], ecx
00A89FF8    891487                          mov     dword ptr [edi+eax*4], edx
00A89FFB    01CA                            add     edx, ecx
00A89FFD    FEC0                            inc     al
00A89FFF    81E2 FF000000                   and     edx, 0FF
00A8A005    8B0C87                          mov     ecx, dword ptr [edi+eax*4]
00A8A008    8B2C97                          mov     ebp, dword ptr [edi+edx*4]
00A8A00B    00CB                            add     bl, cl
00A8A00D    8B149F                          mov     edx, dword ptr [edi+ebx*4]
00A8A010    890C9F                          mov     dword ptr [edi+ebx*4], ecx
00A8A013    891487                          mov     dword ptr [edi+eax*4], edx
00A8A016    01CA                            add     edx, ecx
00A8A018    FEC0                            inc     al
00A8A01A    81E2 FF000000                   and     edx, 0FF
00A8A020    C1CD 08                         ror     ebp, 8
00A8A023    8B0C87                          mov     ecx, dword ptr [edi+eax*4]
00A8A026    0B2C97                          or      ebp, dword ptr [edi+edx*4]
00A8A029    00CB                            add     bl, cl
00A8A02B    8B149F                          mov     edx, dword ptr [edi+ebx*4]
00A8A02E    890C9F                          mov     dword ptr [edi+ebx*4], ecx
00A8A031    891487                          mov     dword ptr [edi+eax*4], edx
00A8A034    01CA                            add     edx, ecx
00A8A036    FEC0                            inc     al
00A8A038    81E2 FF000000                   and     edx, 0FF
00A8A03E    C1CD 08                         ror     ebp, 8
00A8A041    8B0C87                          mov     ecx, dword ptr [edi+eax*4]
00A8A044    0B2C97                          or      ebp, dword ptr [edi+edx*4]
00A8A047    00CB                            add     bl, cl
00A8A049    8B149F                          mov     edx, dword ptr [edi+ebx*4]
00A8A04C    890C9F                          mov     dword ptr [edi+ebx*4], ecx
00A8A04F    891487                          mov     dword ptr [edi+eax*4], edx
00A8A052    01CA                            add     edx, ecx
00A8A054    FEC0                            inc     al
00A8A056    81E2 FF000000                   and     edx, 0FF
00A8A05C    C1CD 08                         ror     ebp, 8
00A8A05F    8B4C24 20                       mov     ecx, dword ptr [esp+20]
00A8A063    0B2C97                          or      ebp, dword ptr [edi+edx*4]
00A8A066    C1CD 08                         ror     ebp, 8
00A8A069    332E                            xor     ebp, dword ptr [esi]
00A8A06B    3B7424 1C                       cmp     esi, dword ptr [esp+1C]
00A8A06F    892C31                          mov     dword ptr [ecx+esi], ebp                  ; 关键的:Crypt结果存放地址,封包数据解密
00A8A072    8D76 04                         lea     esi, dword ptr [esi+4]
00A8A075    8B0C87                          mov     ecx, dword ptr [edi+eax*4]
00A8A078  ^ 0F82 72FFFFFF                   jb      00A89FF0
00A8A07E    3B7424 18                       cmp     esi, dword ptr [esp+18]
00A8A082    0F84 77000000                   je      00A8A0FF
00A8A088    8B6C24 20                       mov     ebp, dword ptr [esp+20]
00A8A090    00CB                            add     bl, cl
00A8A092    8B149F                          mov     edx, dword ptr [edi+ebx*4]
00A8A095    890C9F                          mov     dword ptr [edi+ebx*4], ecx
00A8A098    891487                          mov     dword ptr [edi+eax*4], edx
00A8A09B    01CA                            add     edx, ecx
00A8A09D    FEC0                            inc     al
00A8A09F    81E2 FF000000                   and     edx, 0FF
00A8A0A5    8B1497                          mov     edx, dword ptr [edi+edx*4]
00A8A0A8    3216                            xor     dl, byte ptr [esi]
00A8A0AA    8D76 01                         lea     esi, dword ptr [esi+1]
00A8A0AD    8B0C87                          mov     ecx, dword ptr [edi+eax*4]
00A8A0B0    3B7424 18                       cmp     esi, dword ptr [esp+18]
00A8A0B4    885435 FF                       mov     byte ptr [ebp+esi-1], dl
00A8A0B8  ^ 0F82 D2FFFFFF                   jb      00A8A090
00A8A0BE    E9 3C000000                     jmp     00A8A0FF
00A8A0D0    0FB60C07                        movzx   ecx, byte ptr [edi+eax]
00A8A0D4    00CB                            add     bl, cl
00A8A0D6    0FB6141F                        movzx   edx, byte ptr [edi+ebx]
00A8A0DA    880C1F                          mov     byte ptr [edi+ebx], cl
00A8A0DD    881407                          mov     byte ptr [edi+eax], dl
00A8A0E0    00CA                            add     dl, cl
00A8A0E2    0FB61417                        movzx   edx, byte ptr [edi+edx]
00A8A0E6    04 01                           add     al, 1
00A8A0E8    3216                            xor     dl, byte ptr [esi]
00A8A0EA    8D76 01                         lea     esi, dword ptr [esi+1]
00A8A0ED    0FB60C07                        movzx   ecx, byte ptr [edi+eax]
00A8A0F1    3B7424 18                       cmp     esi, dword ptr [esp+18]
00A8A0F5    885435 FF                       mov     byte ptr [ebp+esi-1], dl
00A8A0F9  ^ 0F82 D5FFFFFF                   jb      00A8A0D4
00A8A0FF    FEC8                            dec     al
00A8A101    885F FC                         mov     byte ptr [edi-4], bl
00A8A104    8847 F8                         mov     byte ptr [edi-8], al
00A8A107    5F                              pop     edi
00A8A108    5E                              pop     esi
00A8A109    5B                              pop     ebx
00A8A10A    5D                              pop     ebp
00A8A10B    C3                              retn
00A8A10C    90                              nop

【关于Apex的心跳包】

S<=2D00(0002)Ret=0087ABB5 Ecx=04CEEA2C 19:59:46
S<=4500013C007DC3EB6AE459F805996C6C4B074C7FB038351FE19E7D3DB474B6FBCBA17ED406552C2D6B29C429D0FBE32F9B217378064578AF715C93DCFD59B6DC39(0041)Ret=00592038 Ecx=040C84EC 19:59:51
S<=02000800666F736F6D3030311200C1F7A4A7B4CB28A4C0AC79373AB0C6A5BB29090073686573686F753031000000000D003030312E3031302E30312E313000000F0050432D323031303031313350504453BC20832200000B0057696E58502D33326269743408(0066)Ret=00569094 Ecx=040C84EC 20:00:03
S<=2D00(0002)Ret=0087ABB5 Ecx=04CEEA2C 20:00:16
S<=4500013700E161B7FED559BE25A6A6CAD0D96F43D641ED854CE28335ACBF5A6F78376C78B9C3B4A8C06EF935DE6EAF81CF535101543DF9782B2943A8(003C)Ret=00592038 Ecx=040C84EC 20:00:24
S<=2D00(0002)Ret=0087ABB5 Ecx=04CEEA2C 20:00:46
S<=45000143009906473CD5591E79719BDC607755B1F4D341075A859BC5624F089D6172086418F207AB562228B36DDEB26BE2FEE58518548CC3E2D9B27358B203D668AEE4C68337E1C9(0048)Ret=00592038 Ecx=040C84EC 20:00:57
S<=02000800666F736F6D3030311200C1F7A4A7B4CB28A4C0AC79373AB0C6A5BB29090073686573686F753031000000000D003030312E3031302E30312E313000000F0050432D323031303031313350504453BC200C0000000B0057696E58502D33326269743408(0066)Ret=00569094 Ecx=040C84EC 20:01:03
S<=2D00(0002)Ret=0087ABB5 Ecx=04CEEA2C 20:01:16
S<=450001390021F64A63C859A64E3020040F39808301B8B67ED189FB24B876BFF222A1B670B537CC0D6D08BE7720847BFFBB17659A53675F8736B83DBA89E7(003E)Ret=00592038 Ecx=040C84EC 20:01:36
S<=2D00(0002)Ret=0087ABB5 Ecx=04CEEA2C 20:01:46
  每30秒一次,不发,发错,多开,都会导致断线。
  
  把S<=4500的数据包,通过上面的Apex协议的解密算法可以得到:
                          11 11 00 0100 0000 7573657233322E646C6C00         user32.dll
                                13 13 00 0200 0000 6B65726E656C33322E646C6C00     kernel32.dll
                                0A 0A 00 6600 0100 01004E04
                                0A 0A 00 6700 0100 01004F04
                                0A 0A 00 6800 0100 01005004
                                0A 0A 00 6A00 0100 01005204
                                0A 0A 00 6B00 0100 01005304
                                0A 0A 00 DE00 0100 0200C604
                                0A 0A 00 DF00 0100 0200C704
                                12 12 00 4E04 0000 46696E6457696E646F774100         FindWindowA
                                10 10 00 4F04 0000 47657457696E646F7700             GetWindow
                                13 13 00 5004 0000 476574546F7057696E646F7700       GetTopWindow
                                14 14 00 5204 0000 476574436C6173734E616D654100     GetClassNameA
                                15 15 00 5304 0000 47657457696E646F774C6F6E674100   GetWindowLongA
                                13 13 00 C604 0000 4C6F61644C6962726172794100       LoadLibraryA
                                15 15 00 C704 0000 47657450726F634164647265737300   GetProcAddress
                               
  可以看到,乱七八糟的检测了一大堆东西啊。
  
  一个一个的Call去搞定,太累了,而且,关键地方加了vm,还原起来有点累。
  
  写脱机,怎么办?
  :一台机器开一个游戏Client,只是开起来,写dll注入进去,主动启动Apex,
    然后让dll一直不停的把关于apex通讯部分的协议抓出来,然后发给脱机,
    脱机只需要接受数据,并发给Server。
    这下,vm,和多开都不重要了。
   
   
  
【最后,打怪的协议分析】
        S<=7000 F823FFFF(0006)Ret=00A8DF15 18:47:28
          点选怪物
        R=>5C01 F823FFFF CB0D6C43 CFBD8242 6A00000000(0013) 18:47:28
          怪物坐标
        R=>AB01 F823FFFF 0000000000(000B) 18:47:28
       
        -射手
        S<=DE00 F823FFFF 00(0007)Ret=00A8DF15 18:47:40
          射手物理攻击
          S<=DE00 F823FFFF 00(0007)Ret=00A8DF15 18:47:40
            10LV以下 射手物理攻击
          S<=DD00 F823FFFF 00(0007)Ret=00A8DF15 18:47:40
            10LV以上 射手物理攻击
            
        R=>6701    3DCBE60E F823FFFF 80000000 01000000 8E050000(0016) 18:47:40
          伤害信息 AtkID    DeAtkID  Hurt    玩家对怪物伤害         
        R=>6801 F823FFFF 0001 3DCBE60E(000C) 18:47:41
        R=>4501 F823FFFF 0000 040001(000B) 18:47:41
        R=>4501 3DCBE60E 0000 04011F(000B) 18:47:41
        R=>4F01 F823FFFF 0000 9A000000(000C) 18:47:41
          怪物CurHP           CurHP
        R=>6701 3DCBE60E F823FFFF 8000000001000000FFFFFFFF(0016) 18:47:41
        R=>AB01 F823FFFF 00 3DCBE60E(000B) 18:47:41
        S<=36000000(0004)Ret=00A8DF15 18:47:41
        S<=DE00 F823FFFF00(0007)Ret=00A8DF15 18:47:41
        R=>6701 3DCBE60E F823FFFF 96000000 01000000 8E050000(0016) 18:47:41
        R=>4F01 F823FFFF 0000 04000000(000C) 18:47:42
        R=>6701 3DCBE60E F823FFFF 9600000001000000FFFFFFFF(0016) 18:47:42
        R=>4501 F823FFFF 0000140002(000B) 18:47:42
        R=>4501 F823FFFF 0000140003(000B) 18:47:42
        R=>4F01 F823FFFF 210058020000(000C) 18:47:42
        R=>4501 F823FFFF 0000140004(000B) 18:47:42
        R=>6701    F823FFFF 3DCBE60E 05000000 01000000FD030000(0016) 18:47:42
          伤害信息 AtkID    DeAtkID  Hurt    怪物对玩家伤害      
        S<=DE00 F823FFFF00(0007)Ret=00A8DF15 18:47:42
        R=>6701 3DCBE60E F823FFFF 93000000010000008D050000(0016) 18:47:42
        R=>4F01 3DCBE60E 0000 F8000000(000C) 18:47:42
          玩家当前HP          CurHP
        R=>6701 F823FFFF 3DCBE60E 0500000001000000FFFFFFFF(0016) 18:47:42
        R=>4F01 F823FFFF 000000000000(000C) 18:47:43
          怪物死亡       CurHP=0
        R=>6701 3DCBE60E F823FFFF 9300000005000000FFFFFFFF(0016) 18:47:43
        R=>4201 F823FFFF 3DCBE60E00(000B) 18:47:43
        S<=1A000000000002(0007)Ret=00A8DF15 18:47:43
        战斗结束
        S<=700000000000(0006)Ret=00A8DF15 18:47:43
        R=>4501 3DCBE60E0000000120(000B) 18:47:43
        R=>AB01000000000000000000(000B) 18:47:43
        S<=36000000(0004)Ret=00A8DF15 18:47:43
        R=>4F01 3DCBE60E 0500 F4000000(000C) 18:47:43
          玩家经验
        R=>2B01 C803010038(0007) 18:47:43
        R=>4F01 3DCBE60E 0200 41000000(000C) 18:47:43
          玩家金币
        R=>2B01 0E0004003120BBC9(000A) 18:47:43
        R=>4F01 3DCBE60E 0000 FD000000(000C) 18:47:45
         **********技能攻击-射手***************************************
        S<=7000 04DBFFFF(0006)Ret=00A8DF15 19:20:34
          点选怪
        S<=1E00 A1C4 04DBFFFF(0008)Ret=00A8DF15 19:20:34
          技能攻击
        R=>5C01 04DBFFFF 65D96F43 08F38042 6A00000000(0013) 19:20:34
          怪物坐标
        R=>AB01 04DBFFFF0000000000(000B) 19:20:34
        R=>5001 A1C4000000000 4DBFFFF 01(000D) 19:20:34
        R=>5701 0E000000 04DBFFFF A1C4 07000000 65D96F43 08F38042 00000000 CC03 00000000000000(0025) 19:20:34
        S<=DE00 04DBFFFF00(0007)Ret=00A8DF15 19:20:34
        R=>6701 3DCBE60E 04DBFFFF 93000000 010000008E050000(0016) 19:20:34
          伤害
        R=>9F01 3DCBE60E 0100 FBFFFFFF(000C) 19:20:35
        R=>6801 04DBFFFF 0001 3DCBE60E(000C) 19:20:35
        R=>4F01 04DBFFFF 0000 8E000000(000C) 19:20:35
          怪物CurHP
        R=>4F01 04DBFFFF 1300 38000000(000C) 19:20:35
        R=>4A01 A1C4 04DBFFFF 3DCBE60E 8C0000000100010000(0015) 19:20:35
           技能伤害效果
           R=>4A01 A1C4   04DBFFFF 3DCBE60E 8C000000 0100010000(0015) 19:20:35
                   技能ID 怪物ID   自己ID   伤害值
        R=>4F01 04DBFFFF 21008C000000(000C) 19:20:35
        R=>3C01 04DBFFFF B0C43200000002010000000000010000000000(0019) 19:20:35
        R=>4F01 3DCBE60E 2D00 FD020000(000C) 19:20:35
        R=>AB01 04DBFFFF 00 3DCBE60E(000B) 19:20:35
        S<=36000000(0004)Ret=00A8DF15 19:20:35
        R=>4F01 04DBFFFF 000000000000(000C) 19:20:35
          怪物CurHP=0
        R=>6701 3DCBE60E 04DBFFFF 9300000005000000FFFFFFFF(0016) 19:20:35
        R=>4201 04DBFFFF 3DCBE60E00(000B) 19:20:35
        R=>4F01 04DBFFFF 2100C8000000(000C) 19:20:35
        R=>3B01 04DBFFFF B0C4030000000000000000(0011) 19:20:35
        S<=1A000000000002(0007)Ret=00A8DF15 19:20:35
        S<=700000000000(0006)Ret=00A8DF15 19:20:35
        R=>AB01000000000000000000(000B) 19:20:35
        S<=36000000(0004)Ret=00A8DF15 19:20:35
        R=>4F01 3DCBE60E 0500 14010000(000C) 19:20:36
        R=>2B01 C803010038(0007) 19:20:36
        R=>4F01 3DCBE60E 0100 03010000(000C) 19:20:38
          玩家当前CurMP
       
        **********技能攻击-力士***************************************
        S<=1E00 49C5 5424FDFF(0008)Ret=00875925 Ecx=1A68BFAC
          力士技能攻击
        S<=D0005424FDFF00(0007)Ret=00875925 Ecx=1A68BFAC
          力士物理攻击
       
        **********技能攻击-武者***************************************
        S<=1E0051C3C152FDFF(0008)Ret=00875925 Ecx=1A68BF9C
        S<=36000000(0004)Ret=00875925 Ecx=1A68BF9C
        S<=DE00C152FDFF00(0007)Ret=00875925 Ecx=1A68BF9C
       
        **********技能攻击-法师***************************************
        S<=1E00F9C3BD52FCFF(0008)Ret=00875925 Ecx=1324849C
        S<=DE00BD52FCFF00(0007)Ret=00875925 Ecx=1324849C
       
        **********技能攻击-阴阳师***************************************
        S<=DE0047EAFCFF00(0007)Ret=00875925 Ecx=1A76289C
          物理攻击
        S<=1E00F1C51260FCFF(0008)Ret=00875925 Ecx=1A76289C
          技能攻击  
        S<=0700 05C6 B7B7F343 4AEA0344(000C)Ret=00875925 Ecx=1A76289C
          加血
          
        怪物NPC出现
        R=>3901 9992C988 C7C3008320F94321380844F90FC93F000000000500000000000041020A000000FEFFFFFF02000000(002E)
          NPC出现
        R=>5C01 9992C988 8320F943 21380844 6A00000000(0013)
          NPC坐标        498.25   544.87
        R=>9D01 9992C988 241F    0E22    07483E00000000(0011)
          NPC坐标        498.25  544.875
        R=>AB01 9992C988 0000000000(000B)
        R=>5C01 9992C988 8320F943 21380844 6A00000000(0013)
          NPC坐标
        R=>9D01 9992C988 241F 0E22 07483E00000000(0011)
          NPC坐标
        S<=2100 9992C988(0006)Ret=00875925 Ecx=04E673EC
          CallNPC
       
          R=>3901 9992C988 C7C3 00 8320F943 21380844 F90FC93F 000000000500000000 0000                                 4102 0A000000 FEFFFFFF02000000(002E)
                R=>3901 105FFFFF D9D6 00 CE6C4B43 17811D42 E4CB9640 000000400A00000000 0800A5D0B3A5AAE1BAEB                 5502 1A010000 00000000 38000000 FFFFFFFF 03000000(003E) 16:59:06
                R=>3901 0F97FFFF D9D6 00 8A344E43 A7FFEA41 E43C8240 000000400A00000000 0800A5D0B3A5AAE1BAEB                 5502 1A010000 00000000 38000000 FFFFFFFF03000000(003E) 16:59:07
                R=>3901 E4A4FEFF D9D6 00 79584B43 51D46742 AE7C9F40 000000400A00000000 0800A5D0B3A5AAE1BAEB                 5502 1A010000 00000000 38000000 FFFFFFFF03000000(003E) 16:59:10
                R=>3901 0F97FFFF D9D6 00 58244D43 AD0EEC41 A8173F40 000000400A00000000 0800A5D0B3A5AAE1BAEB                 5502 1A010000 00000000 38000000 FFFFFFFF03000000(003E) 16:59:15
                R=>3901 E4A4FEFF D9D6 00 C5904B43 BBDF6142 8086A140 000000400A00000000 0800A5D0B3A5AAE1BAEB                 5502 1A010000 00000000 38000000 FFFFFFFF03000000(003E) 16:59:20
                R=>3901 0F97FFFF D9D6 00 F5034E43 A67FEC41 72FF6D40 000000400A00000000 0800A5D0B3A5AAE1BAEB                 5502 1A010000 00000000 38000000 FFFFFFFF03000000(003E) 16:59:21
                R=>3901 1183FFFF E2D6 00 29944B43 68239C42 9F1B9140 000000400A00000000 1000B941A5D0AF7DC361AACCA144A4D7A4D7 5502 CA080000 00000000 C2010000 FFFFFFFF03000000(0046) 16:59:22
                R=>3901 E4A4FEFF D9D6 00 3D5E4B43 85CF6442 FAD97140 000000400A00000000 0800A5D0B3A5AAE1BAEB                 5502 1A010000 00000000 38000000 FFFFFFFF03000000(003E) 16:59:27
                R=>3901 0F97FFFF D9D6 00 B3055043 9CE9EA41 93E97D40 000000400A00000000 0800A5D0B3A5AAE1BAEB                 5502 1A010000 00000000 38000000 FFFFFFFF03000000(003E) 16:59:41
                        ID               X        Y        Z                               Name                                  HP                MP
        R=>3901   7D14FDFF E6D6 00 CC92B643 4796E443 E4CB9640 000000400A00000000 0000                                 5502 CA1E00000000000028060000FFFFFFFF03000000(0036)
          Boss    可以攻击                                                                                                         
        R=>3901   61C5FFFF E8D6 04 1596E843 2CDFD343 DE8EFA3F 000048410A00001400 0000                                 5702 A23A00008458000000000000B4110000FFFFFFFF03000000(003A)
        R=>3901   99B5FEFF E8D6 00 69D6E043 C3EED143 3905AB40 000000400A00000000 0A00C2CEB34DB950A661C37E             5502 8458000000000000B4110000FFFFFFFF07000000(0040)
          boss_NPC 任务Boss 可以攻击                                                                                               
        R=>3901   C4FBFFFF FCDE AB 90A3E543 3360D643 2055AD40 0000C0400A00001400 0000                                 5502 B3110000000000008A030000FFFFFFFF 02000000(0036)
        R=>3901   C3FBFFFF FCDE 67 EF4FE543 D0F8D543 320CA940 0000C0400A00001400 0000                                 5502 B3110000000000008A030000FFFFFFFF02000000(0036)
        R=>3901   BCFBFFFF FCDE 8B 67FDE443 1273D243 D2BE8A40 0000C0400A00001400 0000                                 5502 B3110000000000008A030000FFFFFFFF02000000(0036)
        R=>3901   BEFBFFFF FCDE 04 89D1E443 DBFFD243 14848F40 0000C0400A00001400 0000                                 5502 B3110000000000008A030000FFFFFFFF02000000(0036)
          NPC      任务怪物,不可攻击
          
        R=>3901   4E9DFCFF 45D8 00 D2924243 90D9C343 D58B7240 000000400A00000000 0000                                 5502 97200000 0000000085060000FFFFFFFF03000000(0036)
          普通怪物 可以攻击
2013-6-22 01:11
0
雪    币: 82
活跃值: (290)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
膜拜一下,
2013-6-22 01:22
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
谢谢大神~~~~~~~~~
2013-6-22 01:28
0
雪    币: 114
活跃值: (180)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
强大。。
2013-6-22 01:43
0
雪    币: 1839
活跃值: (295)
能力值: ( LV9,RANK:370 )
在线值:
发帖
回帖
粉丝
6
都快2点了,还有这么多人,洗洗睡吧,兄弟们。哈哈
2013-6-22 01:45
0
雪    币: 7
活跃值: (32)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
跪拜了!!!
2013-6-22 07:23
0
雪    币: 882
活跃值: (1441)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
苦逼。。。
2013-6-22 09:33
0
雪    币: 541
活跃值: (654)
能力值: ( LV12,RANK:250 )
在线值:
发帖
回帖
粉丝
9
第一次看脱机挂的写作方法,膜拜先,也是第一次看到发Apex研究的帖子。
2013-6-22 09:53
0
雪    币: 882
活跃值: (1441)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
一台机器开一个游戏Client,只是开起来,写dll注入进去,主动启动Apex,
    然后让dll一直不停的把关于apex通讯部分的协议抓出来,然后发给脱机,
    脱机只需要接受数据,并发给Server。
    这下,vm,和多开都不重要了。

这个思路,不错,不过在我的游戏保护中,已经行不通了...
2013-6-22 10:44
0
雪    币: 11123
活跃值: (17661)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
看不懂,纯路过帮顶
2013-6-22 11:24
0
雪    币: 81
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
我也不懂 ,,路过mark  等以后回来再看
2013-6-22 11:54
0
雪    币: 257
活跃值: (67)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
13
非常强大啊,谢谢分享,这个一定要顶...
2013-6-22 12:01
0
雪    币: 16
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
留名 学习  谢谢分享!
2013-6-22 12:31
0
雪    币: 328
活跃值: (154)
能力值: ( LV12,RANK:310 )
在线值:
发帖
回帖
粉丝
15
膜拜,膜拜,感谢大神,反调试,好东东
2013-6-22 23:55
0
雪    币: 100
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
mark一下,白天再看
2013-6-23 01:53
0
雪    币: 8835
活跃值: (2404)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
17
apex很少有人研究。
2013-6-23 09:49
0
雪    币: 97697
活跃值: (200859)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
18
Thanks for share.
2013-6-23 10:34
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
太好了,很好的学习资料
2013-6-23 10:41
0
雪    币: 137
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
蛮不错的
2013-6-23 10:55
0
雪    币: 492
活跃值: (51)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
21
当年这个保护害苦我了
2013-6-23 11:16
0
雪    币: 437
活跃值: (78)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
好东西,收藏
2013-6-23 20:07
0
雪    币: 29
活跃值: (42)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
谢谢分享
2013-6-24 10:35
0
雪    币: 6092
活跃值: (744)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
24
很强,支持这个帖子
2013-6-24 12:03
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
apex 大牛经常说什么这个容易,不过分析起来麻烦
但是一直找不到有关资料,今天终于看到最最最最最详细的一篇文章了
谢谢F大大~
2013-6-26 14:53
0
游客
登录 | 注册 方可回帖
返回
//