飛翔の鷹 发表于 2015-11-27 15:38:04

天龙查找人物状态及遇到的问题

本人菜鸟一枚,最近学着分析做 ,其中查找人物状态的时候遇到了些问题,求大神给点帮助~。。。下面简单写下我的查找顺序~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~分割线~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1.利用CE查找人物当前的状态名,最终确定一个地址63FE33FB 于是在OD里进行断点 然后断到了这里。
005EA1BD|.E8 2EE01F00   CALL Game.007E81F0                     ;人物状态入口
005EA1C2|.8BF8          MOV EDI,EAX
005EA1C4|.85FF          TEST EDI,EDI
005EA1C6|.0F84 AB000000 JE Game.005EA277
005EA1CC|.8B57 40       MOV EDX,DWORD PTR DS:
005EA1XF|.8BC2          MOV EAX,EDX
005EA1D1|.53            PUSH EBX
005EA1D2|.8D58 01       LEA EBX,DWORD PTR DS:
005EA1D5|>8A08          /MOV CL,BYTE PTR DS:
005EA1D7|.40            |INC EAX
005EA1D8|.84C9          |TEST CL,CL
005EA1DA|.^ 75 F9         \JNZ SHORT Game.005EA1D5

此时得出当前状态的值为:

2.进入005EA1BD内部
007E81F0   $8B49 04       MOV ECX,DWORD PTR DS:
007E81F3   .8B01          MOV EAX,DWORD PTR DS:
007E81F5   .FF20          JMP DWORD PTR DS:                   ;6D9D5DA0


跳转到了这里

007C6150   .51            PUSH ECX                                 ;人物状态入口
007C6151   .56            PUSH ESI
007C6152   .8BF1          MOV ESI,ECX
007C6154   .8D4424 0C   LEA EAX,DWORD PTR SS:
007C6158   .50            PUSH EAX
007C6159   .8D4C24 08   LEA ECX,DWORD PTR SS:
007C615D   .51            PUSH ECX
007C615E   .8D4E 38       LEA ECX,DWORD PTR DS:
007C6161   .E8 0AFXFFFF   CALL Game.007C5D70                     ;ecx=6D9D5DD8
007C6166   .8B4E 40       MOV ECX,DWORD PTR DS:
007C6169   .8B4424 04   MOV EAX,DWORD PTR SS:             ;64AFC710,64AFC1F0
007C616D   .3BC1          CMP EAX,ECX
007C616F   .5E            POP ESI
007C6170   .75 06         JNZ SHORT Game.007C6178                  ;1
007C6172   .33C0          XOR EAX,EAX
007C6174   .59            POP ECX
007C6175   .C2 0400       RETN 4
007C6178   >8B40 0C       MOV EAX,DWORD PTR DS:   ;这里返回EAX的值
007C617B   .59            POP ECX
007C617C   .C2 0400       RETN 4



此时EAX=, esp+4 这个数据从哪里找? 我没有搞明白,跟进007C6161发现 其值与 那里是一样的 也不知道我有没有找错~


下面是007C6161的内部

