【发布时间】:2019-06-05 16:19:31
【问题描述】:
为什么你只能在大型应用程序中找到jmp esp?
在这个小程序中你找不到jmp esp。但为什么?
这是源代码:
#include <stdio.h>
int main(int argc, char **argv)
{
char buffer[64];
printf("Type in something: ");
gets(buffer);
return 0;
}
【问题讨论】:
-
没有 x86 机器指令的汇编符号字面意思是
jmp esp。有一条指令,其汇编符号在 Intel-ese 中为jmp dword ptr [esp](编码为 0xFF 0x24 0x24),如果它已生成,您的grep会发现,但我想不出 C 编译器会在任何情况下永远生成该指令。您在哪里阅读或听说您应该查找此说明? -
@bitfriends 这本书叫什么名字,作者是谁,出版日期是什么时候?
-
@bitfriends 这本书:rheinwerk-verlag.de/hacking-security_4382 ?
-
谢谢。我很遗憾地说我付不起 44,90 欧元只是为了看看这本书是否真的说缓冲区溢出涉及
jmp esp指令。不过,我的猜测是,您对函数返回如何在 x86 上工作的描述有点过于字面化了。您应该寻找的指令拼写为ret。 -
如果你真的想学习如何做这样的漏洞利用,你首先需要学习目标平台的汇编语言。
标签: c assembly gdb exploit objdump