8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

征途内数据call及查找方法

IT171中文网 管理员组 2013-10-1 1202

征途数据及查找方法
寻路call:
查找方法:在征途中先M调出大地图,用CE搜索横坐标的位置,剩余结果几个(一般用第一个),我们查找访问该地址的代码,把新出的数据地址在OD中跟随,然后在该地址处下段点(我们是要找的是他的调用这个地址的子程序也就是call)然后F8返回调用该地址的子程序。这时我们发现有个call,他的参数也是XY轴.但我们写call游戏出错了.其实这个call不是我们要找的,他只是处理这个数据而已,所以我们要F8返回调用他的子程序,这时我们可以看到一个call,经检测发现是我们要找的call.
注意事项:我们写call时,要保持堆栈的平衡,(我们进入这个寻路call发现有调用EAX和ECX的地方,看call内数据)所以我们写call是也要把call数据中的第一句和第二局加上.还有就是在易语言调用时把XY坐标写成十六进制的
Call内数据
004B1BB0 56 PUSH ESI
004B1BB1 8BF1 MOV ESI,ECX
004B1BB3 8B06 MOV EAX,DWORD PTR DS:[ESI]
004B1BB5 FF90 DC000000 CALL DWORD PTR DS:[EAX+DC]
Call数据
00554197 A1 389AD400 MOV EAX,DWORD PTR DS:[D49A38]
0055419C 8B88 6C050000 MOV ECX,DWORD PTR DS:[EAX+56C]
005541A2 6A 00 PUSH 0
005541A4 6A 00 PUSH 0
005541A6 55 PUSH EBP (Y坐标)
005541A7 53 PUSH EBX (X坐标)
005541A8 E8 03DAF5FF CALL zhengtu.004B1BB0
Call写法
MOV EAX,DWORD PTR DS:[0D49A38]
MOV ECX,DWORD PTR DS:[EAX+56C]
PUSH 0
PUSH 0
PUSH XX (Y坐标)
PUSH XX (X坐标)
CALL 004B1BB0

————————————————---分割线———————————————————
开启挂机call:
查找方法:打开征途自带的挂机页面,在OD 中下BP SEND 断点,然后我们勾上开启挂机,OD断下,ctrl+F9返回即可找到.
注意事项:我们写call时,要保持堆栈的平衡,如果发现call上面有call,他们距离很近,那又可能call的参数,是上个call调用的.这样方便我们找到call参数的地址.
Call内数据
0091DCA0 83EC 08 SUB ESP,8 (地址为call)
0091DCA3 56 PUSH ESI
0091DCA4 8BF1 MOV ESI,ECX
0091DCA6 8A46 04 MOV AL,BYTE PTR DS:[ESI+4]
0091DCA9 84C0 TEST AL,AL
Call数据
0091CD33 E8 B873B1FF CALL zhengtu.004340F0 (EAX可能是这个call的返回值)
0091CD38 8BC8 MOV ECX,EAX (EAX= 00D44F28)
0091CD3A E8 610F0000 CALL zhengtu.0091DCA0 (挂机call)

Call写法
MOV ECX,00D44F28
CALL 0091DCA0
Call特征码位置
向上找即可看见call地址
0091DD6E CC INT3
0091DD6F CC INT3
0091DD70 83EC 08 SUB ESP,8
0091DD73 53 PUSH EBX
0091DD74 56 PUSH ESI
0091DD75 8BF1 MOV ESI,ECX
0091DD77 8A46 04 MOV AL,BYTE PTR DS:[ESI+4]
0091DD7A 84C0 TEST AL,AL
————————————————---分割线———————————————————
关闭挂机call:

查找方法:打开征途自带的挂机页面,在OD 中下BP SEND 断点,然后我们取消勾上开启挂机,OD断下,ctrl+F9返回即可找到.
注意事项:我们写call时,要保持堆栈的平衡,如果发现call上面有call,他们距离很近,那又可能call的参数,是上个call调用的.这样方便我们找到call参数的地址.
Call内数据
0091DD70 83EC 08 SUB ESP,8 (关闭内挂call)
0091DD73 53 PUSH EBX
0091DD74 56 PUSH ESI
0091DD75 8BF1 MOV ESI,ECX
0091DD77 8A46 04 MOV AL,BYTE PTR DS:[ESI+4]
0091DD7A 84C0 TEST AL,AL
0091DD7C 74 55 JE SHORT zhengtu.0091DDD3
0091DD7E 8A46 7D MOV AL,BYTE PTR DS:[ESI+7D]
Call数据
0091CD1A E8 D173B1FF CALL zhengtu.004340F0 (EAX可能是这个call的返回值)
0091CD1F 8BC8 MOV ECX,EAX (EAX=00D44F28)
0091CD21 E8 4A100000 CALL zhengtu.0091DD70 (关闭挂机call)

Call写法
MOV ECX,00D44F28
CALL 0091DD70

Call特征码位置
向上找即可看见call地址
0091DE63 885E 7C MOV BYTE PTR DS:[ESI+7C],BL 首
0091DE66 5E POP ESI
0091DE67 5B POP EBX
0091DE68 83C4 08 ADD ESP,8
0091DE6B C3 RETN
0091DE6C CC INT3
0091DE6D CC INT3
0091DE6E CC INT3
0091DE6F CC INT3
0091DE70 83EC 14 SUB ESP,14 尾

————————————————---分割线———————————————————



捡物call:
查找方法:打怪等怪掉落物品,在OD下BP SEND断点,然后去捡物,游戏断下,速度去找,(物品可能会消失)
注意事项:这个有消失时间,所以速度要快,写call时我们要考虑用(找到物品数组)易语言输出,应为那个可能要捡的很可能消失,那么游戏就会出错,我们没法测试.
Call内数据
00495730 64:A1 00000000 MOV EAX,DWORD PTRFS:[0] (call地址)
00495736 6A FF PUSH -1
00495738 68 EE38B400 PUSHzhengtu.00B438EE
0049573D 50 PUSH EAX
0049573E A0 40A6D400 MOV AL,BYTE PTRDS:[D4A640]
00495743 64:8925 0000000>MOV DWORD PTR FS:[0],ESP
0049574A 83EC 18 SUB ESP,18
0049574D A8 01 TEST AL,1
0049574F 55 PUSH EBP
00495750 56 PUSH ESI
00495751 57 PUSH EDI
00495752 8BF9 MOV EDI,ECX
Call数据
0049695E 6A 00 PUSH 0 (普通参数)
00496960 57 PUSH EDI (地面物品地址)
00496961 8BCE MOV ECX,ESI (人物基址)
00496963 E8 C8EDFFFF CALLzhengtu.00495730 (可能是捡物call)
Call写法
PUSH 0
PUSH (地面物品地址)
MOV ECX,(人物基址)
CALL 00495730
Call特征码位置
向上找即可看见call地址
0049574A 83EC 18 SUB ESP,18
0049574D A8 01 TEST AL,1
0049574F 55 PUSH EBP
00495750 56 PUSH ESI
00495751 57 PUSH EDI
00495752 8BF9 MOV EDI,ECX
————————————————---分割线———————————————————
天黑社区 www.byjth.com


最新回复 (31)
全部楼主
返回
发新帖
我也是有底线哒~