007C5D70/$51            PUSH ECX                                 ;人物状态入口
007C5D71|.8B4424 0C   MOV EAX,DWORD PTR SS:      ;这个是最困扰我的 不知从何入手
007C5D75|.8B51 20       MOV EDX,DWORD PTR DS:
007C5D78|.56            PUSH ESI
007C5D79|.8B30          MOV ESI,DWORD PTR DS:
007C5D7B|.8BC6          MOV EAX,ESI                                    ;mov eax,
007C5D7D|.35 EFBEADDE   XOR EAX,DEADBEEF
007C5D82|.57            PUSH EDI
007C5D83|.8B79 24       MOV EDI,DWORD PTR DS:
007C5D86|.23C2          AND EAX,EDX                                       ;EDX也是需要ECX
007C5D88|.3BF8          CMP EDI,EAX                                       ;这里要找EDI与EAX比较,即找ECX
007C5D8A|.77 09         JA SHORT Game.007C5D95                   ;1
007C5D8C|.D1EA          SHR EDX,1
007C5D8E|.83XF FF       OR EDI,FFFFFFFF
007C5D91|.2BFA          SUB EDI,EDX
007C5D93|.03C7          ADD EAX,EDI
007C5D95|>8B51 14       MOV EDX,DWORD PTR DS:            ;目前找到这里:[[[+EAX*4] + 0C] + 40]
007C5D98|.8B7C82 04   MOV EDI,DWORD PTR DS:       ;zhuangtai
007C5D9C|.8D1482      LEA EDX,DWORD PTR DS:
007C5D9F|.8B02          MOV EAX,DWORD PTR DS:                   ;发现与的值是一样的
007C5DA1|.3BC7          CMP EAX,EDI
007C5DA3|.894424 14   MOV DWORD PTR SS:,EAX
007C5DA7|.74 16         JE SHORT Game.007C5DBF                   ;0
007C5DA9|.8BD7          MOV EDX,EDI
007C5DAB|.EB 03         JMP SHORT Game.007C5DB0
007C5DAD|   8D49 00       LEA ECX,DWORD PTR DS:
007C5DB0|>3970 08       /CMP DWORD PTR DS:,ESI
007C5DB3|.7D 19         |JGE SHORT Game.007C5DCE               ;1
007C5DB5|.8B00          |MOV EAX,DWORD PTR DS:
007C5DB7|.3BC2          |CMP EAX,EDX
007C5DB9|.^ 75 F5         \JNZ SHORT Game.007C5DB0
007C5DBB|.894424 14   MOV DWORD PTR SS:,EAX
007C5DBF|>8B51 08       MOV EDX,DWORD PTR DS:
007C5DC2|.8B4424 10   MOV EAX,DWORD PTR SS:
007C5DC6|.5F            POP EDI
007C5DC7|.8910          MOV DWORD PTR DS:,EDX
007C5DC9|.5E            POP ESI
007C5DCA|.59            POP ECX
007C5DCB|.C2 0800       RETN 8
007C5DCE|>3B70 08       CMP ESI,DWORD PTR DS:             ;here
007C5DD1|.894424 14   MOV DWORD PTR SS:,EAX
007C5DD5|.7D 19         JGE SHORT Game.007C5DF0                  ;1
007C5DD7|.8B41 08       MOV EAX,DWORD PTR DS:
007C5DDA|.894424 08   MOV DWORD PTR SS:,EAX
007C5DDE|.8D4424 08   LEA EAX,DWORD PTR SS:
007C5DE2|.8B08          MOV ECX,DWORD PTR DS:
007C5DE4|.8B4424 10   MOV EAX,DWORD PTR SS:
007C5DE8|.5F            POP EDI
007C5DE9|.8908          MOV DWORD PTR DS:,ECX
007C5DEB|.5E            POP ESI
007C5DEC|.59            POP ECX
007C5DED|.C2 0800       RETN 8
007C5DF0|>8D4424 14   LEA EAX,DWORD PTR SS:            ;here
007C5DF4|.8B08          MOV ECX,DWORD PTR DS:
007C5DF6|.8B4424 10   MOV EAX,DWORD PTR SS:
007C5DFA|.5F            POP EDI
007C5DFB|.8908          MOV DWORD PTR DS:,ECX
007C5DFD|.5E            POP ESI
007C5DFE|.59            POP ECX
007C5DFF\.C2 0800       RETN 8



找ECX的数据很简单
ECX= [ + 4] + 38
但是EAX要从何入手呢?

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~分割线~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

下面是我自己瞎猜的EAX的找法。。。。最后我是没有找出来。。。。
返回上一级调用
007C6150   .51            PUSH ECX                                 ;人物状态入口
007C6151   .56            PUSH ESI
007C6152   .8BF1          MOV ESI,ECX
007C6154   .8D4424 0C   LEA EAX,DWORD PTR SS: ;
007C6158   .50            PUSH EAX
007C6159   .8D4C24 08   LEA ECX,DWORD PTR SS:
007C615D   .51            PUSH ECX
007C615E   .8D4E 38       LEA ECX,DWORD PTR DS:
007C6161   .E8 0AFXFFFF   CALL Game.007C5D70                     ;ecx=6D9D5DD8
007C6166   .8B4E 40       MOV ECX,DWORD PTR DS:
007C6169   .8B4424 04   MOV EAX,DWORD PTR SS:             ;64AFC710,64AFC1F0
007C616D   .3BC1          CMP EAX,ECX


发现上一级有一个 然后继续往上找?


跟入第二个call 这个是很长的片段





发现 eax 与 是一样的于是找ESI的来源

找到这里感觉很近了 听大神说 是上一个Call最后一个push的值 于是来到上一个Call 看下最后push的是什么

发现压入的是ESI 于是找ESI的来源

这次跟上面是一样的 ,继续往上找

这次压入的是EDI

继续往上跟

到这发现错了。。。。除了打坐状态会断外 其它都断不下。。。。。。。。是上面哪一步找错了吗?

刘润东 发表于 2015-11-27 21:36:46

给楼主打气 加加油!继续

飛翔の鷹 发表于 2015-11-27 22:58:32

刘润东 发表于 2015-11-27 21:36
给楼主打气 加加油!继续

{:sad:}再找找看,我跟buff数量跟出来并没有什么用。。。~

wjj197981 发表于 2015-11-28 08:43:37

给楼主打气 加加油!继续

空空空空 发表于 2015-11-28 14:52:48

难得给力的好帖子,顶楼主。

匍匐前进 发表于 2015-11-28 21:16:10

打酱油的啦,飘过赚点海币而已。

李术雪. 发表于 2015-11-28 22:52:16

感谢楼主,支持楼主-支持 海。

b971350950 发表于 2015-11-29 16:37:26

谢谢分享,好贴!

峰爸爸 发表于 2015-12-11 21:27:50

论坛里面有这种教程的

15649446 发表于 2016-1-5 02:29:49

淡定一下吧,不要太鸡冻呵,要淡定!
页: [1] 2
查看完整版本: 天龙查找人物状态及遇到的问题