首页
社区
课程
招聘
[求助]一次失败的找数据之旅。
发表于: 2013-8-8 23:48 7589

[求助]一次失败的找数据之旅。

2013-8-8 23:48
7589
以前,找游戏数据,都是从结构出发,基本一找就找到了。但是这次接手了一个新游戏。没有结构。。或者是我太菜了。或者是人家给加密了?

放出我分析了3天的一些斗不能称之为是成果的东西。另外希望大牛给指点一下。。。。介到底是个嘛玩意?

1029A5A0      A1 9880A110   MOV EAX,DWORD PTR DS:[10A18098]
1029A5A5  |.  8B88 8C000000 MOV ECX,DWORD PTR DS:[EAX+8C]                   ;  ([z+n*2c]+1)*8
1029A5AB  |.  8B90 94000000 MOV EDX,DWORD PTR DS:[EAX+94]                   ;  z=eax+94
1029A5B1  |.  890D ECA7A210 MOV DWORD PTR DS:[10A2A7EC],ECX                 ;  n=eax+8c
1029A5B7  |.  6BC9 2C       IMUL ECX,ECX,2C                                 ;  m=165d5bac
1029A5BA  |.  03CA          ADD ECX,EDX                                     ;  n=2
1029A5BC  |.  56            PUSH ESI                                        ;  z=1630db00
1029A5BD  |.  8BB0 90000000 MOV ESI,DWORD PTR DS:[EAX+90]
1029A5C3  |.  890D F8A7A210 MOV DWORD PTR DS:[10A2A7F8],ECX
1029A5C9  |.  8B48 38       MOV ECX,DWORD PTR DS:[EAX+38]
1029A5CC  |.  890D F4A7A210 MOV DWORD PTR DS:[10A2A7F4],ECX                 ;  [z+n*2c]+p1=x  m+x*8=y  if [y+4]=p2 eax=y
1029A5D2  |.  8B48 6C       MOV ECX,DWORD PTR DS:[EAX+6C]
1029A5D5  |.  8915 F0A7A210 MOV DWORD PTR DS:[10A2A7F0],EDX
1029A5DB  |.  8B50 68       MOV EDX,DWORD PTR DS:[EAX+68]
1029A5DE  |.  8915 802B8210 MOV DWORD PTR DS:[10822B80],EDX
1029A5E4  |.  8B50 70       MOV EDX,DWORD PTR DS:[EAX+70]
1029A5E7  |.  890D 7C2B8210 MOV DWORD PTR DS:[10822B7C],ECX
1029A5ED  |.  8B48 78       MOV ECX,DWORD PTR DS:[EAX+78]
1029A5F0  |.  8915 38188210 MOV DWORD PTR DS:[10821838],EDX
1029A5F6  |.  8B90 80000000 MOV EDX,DWORD PTR DS:[EAX+80]                   ;  m=eax+80
1029A5FC  |.  8B40 7C       MOV EAX,DWORD PTR DS:[EAX+7C]
1029A5FF  |.  8935 E8A7A210 MOV DWORD PTR DS:[10A2A7E8],ESI
1029A605  |.  890D FCA7A210 MOV DWORD PTR DS:[10A2A7FC],ECX
1029A60B  |.  8915 E4A7A210 MOV DWORD PTR DS:[10A2A7E4],EDX                 ;  [10a2a7e4]=m   [10a2a7ec]=n [10a2a7f0]=z
1029A611  |.  A3 E0A7A210   MOV DWORD PTR DS:[10A2A7E0],EAX
1029A616  |.  5E            POP ESI
1029A617  \.  C3            RETN



游戏官方用10A18098  这地方的结构体初始化了10A2A7E4 这里的结构体中的一些数据。

在10A2A7E4 中比较重要的几个数据如下所示,
[10a2a7e4]=m     [10a2a7ec]=n     [10a2a7f0]=z

102CDF2D   > \56            PUSH ESI                                        ;  161c09a8
102CDF2E   .  6A 04         PUSH 4                                          ;  [10a2a7e4]=m   [10a2a7ec]=n [10a2a7f0]=z
102CDF30   .  6A 00         PUSH 0
102CDF32   .  E8 29C9FDFF   CALL CXCentau.102AA860                          ;  [z+n*2c]+p1=x  m+x*8=y  if [y+4]=p2 eax=y
102CDF37   .  6A 07         PUSH 7                                          ;  1562cd2c b 1546dbf0  399
102CDF39   .  6A 01         PUSH 1
102CDF3B   .  8BF0          MOV ESI,EAX
102CDF3D   .  E8 1EC9FDFF   CALL CXCentau.102AA860

