吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 11665|回复: 5
上一主题 下一主题
收起左侧

[调试逆向] 对某某游戏 怪物数组逆向分析 完整过程

  [复制链接]
跳转到指定楼层
楼主
quanmou 发表于 2014-12-31 17:33 回帖奖励
0089999C - 89 82 64010000  - mov [edx+00000164],eax    一开始我是用ce当入手点,搜怪物血量,搜到後,ce下谁在访问,是这在访问,我们转到od




00545AC0    55              push ebp                                 下条件断点  ecx=怪物对象  往下跟2次跟到这些数据 ,但取出的数据没什麽用处 ,我们只需等级  怪名  血量  距离  ,但那些数据是与怪有关连的
00545AC1    8BEC            mov ebp,esp
00545AC3    83EC 0C         sub esp,0xC
00545AC6    894D F4         mov ss:[ebp-0xC],ecx                     ; 传递怪物对象到ebp-c
00545AC9    8B45 F4         mov eax,ss:[ebp-0xC]                     ; 传递怪物对象到eax
00545ACC    0FB688 DA000000 movzx ecx,byte ptr ds:[eax+0xDA]
00545AD3    85C9            test ecx,ecx
00545AD5    75 10           jnz X00545AE7                            ; 跳转  ,2不跳
00545AD7    8B55 F4         mov edx,ss:[ebp-0xC]                     ; 2.传递 [怪物对象+78+8]  到edx
00545ADA    0FB682 D9000000 movzx eax,byte ptr ds:[edx+0xD9]
00545AE1    85C0            test eax,eax                             ; 2.传递 [[怪物对象+78+8]+0d9] 到eax
00545AE3    75 02           jnz X00545AE7                            ; 2.不跳
00545AE5    EB 4B           jmp X00545B32                            ; 2.跳 跳到返回点
00545AE7    33C9            xor ecx,ecx                              ; 清零
00545AE9    74 02           je X00545AED
00545AEB    EB 35           jmp X00545B22
00545AED    8B4D F4         mov ecx,ss:[ebp-0xC]                     ; 传递怪物对象到ecx
00545AF0    E8 BB12F2FF     call 00466DB0                               第一个函数内部 在下面
00545AF5    8945 FC         mov ss:[ebp-0x4],eax
00545AF8    EB 09           jmp X00545B03                            ; 跳转
00545AFA    8B55 FC         mov edx,ss:[ebp-0x4]                     ; 2.传递 [怪物对象+78+8] 到edx
00545AFD    83C2 04         add edx,0x4                              ; 2.传递 [怪物对象+78+8]+4 到edx
00545B00    8955 FC         mov ss:[ebp-0x4],edx                     ; 2.传递 [怪物对象+78+8]+4 到ebp-4
00545B03    8B4D F4         mov ecx,ss:[ebp-0xC]                     ; 传递怪物对象到ecx   2.传递怪物对象到

ecx
00545B06    E8 C512F2FF     call 00466DD0                               第二个函数内部 在下面
00545B0B    3945 FC         cmp ss:[ebp-0x4],eax
00545B0E    74 12           je X00545B22                             ; 不跳
00545B10    8B45 FC         mov eax,ss:[ebp-0x4]
00545B13    8B08            mov ecx,ds:[eax]                         ; 传递 [怪物对象+78+8]  到ecx
00545B15    894D F8         mov ss:[ebp-0x8],ecx                     ; 传递 [怪物对象+78+8]  到ebp-8
00545B18    8B4D F8         mov ecx,ss:[ebp-0x8]                     ; 传递 [怪物对象+78+8]  到ecx
00545B1B    E8 A0FFFFFF     call 00545AC0
00545B20  ^ EB D8           jmp X00545AFA                            ; 2.返回点跳到这,在往上跳
00545B22    8B55 F4         mov edx,ss:[ebp-0xC]
00545B25    8B02            mov eax,ds:[edx]
00545B27    8B4D F4         mov ecx,ss:[ebp-0xC]
00545B2A    8B90 54010000   mov edx,ds:[eax+0x154]
00545B30    FFD2            call edx
00545B32    8BE5            mov esp,ebp
00545B34    5D              pop ebp
00545B35    C3              retn



--------------------------------------------------------------------------------------------------------
第一个函数内部
00466DB0    55              push ebp
00466DB1    8BEC            mov ebp,esp
00466DB3    51              push ecx                                 ; 压入怪物对象
00466DB4    894D FC         mov ss:[ebp-0x4],ecx                     ; 传递怪物对象到ebp-4
00466DB7    8B4D FC         mov ecx,ss:[ebp-0x4]                     ; 传递怪物对象到ecx
00466DBA    83C1 78         add ecx,0x78                             ; 怪物對象+0x78
00466DBD    E8 8E283A00     call 00809650
00466DC2    8BE5            mov esp,ebp
00466DC4    5D              pop ebp
00466DC5    C3              retn


