解读内存转储
这里我们运行binarybook-master\chap02\shooting\shooting.exe
另外还需要使用万能进程内存编辑器:兔耳旋风
运行shooting.exe,先玩一会攒点积分,空格是发射,上下箭头是增减能量
兔耳旋风查看shooting.exe
主线程的ESP寄存器的值为0019FBF4
,也就是栈地址。
ESP的值在每个环境上都不一样,0019FBF4
就是这个栈地址的起点
当前得分为87
,我们在栈数据中搜索"87
"这个值
Alt+F打开检索窗口
双击该地址,主窗口就跳转到该地址
修改一下光标处的值,随便改
然后返回shooting.exe,可以发现得分发生了变化[嘻嘻]
在这种情况下,很难达到的高分也就容易被修改出来了
同样的也可以修改能量ENERGY
成功将ENERGY的值从14变成了30
获取内存转储
随着程序的运行,内存中的数据会不断实时变化,如果要保存某个时刻的状态(快照),我们就需要内存转储,将数据保存为文件
操作系统会按照可执行文件中的内容将程序加载到内存中,但内存中的数据与可执行文件中的数据并不完全相同。