我正在处理一个二进制文件。它有一个地址从123开始的函数。我需要让我的代码执行这个函数。攻击堆栈
二进制文件接受大小为'n'的字节数组,并且不检查边界。整个任务实际上是溢出缓冲区并导致不好的事情发生。
同样,工作是调用地址123并让它执行。我的印象是,如果缓冲区大小是“4”,并且我传递了9个字符,则5个字符将被放置在堆栈上并执行。 (这是真的吗?)
此外,为了让我得到要执行的地址,我想说“致电123”。从我所了解的“电话”是“e8”,不是?
这个问题对我来说有点困惑。如果有人可以帮助我更好地理解它,我将非常感激
(是的,这是一个家庭作业问题)
0xE8是相对调用,你需要调用一个绝对地址。堆栈通常是“浮动”的。 – ruslik 2010-11-03 02:25:00
我希望我们有这些家庭作业.. – ruslik 2010-11-03 02:26:09
只是有点好奇 - 我会认为像这样的安全类会有一个汇编语言的先决条件。这是怎么回事? – 2010-11-03 03:04:33