然后,游戏用 func_102aa860(0,4) 返回了一个指针叫point04;用 func_102aa860(1,7) 返回了一个指针叫point17;

func_102aa860代码如下:

102AA860   $  A1 ECA7A210   MOV EAX,DWORD PTR DS:[10A2A7EC]                 ;  dword arg1=globe10a2a7ec
102AA865   .  85C0          TEST EAX,EAX                                    ;  if arg1==0
102AA867   .  56            PUSH ESI
102AA868   .  57            PUSH EDI
102AA869   .  74 0C         JE SHORT CXCentau.102AA877                      ;  goto a877
102AA86B   .  8B0D F0A7A210 MOV ECX,DWORD PTR DS:[10A2A7F0]                 ;  if arg1!=0 then
102AA871   .  6BC0 2C       IMUL EAX,EAX,2C                                 ;  dword arg2=globe10a2a7f0
102AA874   .  8B0408        MOV EAX,DWORD PTR DS:[EAX+ECX]                  ;  eax=arg1*2c
102AA877   >  8B7C24 0C     MOV EDI,DWORD PTR SS:[ESP+C]                    ;  dword param1
102AA87B   .  03C7          ADD EAX,EDI                                     ;  eax=arg1*2c+param1
102AA87D   .  3B05 FCA7A210 CMP EAX,DWORD PTR DS:[10A2A7FC]                 ;  if eax<globe10a2a7fc
102AA883   .  7C 51         JL SHORT CXCentau.102AA8D6
102AA885   .  3B05 E0A7A210 CMP EAX,DWORD PTR DS:[10A2A7E0]                 ;  if eax>= globe10a2a7e0
102AA88B   .  7D 49         JGE SHORT CXCentau.102AA8D6
102AA88D   .  8B15 F8A7A210 MOV EDX,DWORD PTR DS:[10A2A7F8]                 ;  if eax>globe10a2a7fc  <globe10a2a7e0
102AA893   .  3B7A 04       CMP EDI,DWORD PTR DS:[EDX+4]                    ;  dword arg2=globe10a2a7f8
102AA896   .  7D 3E         JGE SHORT CXCentau.102AA8D6                     ;  if param1>=globe10a2a7f8[4]
102AA898   .  8B0D E4A7A210 MOV ECX,DWORD PTR DS:[10A2A7E4]                 ;  if param1<globe10a2a7f8[4]
102AA89E   .  8B7424 10     MOV ESI,DWORD PTR SS:[ESP+10]                   ;  dword arg3=globe10a2a7e4
102AA8A2   .  8D0CC1        LEA ECX,DWORD PTR DS:[ECX+EAX*8]                ;  ecx=globe10a2a7e4+(arg1*2c+PARAM1)*8
102AA8A5   .  0FB641 04     MOVZX EAX,BYTE PTR DS:[ECX+4]
102AA8A9   .  3BC6          CMP EAX,ESI
102AA8AB   .  74 24         JE SHORT CXCentau.102AA8D1                      ;  ecx==poi10a2a7e4
102AA8AD   .  81FE FF000000 CMP ESI,0FF                                     ;  eax=poi10a2a7f0+poi10a2a7ec*2c
102AA8B3   .  74 1C         JE SHORT CXCentau.102AA8D1
102AA8B5   .  E8 06BDFFFF   CALL CXCentau.102A65C0                          ;  这个eax返回一些变量属性 比方说指针,映射,void之类的
102AA8BA   .  50            PUSH EAX
102AA8BB   .  8BC6          MOV EAX,ESI
102AA8BD   .  E8 FEBCFFFF   CALL CXCentau.102A65C0
102AA8C2   .  50            PUSH EAX
102AA8C3   .  83C7 01       ADD EDI,1
102AA8C6   .  57            PUSH EDI
102AA8C7   .  68 14CB6D10   PUSH CXCentau.106DCB14                          ;  ASCII "Bad type of argument %d, expected %s, got %s.\n"
102AA8CC   .  E8 1F3C0000   CALL CXCentau.102AE4F0                          ;  这地方报错
102AA8D1   >  5F            POP EDI
102AA8D2   .  8BC1          MOV EAX,ECX
102AA8D4   .  5E            POP ESI
102AA8D5   .  C3            RETN

