我要她爱而不得要她穷困潦倒 我要她桃花无数都不及我的好
我要她总被辜负尝尝有多煎熬 我要她枕边永远没有依靠
我要她付出真心转身就被丢掉 我要她爱上的人夜夜和她争吵
我要她带给我的伤全都经历一遭
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
入手点是 直接搜索NPC数量 可以从迷宫入口那里 用宝宝出征召回更改NPC数量
然后得到NPC数量的基址+偏移 观察数据窗口就可以得到存放NPC数据的数组了
追踪笔记
mov ecx, dword ptr ds:[0x00E274A8]
0298D8D7 | 898D DCFEFFFF | mov dword ptr ss:[ebp-0x124],ecx | ecx=034CAC68
0298D90E | 8B8D DCFEFFFF | mov ecx,dword ptr ss:[ebp-0x124] |
023B1724 | 894D FC | mov dword ptr ss:[ebp-0x4],ecx |
023B1727 | 8B4D FC | mov ecx,dword ptr ss:[ebp-0x4] |
023B172A | 83C1 14 | add ecx,0x14 |
023D63C4 | 894D FC | mov dword ptr ss:[ebp-0x4],ecx |
023D63C7 | 8B45 FC | mov eax,dword ptr ss:[ebp-0x4] |
023D63CA | 8B40 2C | mov eax,dword ptr ds:[eax+0x2C] |
然后XDBG 数据窗口中观察一下 [0x00E274A8]的值 发现+20的值是存放NPC对象的地方
最终公式
怪物数量=[[0x00E274A8]+0x14+0x2C]
怪物对象 = [[[0x00E274A8]+0x20]+0*4]
怪物ID = [怪物对象+0xFC]
NPC名字解密可以在
符号 模块中选择 3drole.dll 中搜索getname
02BEEDA7 | 8B0D 28F45A03 | mov ecx,dword ptr ds:[<?g_pObjHero@@3PAVCHero@@A>] |
02BEEDAD | E8 6E428EFF | call <3drole.?GetName@CRole@@QBEPBDXZ> |
传入怪物对象 返回NPC名字
char* 使用解密NPC名功能(DWORD NPC对象)
{
UINT32 返回值 = 0;
__try
{
__asm
{
mov ecx,NPC对象;
mov ebx,0x024D3020 // 这里call地址会发生变动 需要用特征码定位一下 每次启动游戏都会变
call ebx
mov 返回值, eax
}
}
__except (1)
{
//MessageBoxA(0, "ERROR", "解密背包对象名字", MB_OK);
}
char* ret32 = (char*)返回值;
return ret32;
}