将程序的内存读作数据

时间:2016-07-03 02:13:01

标签: c ram buffer-overflow

我正在看Mario glitch

马里奥游戏手册盒将自己的内存读取为等级数据。

如何访问我正在运行的程序的当前内存? (任何语言,虽然我认为C或汇编是开始的地方)

1 个答案:

答案 0 :(得分:2)

在汇编中,您可以直接读取ESP (stack pointer) and EIP (instruction pointer)寄存器。它们将分别具有堆栈顶部和当前指令的地址。从那里你可以直接读取堆栈和指令的内存。

在该视频中,他们超越了关卡数据,游戏开始将堆栈数据解释为关卡数据。然后,他通过打破包含内存的砖块来写入堆栈中的偏移量,以便进入下一级别。

由于它始终与具有相同数据的砖相同,这意味着内存布局非常具有确定性,对于旧的盒式系统而言,处理器上没有其他任何东西运行也就不足为奇了。如果您有控制台访问权限并且知道偏移量,您可以直接写入数据。