不考虑函数中验证数据对错的地方,将这个函数换算成公式如下所示:

[10a2a7e4]=m   [10a2a7ec]=n [10a2a7f0]=z

[z+n*2c]+p1=x  m+x*8=y  if [y+4]=p2 then  eax=y

返回值==eax

然后。

102CDF42   .  8B36          MOV ESI,DWORD PTR DS:[ESI]
102CDF44   .  50            PUSH EAX                                        ;  eax==165102C8
102CDF45   .  E8 E619FEFF   CALL CXCentau.102AF930                          ;  这个函数,在eax指针指向的内容的结构体中。寻找与esi想匹配的
102CDF4A   .  83C4 14       ADD ESP,14                                      ;  具体实现方法:
102CDF4D   .  85C0          TEST EAX,EAX                                    ;  poieax+14 and esi+8 ==index
102CDF4F   .  5E            POP ESI                                         ;  poieax+20+index*4 ==base
102CDF50   .  75 17         JNZ SHORT CXCentau.102CDF69                     ;  在base的链表中,寻找与esi相匹配的。

这里通过point04与point17 两个指针,在函数102af930中进行了一些操作。

具体就是我后面注释的,然后在返回一个指针。。。这个指针,结构如下所示:

+0   1C06E51C  00000000
+4     1C06E520  159E7578
+8     1C06E524  00000004
+c     1C06E528  000001F9

其中,+0就是base的链表指针。+4是这个人物属性的一些说明的一个结构体指针。+8是一个我还不知道作用的flag吧。+c是这个人物属性的数值。

+4人物属性的说明的结构体指针:

159E7578  00000071
159E757C  0000000B
159E7580  00001C77
159E7584  159E758C  ASCII "hp"

+0 是一个index么?我也不知道什么作用。+4也不知道。+8是上面函数102AF930里面要用的两个数值进行与运算时用到的一个数值。+c不用我说了。这个属性的名称。HP。

102AF930 这个函数,也逆了一下。

102AF930  /$  51            PUSH ECX
102AF931  |.  837E 10 00    CMP DWORD PTR DS:[ESI+10],0
102AF935  |.  53            PUSH EBX
102AF936  |.  55            PUSH EBP
102AF937  |.  8B6C24 10     MOV EBP,DWORD PTR SS:[ESP+10]
102AF93B  |.  57            PUSH EDI
102AF93C  |.  75 07         JNZ SHORT CXCentau.102AF945
102AF93E  |.  8BC5          MOV EAX,EBP
102AF940  |.  5F            POP EDI
102AF941  |.  5D            POP EBP
102AF942  |.  5B            POP EBX
102AF943  |.  59            POP ECX
102AF944  |.  C3            RETN
102AF945  |>  F646 04 08    TEST BYTE PTR DS:[ESI+4],8
102AF949  |.  75 2E         JNZ SHORT CXCentau.102AF979
102AF94B  |.  8B3D 0C1A5A10 MOV EDI,DWORD PTR DS:[<&MSVCR80.strchr>]        ;  msvcr80.strchr
102AF951  |.  BB 10000000   MOV EBX,10                                      ;  查找字符串s中首次出现字符c的位置
102AF956  |>  845E 04       /TEST BYTE PTR DS:[ESI+4],BL
102AF959  |.  75 2F         |JNZ SHORT CXCentau.102AF98A
102AF95B  |.  8B46 0C       |MOV EAX,DWORD PTR DS:[ESI+C]
102AF95E  |.  6A 2F         |PUSH 2F                                        ;  字符/
102AF960  |.  50            |PUSH EAX
102AF961  |.  FFD7          |CALL EDI
102AF963  |.  83C4 08       |ADD ESP,8
102AF966  |.  85C0          |TEST EAX,EAX
102AF968  |.  75 06         |JNZ SHORT CXCentau.102AF970
102AF96A  |.  834E 04 08    |OR DWORD PTR DS:[ESI+4],8
102AF96E  |.  EB 03         |JMP SHORT CXCentau.102AF973
102AF970  |>  095E 04       |OR DWORD PTR DS:[ESI+4],EBX
102AF973  |>  F646 04 08    |TEST BYTE PTR DS:[ESI+4],8
102AF977  |.^ 74 DD         \JE SHORT CXCentau.102AF956
102AF979  |>  8B45 00       MOV EAX,DWORD PTR SS:[EBP]                      ;  ebp=21A11EB4
102AF97C  |.  56            PUSH ESI
102AF97D  |.  E8 7E8DFFFF   CALL CXCentau.102A8700                          ;  这个函数,在eax所在的链表中找esi想匹配的。
102AF982  |.  83C4 04       ADD ESP,4
102AF985  |.  5F            POP EDI
102AF986  |.  5D            POP EBP
102AF987  |.  5B            POP EBX
102AF988  |.  59            POP ECX
102AF989  |.  C3            RETN