00809650    55              push ebp
00809651    8BEC            mov ebp,esp
00809653    51              push ecx                                 ; 压入  怪物对象+78
00809654    894D FC         mov ss:[ebp-0x4],ecx                     ; 传递怪物对象+78 到 ebp-4
00809657    8B4D FC         mov ecx,ss:[ebp-0x4]                     ; 传递怪物对象+78 到 ecx
0080965A    E8 2104EFFF     call 006F9A80
0080965F    8BE5            mov esp,ebp
00809661    5D              pop ebp
00809662    C3              retn

006F9A80    55              push ebp
006F9A81    8BEC            mov ebp,esp
006F9A83    51              push ecx                                 ; 压入怪物对象+78
006F9A84    894D FC         mov ss:[ebp-0x4],ecx                     ; 传递怪物对象+78 到 ebp-4
006F9A87    8B45 FC         mov eax,ss:[ebp-0x4]                     ; 传递怪物对象+78 到 eax
006F9A8A    8B40 08         mov eax,ds:[eax+0x8]                     ; 传递怪物对象+78+8 到 eax
006F9A8D    8BE5            mov esp,ebp
006F9A8F    5D              pop ebp
006F9A90    C3              retn

--------------------------------------------------------------------------------------------------------
第二个函数内部
00466DD0    55              push ebp
00466DD1    8BEC            mov ebp,esp
00466DD3    51              push ecx
00466DD4    894D FC         mov ss:[ebp-0x4],ecx                     ; 传递怪物对象到ebp-4
00466DD7    8B4D FC         mov ecx,ss:[ebp-0x4]                     ; 传递怪物对象到ecx
00466DDA    83C1 78         add ecx,0x78                             ; ecx=怪物对象+78
00466DDD    E8 2ED4FEFF     call 00454210
00466DE2    8BE5            mov esp,ebp
00466DE4    5D              pop ebp
00466DE5    C3              retn


00454210    55              push ebp
00454211    8BEC            mov ebp,esp
00454213    51              push ecx                                 ; 压入怪物对象+78
00454214    894D FC         mov ss:[ebp-0x4],ecx                     ; 传递怪物对象+78 到ebp-4
00454217    8B4D FC         mov ecx,ss:[ebp-0x4]                     ; 传递怪物对象+78 到ecx
0045421A    E8 01206B00     call 00B06220
0045421F    8BE5            mov esp,ebp
00454221    5D              pop ebp
00454222    C3              retn


00B06220    55              push ebp
00B06221    8BEC            mov ebp,esp
00B06223    51              push ecx
00B06224    894D FC         mov ss:[ebp-0x4],ecx
00B06227    8B45 FC         mov eax,ss:[ebp-0x4]                     ; 传递怪物对象+78 到eax
00B0622A    8B08            mov ecx,ds:[eax]                         ; 传递[怪物对象+78] 到ecx
00B0622C    8B55 FC         mov edx,ss:[ebp-0x4]                     ; 传递怪物对象+78 到edx
00B0622F    8B42 08         mov eax,ds:[edx+0x8]                     ; 传递怪物对象+78+8 到eax
00B06232    8D0488          lea eax,ds:[eax+ecx*4]                   ; 传递 [怪物对象+78+8]+1*4   到eax
00B06235    8BE5            mov esp,ebp
00B06237    5D              pop ebp
00B06238    C3              retn

--------------------------------------------------------------------------------------------------------

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

沙发
 楼主| quanmou 发表于 2014-12-31 17:36 |楼主
0089C400    55              push ebp
0089C401    8BEC            mov ebp,esp
0089C403    6A FF           push -0x1
0089C405    68 DDB9DD00     push 00DDB9DD
0089C40A    64:A1 00000000  mov eax,fs:[0]
0089C410    50              push eax
0089C411    81EC 8C000000   sub esp,0x8C
0089C417    A1 BCFE0F01     mov eax,ds:[0x10FFEBC]
0089C41C    33C5            xor eax,ebp
0089C41E    50              push eax
0089C41F    8D45 F4         lea eax,ss:[ebp-0xC]                     ; 堆栈地址=0018EDE0
0089C422    64:A3 00000000  mov fs:[0],eax
0089C428    894D 9C         mov ss:[ebp-0x64],ecx
0089C42B    8B45 9C         mov eax,ss:[ebp-0x64]                    ; 取得当前选中怪物对象
0089C42E    8A88 C0000000   mov cl,ds:[eax+0xC0]
0089C434    884D E7         mov ss:[ebp-0x19],cl
0089C437    8B0D 18501E01   mov ecx,ds:[0x11E5018]                   ; Game.011E5960
3#
cjl498 发表于 2014-12-31 22:42
4#
 楼主| quanmou 发表于 2014-12-31 22:46 |楼主
5#
cjl498 发表于 2015-1-1 08:27
OK ,支持你
6#
LLMr 发表于 2015-1-1 08:36
支持。。。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-3 01:30

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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