学习目标:
任务等级相关数据
作业:
分析更新任务相关CALL 或者是代码
void printfMissionList()
{
DWORD ndStart;
DWORD ndEnd;
char *szpCurMissionName;//任务名
BYTE nbLevel;//任务等级
//[[[0XF598C0]+2A4]+4C4] //起始地址
//[[[0XF598C0]+2A4]+4C8] //结束地址
//[[[0XF598C0]+2A4]+4C4]+8
// dc [0x2FA3D6C]+ [[[0XF598C0]+2A4]+4c4]*0xc0+4]*0c0+4
__try
{
ndStart=*(DWORD*)BaseF1_F10ArgEcx;
ndStart=*(DWORD*)(ndStart+0x2A4);
ndStart=*(DWORD*)(ndStart+0x4d4);
ndEnd=*(DWORD*)BaseF1_F10ArgEcx;
ndEnd=*(DWORD*)(ndEnd+0x2A4);
ndEnd=*(DWORD*)(ndEnd+0x4d8);
__asm
{
mov edi,ndStart
GotoStart:
MOV EAX,DWORD PTR DS:[EDI]
MOV ECX,DWORD PTR DS:[0x2FA3D6C] ;// 150C4
LEA EAX,DWORD PTR DS:[EAX+EAX*2] ; // [edx*3]
SHL EAX,0x6 ;// eax=eax*0x40 [edi]*0xc0
任务等级相关数据
作业:
分析更新任务相关CALL 或者是代码
void printfMissionList()
{
DWORD ndStart;
DWORD ndEnd;
char *szpCurMissionName;//任务名
BYTE nbLevel;//任务等级
//[[[0XF598C0]+2A4]+4C4] //起始地址
//[[[0XF598C0]+2A4]+4C8] //结束地址
//[[[0XF598C0]+2A4]+4C4]+8
// dc [0x2FA3D6C]+ [[[0XF598C0]+2A4]+4c4]*0xc0+4]*0c0+4
__try
{
ndStart=*(DWORD*)BaseF1_F10ArgEcx;
ndStart=*(DWORD*)(ndStart+0x2A4);
ndStart=*(DWORD*)(ndStart+0x4d4);
ndEnd=*(DWORD*)BaseF1_F10ArgEcx;
ndEnd=*(DWORD*)(ndEnd+0x2A4);
ndEnd=*(DWORD*)(ndEnd+0x4d8);
__asm
{
mov edi,ndStart
GotoStart:
MOV EAX,DWORD PTR DS:[EDI]
MOV ECX,DWORD PTR DS:[0x2FA3D6C] ;// 150C4
LEA EAX,DWORD PTR DS:[EAX+EAX*2] ; // [edx*3]
SHL EAX,0x6 ;// eax=eax*0x40 [edi]*0xc0

这篇博客详细分析了游戏外挂中涉及的任务等级数据,包括如何通过内存地址获取任务起始和结束地址,以及如何使用汇编指令解析任务等级。博主展示了关键代码段,并解释了其功能,如遍历任务列表,检查任务等级是否大于特定值。此外,还提到了可能的错误处理和调试方法。
最低0.47元/天 解锁文章
732

被折叠的 条评论
为什么被折叠?