函数中主要是调用了102a8700这个函数。。

102A8700  /$  53            PUSH EBX
102A8701  |.  55            PUSH EBP
102A8702  |.  8B6C24 0C     MOV EBP,DWORD PTR SS:[ESP+C]
102A8706  |.  56            PUSH ESI
102A8707  |.  8BF0          MOV ESI,EAX
102A8709  |.  8B5E 10       MOV EBX,DWORD PTR DS:[ESI+10]
102A870C  |.  83E3 01       AND EBX,1
102A870F  |.  57            PUSH EDI
102A8710  |.  74 1C         JE SHORT CXCentau.102A872E
102A8712  |.  0FB745 08     MOVZX EAX,WORD PTR SS:[EBP+8]                   ;  最上面的esi
102A8716  |.  66:85C0       TEST AX,AX
102A8719  |.  75 1B         JNZ SHORT CXCentau.102A8736
102A871B  |.  8B45 0C       MOV EAX,DWORD PTR SS:[EBP+C]
102A871E  |.  B9 20000000   MOV ECX,20
102A8723  |.  E8 18270400   CALL CXCentau.102EAE40
102A8728  |.  66:8945 08    MOV WORD PTR SS:[EBP+8],AX
102A872C  |.  EB 08         JMP SHORT CXCentau.102A8736
102A872E  |>  8B4D 0C       MOV ECX,DWORD PTR SS:[EBP+C]
102A8731  |.  E8 7A270400   CALL CXCentau.102EAEB0
102A8736  |>  8B4E 14       MOV ECX,DWORD PTR DS:[ESI+14]
102A8739  |.  8B56 20       MOV EDX,DWORD PTR DS:[ESI+20]                   ;  esi=2213417c
102A873C  |.  0FB7C0        MOVZX EAX,AX
102A873F  |.  23C8          AND ECX,EAX                                     ;  eax=e877
102A8741  |.  8B348A        MOV ESI,DWORD PTR DS:[EDX+ECX*4]                ;  edx=2E4D1C70
102A8744  |.  85F6          TEST ESI,ESI                                    ;  ecx=77 esi==223e99b4
102A8746  |.  74 2F         JE SHORT CXCentau.102A8777                      ;  if esi==0 break
102A8748  |>  807E 08 04    /CMP BYTE PTR DS:[ESI+8],4
102A874C  |.  75 23         |JNZ SHORT CXCentau.102A8771                    ;  if esi.esi+8 !=4 continu
102A874E  |.  8B7E 04       |MOV EDI,DWORD PTR DS:[ESI+4]
102A8751  |.  8BCF          |MOV ECX,EDI
102A8753  |.  8BD5          |MOV EDX,EBP
102A8755  |.  E8 A6350100   |CALL CXCentau.102BBD00
102A875A  |.  85C0          |TEST EAX,EAX
102A875C  |.  75 20         |JNZ SHORT CXCentau.102A877E                    ;  if f(x)ebp,esi+4 !=0 break
102A875E  |.  85DB          |TEST EBX,EBX
102A8760  |.  75 0F         |JNZ SHORT CXCentau.102A8771                    ;  if ebx!=0 continu
102A8762  |.  8B45 0C       |MOV EAX,DWORD PTR SS:[EBP+C]
102A8765  |.  8B4F 0C       |MOV ECX,DWORD PTR DS:[EDI+C]
102A8768  |.  E8 F3690000   |CALL CXCentau.102AF160
102A876D  |.  85C0          |TEST EAX,EAX
102A876F  |.  74 0D         |JE SHORT CXCentau.102A877E
102A8771  |>  8B36          |MOV ESI,DWORD PTR DS:[ESI]
102A8773  |.  85F6          |TEST ESI,ESI
102A8775  |.^ 75 D1         \JNZ SHORT CXCentau.102A8748
102A8777  |>  5F            POP EDI
102A8778  |.  5E            POP ESI
102A8779  |.  5D            POP EBP
102A877A  |.  33C0          XOR EAX,EAX
102A877C  |.  5B            POP EBX
102A877D  |.  C3            RETN
102A877E  |>  5F            POP EDI
102A877F  |.  8D46 0C       LEA EAX,DWORD PTR DS:[ESI+C]
102A8782  |.  5E            POP ESI
102A8783  |.  5D            POP EBP
102A8784  |.  5B            POP EBX
102A8785  \.  C3            RETN

