【发布时间】:2012-10-21 19:25:34
【问题描述】:
对于家庭作业,我正在执行一系列缓冲区溢出攻击。我得到了一个反汇编程序,一个不正确调用gets()的函数的C源代码,以及我应该强制程序调用的其他几个函数的源代码。对于其中一项任务,我必须:
- 注入一些改变值的代码,然后
- 返回上述方法之一
主要是我不明白程序在确定返回位置时在堆栈中的位置。存储在堆栈中的方法的返回地址在哪里?
程序是为 x86 编译的。
【问题讨论】:
-
首先您需要了解在 x86 机器代码中的函数调用中发生了什么。查看
call和ret指令。如果你明白了,你可以尝试了解什么是堆栈帧。
标签: assembly x86 buffer-overflow