大航海时代ol台服找Call记(十八)任务数据分析

点击冒险委托人,按选择任务的序号搜索到地址,然后 find who access this address
00A23814 - 89 81 94000000 - mov [ecx+00000094],eax -->在此行断下
GVOnline.exe+6237F0 - 55 - push ebp
GVOnline.exe+6237F1 - 8B EC - mov ebp,esp
GVOnline.exe+6237F3 - 8B 55 08 - mov edx,[ebp+08]
GVOnline.exe+6237F6 - 83 FA FF - cmp edx,-01 { 255 }
GVOnline.exe+6237F9 - 74 24 - je GVOnline.exe+62381F
GVOnline.exe+6237FB - F7 41 28 00000400 - test [ecx+28],00040000 { (6) }
GVOnline.exe+623802 - 74 1B - je GVOnline.exe+62381F
GVOnline.exe+623804 - 8B 81 F8020000 - mov eax,[ecx+000002F8] {-----> 任务总数? }
GVOnline.exe+62380A - 85 C0 - test eax,eax
GVOnline.exe+62380C - 74 11 - je GVOnline.exe+62381F
GVOnline.exe+62380E - 48 - dec eax
GVOnline.exe+62380F - 3B D0 - cmp edx,eax
GVOnline.exe+623811 - 0F42 C2 - cmovb eax,edx
GVOnline.exe+623814 - 89 81 94000000 - mov [ecx+00000094],eax {=====> eax = 任务序号 } 断在此处
GVOnline.exe+62381A - E8 D1EDFFFF - call GVOnline.exe+6225F0
GVOnline.exe+62381F - 5D - pop ebp
GVOnline.exe+623820 - C2 0400 - ret 0004 { 4 }
断下后,往上看 mov eax,[ecx+000002F8] 调试下,[ecx+000002F8] = 3,等于任务总数
Browse this memory 看下内存数据.

一眼就看下如上图,跟背包、交易所、酒馆的数组结构明显一模一样。到第1个任务看下



00010300 利马冒险家公会?
按照前面交易所商品的数据结构,任务的首地址应该是在:ecx + 2FB --0C = 1381C104
Pointer scan this address 可得基址为
[1291264]+B14+4 = 首地址
标 题:[[[[[1291264]+B14+4]+8]+c]+4]
任务内容:[[[[[1291264]+B14+4]+8]+c]+c]
