分析思路:
1.打开NPC对话时,一般会访问NPC对象,可以用CE尝试找出对NPC对象访问的代码,然后回溯
2.打开NPC对话是 可能会与服务器通讯,可以尝试发包函数处下断电回溯
dd [31DBEAC] 玩家对象 +8 == 31
+0c [31DBEB0]de xiabiao
+18 玩家名字
+14b8 0xffff 未选中怪物,选中时为所有对象ID
004EC90C 74 1B JE SHORT Client.004EC929
004EC90E 8B0C85 B0BE1D03 MOV ECX,DWORD PTR DS:[EAX*4+31DBEB0]
004EC915 85C9 TEST ECX,ECX
004EC917 74 10 JE SHORT Client.004EC929
004EC919 8B11 MOV EDX,DWORD PTR DS:[ECX]
所以最后的对象为 [31DBEB0 + 4 * [[31DBEAC] + 1BB8] ]
下面我们先来测试这个对不对,能否获取到选中的对象
004D02B8 - 81 FA 0F270000 - cmp edx,0000270F
004D02BE - 0F87 C8000000 - ja Client.exe+D038C
004D02C4 - 8B 0C 95 B0BE1D03 - mov ecx,[edx*4+Client.exe+2DDBEB0] <<1
004D02CB - 85 C9 - test ecx,ecx
004D02CD - 0F84 B9000000 - je Client.exe+D038C
经过测试 1 的call失败
mov edi, [31DBEAC]
MOV EAX,DWORD PTR DS:[EDI+14B8]
push eax
mov ecx, edi
CALL 004D02B0
返回到上层call下断点 一直被断下,所以这个call被排除
****************************************************************************************
004E8A59 - E8 021A1100 - call Client.exe+1FA460
004E8A5E - 8B 97 B8140000 - mov edx,[edi+000014B8]
004E8A64 - 8B 04 95 B0BE1D03 - mov eax,[edx*4+Client.exe+2DDBEB0] <<2
004E8A6B - 85 C0 - test eax,eax
004E8A6D - 74 4A - je Client.exe+E8AB9
返回到了与第一个call相同的上层call,同样是一直被断下,所以这个地址被排除
*************************
追逐自己的梦想----------辅助制作第二十八课:打开系统NPC CALL分析
最新推荐文章于 2023-12-22 19:29:16 发布
本文通过分析游戏客户端代码,探讨了如何找到打开NPC对话的系统调用。作者列举了多个可能涉及打开NPC对话的CALL,并通过测试逐一排除,最终确定了两个有效调用。这些调用可用于辅助制作,实现与NPC交互的功能。
摘要由CSDN通过智能技术生成