学习目标:
分析NPC对话CALL
分析思路:
1、打开NPC对话时 一般会访问NPC对象数据,可以用CE尝试找出对NPC对象访问的代码,然后回溯。
2、打开NPC对话时 可能会与服务器通讯。那么可以尝试发包函数处下断点回溯。
#define BaseAllObjList 0x31E6640//所有对象数组 dd [031CE740+4*0]
#define BaseRoleObj 0x31E663C //角色对象基址<自己>
所有对象基址+4*[[个色对象基址]+14b8]
dd [45E4A88+4*0]
+008 //对象类型分类编号 0X2E 0x31是玩家 0x55 动作对象
+314 //选中状态,是否显示了血条
+320 //怪物名字
+380 //死亡状态 死亡为1 未死亡为0
+768 //
+5b4 //怪物血量
+5B8 //怪物等级
+1018 //X
+1020 //Y
+1024 //X
+102c //Y
[[0x31E663C]+14B8] //下标
dd [0x31E6640+4*0]
dd [0x31E6640+4*[[0x31E663C]+14B8]]
dc [0x31E6640+4*[[0x31E663C]+14B8]]+320 //0x2E怪物类型 选中名字
mov edi,dword ptr ds:[0x31E663C]
MOV EAX,DWORD PTR DS:[EDI+0x14B8]
push eax
mov ecx,edi
CALL 004CBFC0 //不是的
004CBFC8 - 81 FA 0F270000 - cmp edx,0000270F
004CBFCE - 0F87 C8000000 - ja Client.exe+CC09C
004CBFD4 - 8B 0C 95 40661E03 - mov ecx,[edx*4+Client.exe+2DE6640] <<
004CBFDB - 85 C9 - test ecx,ecx
分析NPC对话CALL
分析思路:
1、打开NPC对话时 一般会访问NPC对象数据,可以用CE尝试找出对NPC对象访问的代码,然后回溯。
2、打开NPC对话时 可能会与服务器通讯。那么可以尝试发包函数处下断点回溯。
#define BaseAllObjList 0x31E6640//所有对象数组 dd [031CE740+4*0]
#define BaseRoleObj 0x31E663C //角色对象基址<自己>
所有对象基址+4*[[个色对象基址]+14b8]
dd [45E4A88+4*0]
+008 //对象类型分类编号 0X2E 0x31是玩家 0x55 动作对象
+314 //选中状态,是否显示了血条
+320 //怪物名字
+380 //死亡状态 死亡为1 未死亡为0
+768 //
+5b4 //怪物血量
+5B8 //怪物等级
+1018 //X
+1020 //Y
+1024 //X
+102c //Y
[[0x31E663C]+14B8] //下标
dd [0x31E6640+4*0]
dd [0x31E6640+4*[[0x31E663C]+14B8]]
dc [0x31E6640+4*[[0x31E663C]+14B8]]+320 //0x2E怪物类型 选中名字
mov edi,dword ptr ds:[0x31E663C]
MOV EAX,DWORD PTR DS:[EDI+0x14B8]
push eax
mov ecx,edi
CALL 004CBFC0 //不是的
004CBFC8 - 81 FA 0F270000 - cmp edx,0000270F
004CBFCE - 0F87 C8000000 - ja Client.exe+CC09C
004CBFD4 - 8B 0C 95 40661E03 - mov ecx,[edx*4+Client.exe+2DE6640] <<
004CBFDB - 85 C9 - test ecx,ecx