追逐自己的梦想----------辅助制作第十六课:分析技能列表

这篇博客详细分析了游戏客户端中技能列表的解析过程,通过内存操作和指针运算,揭示了如何从内存地址中获取技能信息,包括技能基址、技能类型、对象数组ID、技能名字和玩家职业等关键数据。
007B3105 - 8B 84 9F 10040000  - mov eax,[edi+ebx*4+00000410]
007B310C - 8B 0D 0CA4F500  - mov ecx,[Client.exe+B5A40C]
007B3112 - 89 81 28020000  - mov [ecx+00000228],eax <<
007B3118 - 8B 15 0CA4F500  - mov edx,[Client.exe+B5A40C]
007B311E - C6 82 30020000 01 - mov byte ptr [edx+00000230],01

EAX=2E439B38
EBX=00000001
ECX=099C7B28
EDX=2E439B38
ESI=00000002
EDI=1ADB1838
ESP=0018A480
EBP=0018CCC4
EIP=007B3118

EAX=2E439B38
EBX=00000001
ECX=099C7B28
EDX=2E439B38
ESI=00000002
EDI=1ADB1838
EBP=0018CCC4
ESP=0018A480
EIP=007B3118

指针基址可能是 =099C7B28

007B3105 - mov eax,[edi+ebx*4+00000410]
007B310C - mov ecx,[Client.exe+B5A40C]
007B3112 - mov [ecx+00000228],eax
007B3118 - mov edx,[Client.exe+B5A40C]
007B311E - mov byte ptr [edx+00000230],01



然后得到EDI的基址  可能会是 031B85B0
031DC9EC

*********************************************************************************

006C2E61 - 3B 8B F4040000  - cmp ecx,[ebx+000004F4]
006C2E67 - 0F85 81000000 - jne Client.exe+2C2EEE
006C2E6D - A1 B0851B03 - mov eax,[Client.exe+2DB85B0] <<
006C2E72 - 83 3C 06  00 - cmp dword ptr [esi+eax],00
006C2E76 - 0F84 72000000 - je Client.exe+2C2EEE

EAX=1ADB1838
EBX=1AC48428
ECX=00000001
EDX=00000000
ESI=00000410
EDI=0000FFFF
ESP=0018A5F0
EBP=0018CE1C
EIP=006C2E72


得到的应该就是对象的基址
006C2E61    3B8B F4040000   CMP ECX,DWORD PTR DS:[EBX+4F4]
006C2E67    0F85 81000000   JNZ Client.006C2EEE
006C2E6D    A1 B0851B03     MOV EAX,DWORD PTR DS:[31B85B0]
006C2E72    833C06 00       CMP DWORD PTR DS:[ESI+EAX],0
006C2E76    0F84 72000000   JE Client.006C2EEE



********************************************************************************
004A9B23 - 3B C3  - cmp eax,ebx
004A9B25 - 0F8C F4000000 - jl Client.exe+A9C1F
004A9B2B - 39 1C 85 B0BE1D03  - cmp [eax*4+Client.exe+2DDBEB0],ebx <<
004A9B32 - 0F84 E7000000 - je Client.exe+A9C1F
004A9B38 - 39 5E 10  - cmp [esi+10],ebx

EAX=000002CF
EBX=00000000
ECX=00F37FB8
EDX=00000258
ESI=1ACBAF00
EDI=00000185
ESP=0018CD28
EBP=0018CE50
EIP=004A9B32


得到的基址未
004A9B23    3BC3            CMP EAX,EBX
004A9B25    0F8C F4000000   JL Client.004A9C1F
004A9B2B    391C85 B0BE1D03 CMP DWORD PTR DS:[EAX*4+31DBEB0],EBX
004A9B32    0F84 E7000000   JE Client.004A9C1F
004A9B38    395E 10         CMP DWORD PTR DS:[ESI+10],EBX
004A9B3B    0F84 DE000000   JE Client.004A9C1F

为所有对象基址



*********************************************************************
最后得到的算法为
dd [31B85B0]+410+ 4*1

+8 //技能类型   1B表示技能书  1C表示技能书中的技能
+0c  //表示所有对象数组ID
+5c  //技能名字
+0b1 //玩家职业
+1f6  //是否修炼  (WORD表示)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值