学习目标:
任务等级相关数据
作业:
分析更新任务相关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