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

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 10473|回复: 5
收起左侧

[调试逆向] 对某某游戏周围玩家数组 完整逆向过程

[复制链接]
quanmou 发表于 2015-1-25 13:58
本帖最后由 quanmou 于 2015-1-25 14:07 编辑

对某某游戏周围玩家数组 完整逆向过程
0056E31E   .  33C0          xor eax,eax                              ;  ctrl+f9返回
0056E320   .  3981 60010000 cmp ds:[ecx+0x160],eax                   ;  这写入周边玩家血量----ce入手点
0056E326   .  0F94C0        sete al
0056E329   .  C3            retn

-------------------------------------------------------------------------------------------------------------------
00573320  /$  55            push ebp
00573321  |.  8BEC          mov ebp,esp
00573323  |.  83E4 F8       and esp,0xFFFFFFF8
00573326  |.  83EC 44       sub esp,0x44
00573329  |.  53            push ebx
0057332A  |.  56            push esi
0057332B  |.  8BF1          mov esi,ecx                              ;  dd ecx+0x160
0057332D  |.  8B0D 48E4C200 mov ecx,ds:[0xC2E448]
00573333  |.  8B49 7C       mov ecx,ds:[ecx+0x7C]
00573336  |.  8D86 34030000 lea eax,ds:[esi+0x334]
0057333C  |.  57            push edi
0057333D  |.  3908          cmp ds:[eax],ecx
0057333F  |.  0F84 A5030000 je 005736EA
00573345  |.  8908          mov ds:[eax],ecx
00573347  |.  8B06          mov eax,ds:[esi]
00573349  |.  8BCE          mov ecx,esi
0057334B  |.  C686 A9000000>mov byte ptr ds:[esi+0xA9],0x1
00573352  |.  FF50 50       call ds:[eax+0x50]                       ;  从这进
---------------------------------------------------------------------------------------------------------------


0056C314  /$  55            push ebp
0056C315  |.  8BEC          mov ebp,esp
0056C317  |.  83EC 0C       sub esp,0xC
0056C31A  |.  56            push esi
0056C31B  |.  8BF1          mov esi,ecx                              ;  dd ecx+0x160
0056C31D  |.  8B86 34030000 mov eax,ds:[esi+0x334]
0056C323  |.  8B0D 48E4C200 mov ecx,ds:[0xC2E448]
0056C329  |.  3B41 7C       cmp eax,ds:[ecx+0x7C]
0056C32C  |.  0F84 51010000 je 0056C483
0056C332  |.  8B46 18       mov eax,ds:[esi+0x18]
0056C335  |.  C1E8 03       shr eax,0x3
0056C338  |.  A8 01         test al,0x1
0056C33A  |.  75 20         jnz X0056C35C                            ;  这跳下来
0056C33C  |.  8B06          mov eax,ds:[esi]
0056C33E  |.  8BCE          mov ecx,esi
0056C340  |.  FF90 A8000000 call ds:[eax+0xA8]
0056C346  |.  84C0          test al,al
0056C348  |.  74 12         je X0056C35C
0056C34A  |.  F686 F1050000>test byte ptr ds:[esi+0x5F1],0x1
0056C351  |.  76 09         jbe X0056C35C
0056C353  |.  6A 01         push 0x1
0056C355  |.  8BCE          mov ecx,esi
0056C357  |.  E8 7E350000   call 0056F8DA
0056C35C  |>  57            push edi                                 ;  发现这有个跳转
0056C35D  |.  FF75 08       push dword ptr ss:[ebp+0x8]
0056C360  |.  8BCE          mov ecx,esi                              ;  dd esi+0x160
0056C362  |.  E8 B96F0000   call 00573320
------------------------------------------------------------------------------------------------------------


