上一节课我们自己写了段代码,了解了 基址+偏移 内存读写方式。在这一节课我们将一起来找《武林外传》这个游戏的,人物角色对象的一级基址;
HW :硬件写入
HW 04F3303C //写入 内存地址时 断下来
HD 04F3303C //删除硬件断点
esi=04F32DE0
找ESI值的来源
mov esi,ecx; 相当于高级语言的 esi:=ecx;
找ECX值的来源
HR 04F3303C //读取 内存地址时 断下来
4546AA 向上回溯
dd [[05F10490+14]+1c ]+25c
dd [[[[ecx+24]+918]+14]+1c ]+25c
dd [[[[[95E800+1c]+24]+918]+14]+1c]+25c
1、分析角色属性。2、API断点send。3、找打坐CALL。
教学重点:
1、会用API断点send回溯找打坐CALL。
上一节课我们找到了,游戏的一级基址是:95E800 ;
接下来我们对角色的的常用属性进行一下偏移分析;
血值,魔力值,坐标
dd [[[[[95E800+1c]+24]+918]+14]+1c ] //角色对象基址
+3C //当前坐标 x,h,y
+7C //当前坐标 X,h,y
+25c //当前血值
+260 //当前魔力值
+274 //血值上限
+278 //魔力值上限
+28c //防御
send //发送数据API函数
bp send
隐性参数ECX传递对象的基址
ecx=4E54F68
push 1
call 452b20
//正确的打坐CALL
push 1
mov ecx,051352d0 // [[[[[95E800+1c]+24]+918]+14]+1c ]
call 452b20