简单说这个函数,就是给定了一个属性说明的结构体,esi。又给定了另外一个貌似是加密了的结构体。eax。

用eax+14指针的内容,和esi+8的内容进行与运算之后得到的数值乘以8作为偏移。eax+20的指针加这个偏移,就能找到几个属性的一个链表了。然后,在这个链表中,遍历出esi的位置。然后就能得到上面说的,HP这个属性的结构体了。。

3天了。分析了这点东西。我勒个去。介系个嘛玩意?是加密了么同志们?

还是我被骗了?

哦对了。游戏的主循环。。。==我放代码出来。

10060358   .  68 203F6A10   PUSH CXCentau.106A3F20                          ;  ASCII "vm_mainLoop"
1006035D   .  8D8D 70FFFFFF LEA ECX,DWORD PTR SS:[EBP-90]
10060363   .  FF15 4C315A10 CALL DWORD PTR DS:[<&stlport.5.2.??0?$basic_str>;  stlport_.??0?$basic_string@DV?$char_traits@D@stlp_std@@V?$allocator@D@2@@stlp_std@@QAE@PBDABV?$allocator@D@1@@Z

游戏中有这种字样。。。请问这是嘛意思?

1005DE72  |> /0FB645 F2     /MOVZX EAX,BYTE PTR SS:[EBP-E]
1005DE76  |. |85C0          |TEST EAX,EAX
1005DE78  |. |0F85 2C010000 |JNZ CXCentau.1005DFAA
1005DE7E  |. |8B4D B0       |MOV ECX,DWORD PTR SS:[EBP-50]
1005DE81  |. |0FB651 59     |MOVZX EDX,BYTE PTR DS:[ECX+59]
1005DE85  |. |85D2          |TEST EDX,EDX
1005DE87  |. |0F85 1D010000 |JNZ CXCentau.1005DFAA
1005DE8D  |. |A1 001EA210   |MOV EAX,DWORD PTR DS:[10A21E00]
1005DE92  |. |83E0 01       |AND EAX,1
1005DE95  |. |0F85 91000000 |JNZ CXCentau.1005DF2C
1005DE9B  |. |8B0D 001EA210 |MOV ECX,DWORD PTR DS:[10A21E00]
1005DEA1  |. |83C9 01       |OR ECX,1
1005DEA4  |. |890D 001EA210 |MOV DWORD PTR DS:[10A21E00],ECX
1005DEAA  |. |C745 FC 00000>|MOV DWORD PTR SS:[EBP-4],0
1005DEB1  |. |8D55 D3       |LEA EDX,DWORD PTR SS:[EBP-2D]
1005DEB4  |. |8955 AC       |MOV DWORD PTR SS:[EBP-54],EDX
1005DEB7  |. |C645 FC 01    |MOV BYTE PTR SS:[EBP-4],1
1005DEBB  |. |8B45 AC       |MOV EAX,DWORD PTR SS:[EBP-54]
1005DEBE  |. |50            |PUSH EAX
1005DEBF  |. |68 743B6A10   |PUSH CXCentau.106A3B74                         ;  ASCII "singleProgress"
1005DEC4  |. |8D4D D4       |LEA ECX,DWORD PTR SS:[EBP-2C]
1005DEC7  |. |FF15 4C315A10 |CALL DWORD PTR DS:[<&stlport.5.2.??0?$basic_st>;  stlport_.??0?$basic_string@DV?$char_traits@D@stlp_std@@V?$allocator@D@2@@stlp_std@@QAE@PBDABV?$allocator@D@1@@Z
1005DECD  |. |C645 FC 02    |MOV BYTE PTR SS:[EBP-4],2
1005DED1  |. |8D4D B6       |LEA ECX,DWORD PTR SS:[EBP-4A]
1005DED4  |. |894D A8       |MOV DWORD PTR SS:[EBP-58],ECX
1005DED7  |. |C645 FC 03    |MOV BYTE PTR SS:[EBP-4],3
1005DEDB  |. |8B55 A8       |MOV EDX,DWORD PTR SS:[EBP-58]
1005DEDE  |. |52            |PUSH EDX
1005DEDF  |. |B9 E41DA210   |MOV ECX,CXCentau.10A21DE4                      ;  ASCII "singleProgress"
1005DEE4  |. |FF15 74315A10 |CALL DWORD PTR DS:[<&stlport.5.2.??0?$basic_st>;  stlport_.??0?$basic_string@DV?$char_traits@D@stlp_std@@V?$allocator@D@2@@stlp_std@@QAE@ABV?$allocator@D@1@@Z
1005DEEA  |. |C645 FC 05    |MOV BYTE PTR SS:[EBP-4],5
1005DEEE  |. |8D45 D4       |LEA EAX,DWORD PTR SS:[EBP-2C]
1005DEF1  |. |50            |PUSH EAX
1005DEF2  |. |B9 E41DA210   |MOV ECX,CXCentau.10A21DE4                      ;  ASCII "singleProgress"
1005DEF7  |. |FF15 54315A10 |CALL DWORD PTR DS:[<&stlport.5.2.??4?$basic_st>;  stlport_.??4?$basic_string@DV?$char_traits@D@stlp_std@@V?$allocator@D@2@@stlp_std@@QAEAAV01@ABV01@@Z
1005DEFD  |. |C705 FC1DA210>|MOV DWORD PTR DS:[10A21DFC],1
1005DF07  |. |C645 FC 01    |MOV BYTE PTR SS:[EBP-4],1
1005DF0B  |. |8D4D D4       |LEA ECX,DWORD PTR SS:[EBP-2C]
1005DF0E  |. |FF15 94315A10 |CALL DWORD PTR DS:[<&stlport.5.2.??1?$basic_st>;  stlport_.??1?$basic_string@DV?$char_traits@D@stlp_std@@V?$allocator@D@2@@stlp_std@@QAE@XZ
1005DF14  |. |C645 FC 00    |MOV BYTE PTR SS:[EBP-4],0
1005DF18  |. |68 00A05910   |PUSH CXCentau.1059A000
1005DF1D  |. |E8 9FBB4B00   |CALL CXCentau.10519AC1
1005DF22  |. |83C4 04       |ADD ESP,4
1005DF25  |. |C745 FC FFFFF>|MOV DWORD PTR SS:[EBP-4],-1
1005DF2C  |> |C745 EC E41DA>|MOV DWORD PTR SS:[EBP-14],CXCentau.10A21DE4    ;  ASCII "singleProgress"
1005DF33  |. |8B4D EC       |MOV ECX,DWORD PTR SS:[EBP-14]
1005DF36  |. |8B51 18       |MOV EDX,DWORD PTR DS:[ECX+18]
1005DF39  |. |52            |PUSH EDX
1005DF3A  |. |8B45 EC       |MOV EAX,DWORD PTR SS:[EBP-14]
1005DF3D  |. |50            |PUSH EAX
1005DF3E  |. |FF15 30265A10 |CALL DWORD PTR DS:[<&OgreMain.?getSingleton@Pr>;  OgreMain.?getSingleton@Profiler@Ogre@@SAAAV12@XZ
1005DF44  |. |8BC8          |MOV ECX,EAX
1005DF46  |. |FF15 38265A10 |CALL DWORD PTR DS:[<&OgreMain.?beginProfile@Pr>;  OgreMain.?beginProfile@Profiler@Ogre@@QAEXABV?$basic_string@DV?$char_traits@D@stlp_std@@V?$allocator@D@2@@stlp_std@@I@Z
1005DF4C  |. |C745 FC 06000>|MOV DWORD PTR SS:[EBP-4],6
1005DF53  |. |C645 F1 00    |MOV BYTE PTR SS:[EBP-F],0
1005DF57  |. |8D4D F2       |LEA ECX,DWORD PTR SS:[EBP-E]
1005DF5A  |. |51            |PUSH ECX
1005DF5B  |. |8D55 F1       |LEA EDX,DWORD PTR SS:[EBP-F]
1005DF5E  |. |52            |PUSH EDX
1005DF5F  |. |8B0D 3019A210 |MOV ECX,DWORD PTR DS:[?ms_Singleton@?$Singleto>
1005DF65  |. |E8 76CE1F00   |CALL CXCentau.?onSingleProgress@NativeManager@>
1005DF6A  |. |0FB645 F1     |MOVZX EAX,BYTE PTR SS:[EBP-F]
1005DF6E  |. |85C0          |TEST EAX,EAX
1005DF70  |. |75 0B         |JNZ SHORT CXCentau.1005DF7D
1005DF72  |. |8B4D B0       |MOV ECX,DWORD PTR SS:[EBP-50]
1005DF75  |. |E8 F6200000   |CALL CXCentau.?singleProgress@CXApp@@QAE_NXZ
1005DF7A  |. |8845 F2       |MOV BYTE PTR SS:[EBP-E],AL
1005DF7D  |> |C745 FC FFFFF>|MOV DWORD PTR SS:[EBP-4],-1
1005DF84  |. |8B4D EC       |MOV ECX,DWORD PTR SS:[EBP-14]
1005DF87  |. |8B51 18       |MOV EDX,DWORD PTR DS:[ECX+18]
1005DF8A  |. |52            |PUSH EDX
1005DF8B  |. |8B45 EC       |MOV EAX,DWORD PTR SS:[EBP-14]
1005DF8E  |. |50            |PUSH EAX
1005DF8F  |. |FF15 30265A10 |CALL DWORD PTR DS:[<&OgreMain.?getSingleton@Pr>;  OgreMain.?getSingleton@Profiler@Ogre@@SAAAV12@XZ
1005DF95  |. |8BC8          |MOV ECX,EAX
1005DF97  |. |FF15 98265A10 |CALL DWORD PTR DS:[<&OgreMain.?endProfile@Prof>;  OgreMain.?endProfile@Profiler@Ogre@@QAEXABV?$basic_string@DV?$char_traits@D@stlp_std@@V?$allocator@D@2@@stlp_std@@I@Z
1005DF9D  |. |8B4D B0       |MOV ECX,DWORD PTR SS:[EBP-50]
1005DFA0  |. |E8 1B3A0000   |CALL CXCentau.?updateGameProfilerEnabled@CXApp>
1005DFA5  |.^\E9 C8FEFFFF   \JMP CXCentau.1005DE72

这就是游戏的主循环。。。高手指一个吧。

分析了3天。心理防线已经几近崩溃。之所以发出来。1是想有人能指点一下。2,是有些佩服。说实话,市面上很多游戏弱爆了。这游戏,OD,CE随便附加。刚开始我没看代码,一看没保护直接和人家说2天出基本功能。我擦,扇自己个大嘴巴啊。3天了尼玛我连个HPMP都没分析出来。3,也有些担忧。这是什么?这到底是神马?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 278
活跃值: (709)
能力值: ( LV15,RANK:520 )
在线值:
发帖
回帖
粉丝
2
站个沙发......
2013-8-9 00:32
0
雪    币: 278
活跃值: (709)
能力值: ( LV15,RANK:520 )
在线值:
发帖
回帖
粉丝
3
貌似存在STL库函数啊.
2013-8-9 00:33
0
雪    币: 988
活跃值: (74)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
哥们,你做的斗仙?有空交流下,这游戏确实让人很蛋疼。。。
2013-8-9 00:48
0
雪    币: 223
活跃值: (70)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
5
很明显数据在脚本
2013-8-9 08:36
0
雪    币: 15
活跃值: (40)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
6
大哥。能详细点么?
2013-8-9 09:09
0
雪    币: 10398
活跃值: (5288)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
什么游戏啊
2013-8-9 09:15
0
雪    币: 15
活跃值: (40)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
8
请问什么叫数据写在脚本里?
2013-8-9 15:50
0
雪    币: 248
活跃值: (129)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
9
我也在分析斗仙 人物信息搞定了。 周围信息啥的搞不定 交流交流? 站内信
2013-12-4 03:43
0
雪    币: 130
活跃值: (427)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
求教怎么附加这游戏。。。
2013-12-22 18:39
0
游客
登录 | 注册 方可回帖
返回
//