前言
就前文看起来,似乎我讲的东西根本没用。ROM是只读的,根本就没法写自己的程序,说那么多有什么用吗?非也。通过一个叫ROP的神奇东西,我们可以劫持程序执行方向,同样可以达到“编程”的目的。
建议先了解C语言再来看这一节。
ROP
简介
ROP的全称为Return-oriented programming(返回导向编程),这是一种高级的内存攻击技术,可以用来绕过程序代码不可写入的限制,实现编程的目的。
具体来讲,因为程序将函数调用后返回的地址存储在栈中(详见前文),因此,如果我们能够操纵栈中的值,就可以间接控制程序的执行顺序。这种操作叫做ROP,它在黑客圈子中被广泛运用,可以让程序执行黑客想要的功能,达到攻击的目的。
具体运用
程序在正常运作的时候,当然不会自己把栈搞乱,造成程序运行出错。但是有些程序bug,会造成所谓栈溢出的现象,使用户的输入覆盖掉栈的某些部分。这样,只要我们合理构造输入的字符串,就能控制程序的走向,以达到目的。