无返回的面向返回编程根kit技术解析
在计算机安全领域,面向返回编程(ROP)是一种强大的攻击技术。本文将深入探讨无返回的面向返回编程根kit的相关技术,包括函数调用、图灵完备性、根kit的设计与实现等方面。
1. 函数调用与图灵完备性
1.1 函数调用
在x86指令集架构中,寄存器eax、ecx和edx由调用者保存,而寄存器ebx、ebp、esi和edi由被调用者保存。为了确保函数返回后,小工具(gadget)仍在控制范围内,我们选择了Gadget - 12:
call dword ptr [ebp - 18]
jmp dword ptr [edi]
1.2 图灵完备性
无返回的小工具与Hovav的小工具一样强大。我们构建了用于加载/存储、算术/逻辑、控制流、有限循环和函数调用的小工具集。这个小工具集是最小的,因为我们可以用它构建任何程序。证明ROP语言是图灵完备的(即能够在图灵机上计算每个图灵可计算函数)是一个开放问题。一种方便有效的方法是使用ROP来模拟另一个图灵完备的系统。
基于小工具集,我们发现无返回的面向返回编程的能力等同于Brainfuck语言,而Brainfuck语言是图灵完备的。Brainfuck语言是一种无goto的编程语言,它有一个隐式的字节指针,可以在30000字节的数组中自由移动。Brainfuck只定义了与指针相关的八条指令(指针递增/递减;指针处的字节递增/递减;读取/写入指针处的字节;开始循环和结束循环)。
我们可以使用小工具集实现Brainfuck的八条指
超级会员免费看
订阅专栏 解锁全文
1421

被折叠的 条评论
为什么被折叠?