0055B476  /$  55            push ebp
0055B477  |.  8BEC          mov ebp,esp
0055B479  |.  83E4 F8       and esp,0xFFFFFFF8
0055B47C  |.  64:A1 0000000>mov eax,fs:[0]
0055B482  |.  6A FF         push -0x1
0055B484  |.  68 20F99F00   push 009FF920
0055B489  |.  50            push eax
0055B48A  |.  64:8925 00000>mov fs:[0],esp
0055B491  |.  83EC 28       sub esp,0x28
0055B494  |.  53            push ebx
0055B495  |.  56            push esi
0055B496  |.  57            push edi
0055B497  |.  8B7D 08       mov edi,ss:[ebp+0x8]                     ;  这里对edi写入,上层最後一个push进来的
0055B49A  |.  8D4F 60       lea ecx,ds:[edi+0x60]
0055B49D  |.  FF15 4C63A100 call ds:[<&MSVCP90.std::basic_string<cha>;  MSVCP90.std::basic_string<char,std::char_traits<char>,std::allocator<char> >::clear
0055B4A3  |.  E8 0379EAFF   call 00402DAB
0055B4A8  |.  8B10          mov edx,ds:[eax]
0055B4AA  |.  8BC8          mov ecx,eax
0055B4AC  |.  FF52 18       call ds:[edx+0x18]
0055B4AF  |.  803D B359C100>cmp byte ptr ds:[0xC159B3],0x0
0055B4B6  |.  75 55         jnz X0055B50D
0055B4B8  |.  8B4D 0C       mov ecx,ss:[ebp+0xC]
0055B4BB  |.  8D87 FC010000 lea eax,ds:[edi+0x1FC]
0055B4C1  |.  E8 7C79EAFF   call 00402E42
0055B4C6  |.  84C0          test al,al
0055B4C8  |.  74 43         je X0055B50D
0055B4CA  |.  833D B456C100>cmp dword ptr ds:[0xC156B4],0x0
0055B4D1  |.  75 3A         jnz X0055B50D
0055B4D3  |.  6A 06         push 0x6
0055B4D5  |.  8D4424 1C     lea eax,ss:[esp+0x1C]
0055B4D9  |.  C64424 1C 02  mov byte ptr ss:[esp+0x1C],0x2
0055B4DE  |.  C64424 1D 04  mov byte ptr ss:[esp+0x1D],0x4
0055B4E3  |.  E8 C585EAFF   call 00403AAD
0055B4E8  |.  8B35 5CE4C200 mov esi,ds:[0xC2E45C]
0055B4EE  |.  59            pop ecx
0055B4EF  |.  E8 AD9BEAFF   call 004050A1
0055B4F4  |.  A3 B456C100   mov ds:[0xC156B4],eax
0055B4F9  |.  E8 AD78EAFF   call 00402DAB
0055B4FE  |.  8B0D 5CE4C200 mov ecx,ds:[0xC2E45C]
0055B504  |.  8B51 2C       mov edx,ds:[ecx+0x2C]
0055B507  |.  0351 28       add edx,ds:[ecx+0x28]
0055B50A  |.  8950 4C       mov ds:[eax+0x4C],edx
0055B50D  |>  33DB          xor ebx,ebx
0055B50F  |.  43            inc ebx
0055B510  |.  841D E0A6C300 test ds:[0xC3A6E0],bl
0055B516  |.  75 46         jnz X0055B55E
0055B518  |.  091D E0A6C300 or ds:[0xC3A6E0],ebx
0055B51E  |.  836424 3C 00  and dword ptr ss:[esp+0x3C],0x0
0055B523  |.  E8 B4A5F1FF   call 00475ADC
0055B528  |.  A3 D406C300   mov ds:[0xC306D4],eax
0055B52D  |.  8858 15       mov ds:[eax+0x15],bl
0055B530  |.  A1 D406C300   mov eax,ds:[0xC306D4]
0055B535  |.  8940 04       mov ds:[eax+0x4],eax
0055B538  |.  A1 D406C300   mov eax,ds:[0xC306D4]
0055B53D  |.  8900          mov ds:[eax],eax
0055B53F  |.  A1 D406C300   mov eax,ds:[0xC306D4]
0055B544  |.  8940 08       mov ds:[eax+0x8],eax
0055B547  |.  8325 D806C300>and dword ptr ds:[0xC306D8],0x0
0055B54E  |.  68 132DA100   push 00A12D13
0055B553  |.  E8 88394300   call 0098EEE0
0055B558  |.  834C24 40 FF  or dword ptr ss:[esp+0x40],0xFFFFFFFF
0055B55D  |.  59            pop ecx
0055B55E  |>  E8 F3260000   call 0055DC56
0055B563  |.  6A 02         push 0x2
0055B565  |.  5E            pop esi
0055B566  |.  C64424 13 00  mov byte ptr ss:[esp+0x13],0x0
0055B56B  |.  8935 38C4BB00 mov ds:[0xBBC438],esi
0055B571  |.  E8 1A840700   call 005D3990
0055B576  |.  3970 1C       cmp ds:[eax+0x1C],esi
0055B579  |.  7C 35         jl X0055B5B0
0055B57B  |.  E8 10840700   call 005D3990
0055B580  |.  80B8 A8030000>cmp byte ptr ds:[eax+0x3A8],0x0
0055B587  |.  75 27         jnz X0055B5B0
0055B589  |.  8B47 20       mov eax,ds:[edi+0x20]
0055B58C  |.  2B47 1C       sub eax,ds:[edi+0x1C]
0055B58F  |.  C1F8 02       sar eax,0x2
0055B592  |.  3D A0000000   cmp eax,0xA0
0055B597  |.  76 08         jbe X0055B5A1
0055B599  |.  891D 38C4BB00 mov ds:[0xBBC438],ebx
0055B59F  |.  EB 0B         jmp X0055B5AC
0055B5A1  |>  83F8 50       cmp eax,0x50
0055B5A4  |.  76 0A         jbe X0055B5B0
0055B5A6  |.  8935 38C4BB00 mov ds:[0xBBC438],esi
0055B5AC  |>  885C24 13     mov ss:[esp+0x13],bl
0055B5B0  |>  8B47 20       mov eax,ds:[edi+0x20]
0055B5B3  |.  2B47 1C       sub eax,ds:[edi+0x1C]
0055B5B6  |.  C1F8 02       sar eax,0x2
0055B5B9  |.  83F8 50       cmp eax,0x50
0055B5BC  |.  76 1C         jbe X0055B5DA
0055B5BE  |.  E8 CD830700   call 005D3990
0055B5C3  |.  3970 1C       cmp ds:[eax+0x1C],esi
0055B5C6  |.  7C 12         jl X0055B5DA
0055B5C8  |.  E8 C3830700   call 005D3990
0055B5CD  |.  80B8 A8030000>cmp byte ptr ds:[eax+0x3A8],0x0
0055B5D4  |.  75 04         jnz X0055B5DA
0055B5D6  |.  885C24 13     mov ss:[esp+0x13],bl
0055B5DA  |>  8B47 20       mov eax,ds:[edi+0x20]
0055B5DD  |.  8B5F 1C       mov ebx,ds:[edi+0x1C]                    ;  dd [[edi+0x1C]]+0x160 往上找edi
0055B5E0  |.  8BC8          mov ecx,eax
0055B5E2  |.  2BCB          sub ecx,ebx
0055B5E4  |.  F7C1 FCFFFFFF test ecx,0xFFFFFFFC
0055B5EA  |.  74 64         je X0055B650
0055B5EC  |.  3BD8          cmp ebx,eax
0055B5EE  |.  74 60         je X0055B650
0055B5F0  |>  8B0B          /mov ecx,ds:[ebx]                        ;  dd [ebx]+0x160  具体还是从这往上跟ebx
0055B5F2  |.  FF75 0C       |push dword ptr ss:[ebp+0xC]             ;  这段只是实现了  傳統遊戲數組eax+ecx*4 这种结构
0055B5F5  |.  8B01          |mov eax,ds:[ecx]
0055B5F7  |.  FF90 98000000 |call ds:[eax+0x98]
0055B5FD  |.  807C24 13 00  |cmp byte ptr ss:[esp+0x13],0x0
0055B602  |.  74 44         |je X0055B648
0055B604  |.  8B03          |mov eax,ds:[ebx]
0055B606  |.  8D7C24 18     |lea edi,ss:[esp+0x18]
0055B60A  |.  E8 48320100   |call 0056E857
0055B60F  |.  0FB74424 1C   |movzx eax,word ptr ss:[esp+0x1C]
0055B614  |.  8B4C24 18     |mov ecx,ss:[esp+0x18]
0055B618  |.  C1E1 10       |shl ecx,0x10
0055B61B  |.  0BC1          |or eax,ecx
0055B61D  |.  8D7424 14     |lea esi,ss:[esp+0x14]
0055B621  |.  894424 14     |mov ss:[esp+0x14],eax
0055B625  |.  E8 9F250000   |call 0055DBC9
0055B62A  |.  FE00          |inc byte ptr ds:[eax]
0055B62C  |.  E8 98250000   |call 0055DBC9
0055B631  |.  0FB600        |movzx eax,byte ptr ds:[eax]
0055B634  |.  3B05 38C4BB00 |cmp eax,ds:[0xBBC438]
0055B63A  |.  7E 09         |jle X0055B645
0055B63C  |.  8B0B          |mov ecx,ds:[ebx]
0055B63E  |.  8B01          |mov eax,ds:[ecx]
0055B640  |.  6A 00         |push 0x0
0055B642  |.  FF50 4C       |call ds:[eax+0x4C]
0055B645  |>  8B7D 08       |mov edi,ss:[ebp+0x8]
0055B648  |>  83C3 04       |add ebx,0x4                             ;  这里+4 等於是便历内存
0055B64B  |.  3B5F 20       |cmp ebx,ds:[edi+0x20]
0055B64E  |.^ 75 A0         \jnz X0055B5F0                           ;  这段只是实现了  傳統遊戲數組eax+ecx*4 这种结构
-----------------------------------------------------------------------------------------------------------------------

0055B476  /$  55            push ebp
0055B477  |.  8BEC          mov ebp,esp
0055B479  |.  83E4 F8       and esp,0xFFFFFFF8
0055B47C  |.  64:A1 0000000>mov eax,fs:[0]
0055B482  |.  6A FF         push -0x1
0055B484  |.  68 20F99F00   push 009FF920
0055B489  |.  50            push eax
0055B48A  |.  64:8925 00000>mov fs:[0],esp
0055B491  |.  83EC 28       sub esp,0x28
0055B494  |.  53            push ebx
0055B495  |.  56            push esi
0055B496  |.  57            push edi
0055B497  |.  8B7D 08       mov edi,ss:[ebp+0x8]                     ;  这里对edi写入,上层最後一个push进来的
-----------------------------------------------------------------------------------------------------

005997B4   .  68 5CDBB200   push 00B2DB5C                            ;  .\ztParticleThread.cpp
005997B9   .  8BCE          mov ecx,esi
005997BB   .  FF50 04       call ds:[eax+0x4]
005997BE   .  83C7 74       add edi,0x74
005997C1   .  57            push edi
005997C2   .  E8 29CB1A00   call 007462F0
005997C7   .  8B06          mov eax,ds:[esi]
005997C9   .  59            pop ecx
005997CA   .  8BCE          mov ecx,esi
005997CC   .  FF50 0C       call ds:[eax+0xC]
005997CF   >  A1 B8F1C200   mov eax,ds:[0xC2F1B8]
005997D4   .  85C0          test eax,eax
005997D6   .  74 05         je X005997DD
005997D8   .  E8 8EF00900   call 0063886B
005997DD   >  E8 33D8FFFF   call 00597015
005997E2   .  8B6C24 10     mov ebp,ss:[esp+0x10]
005997E6   .  83BD 44010000>cmp dword ptr ss:[ebp+0x144],0x3
005997ED   .  75 1C         jnz X0059980B
005997EF   .  E8 AB38FFFF   call 0058D09F
005997F4   .  A1 5CE4C200   mov eax,ds:[0xC2E45C]
005997F9   .  8B48 2C       mov ecx,ds:[eax+0x2C]
005997FC   .  0348 28       add ecx,ds:[eax+0x28]
005997FF   .  51            push ecx
00599800   .  FF35 08EBC200 push dword ptr ds:[0xC2EB08]             ;  PUSH 个基址  找到整个结构了
00599806   .  E8 6B1CFCFF   call 0055B476                            ;  dd [[[0xC2EB08]+0x1C]+0*4]+0x160
0059980B   >  A1 08EBC200   mov eax,ds:[0xC2EB08]
00599810   .  8B80 C4010000 mov eax,ds:[eax+0x1C4]
00599816   .  85C0          test eax,eax
00599818   .  74 0F         je X00599829
0059981A   .  83F8 01       cmp eax,0x1
0059981D   .  74 0A         je X00599829
0059981F   .  83F8 06       cmp eax,0x6
------------------------------------------------------------------------------------

所以周边玩家的血量是这样dd [[[0x0C2EB08]+0x1C]+1*4]+0x160




ce入口点

ce入口点
2.jpg
3.jpg
4.jpg
5.jpg
6.jpg

基址

基址

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

willcome 发表于 2015-1-25 14:11
CNB师兄,师弟773来给你顶贴了,写的太棒了。
我是坏人 发表于 2015-1-25 14:11
头像被屏蔽
milk09 发表于 2015-2-6 09:22
wnagzihxain 发表于 2015-2-8 20:43
虽然看不懂,但是膜拜一下
kouyuu 发表于 2015-2-10 07:46
分析的思路值得学习
您需要登录后才可以回帖 登录 | 注册[Register]

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

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

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

GMT+8, 2024-5-10 00:37

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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