我阅读了 shellcoder 的手册并尝试尝试书中提供的问题。然而,鉴于这本书是十多年前写的,很难跟上。我遇到的问题之一是在我反汇编正在使用它的函数后,在调用 gets 和 printf 时设置断点。每当我设置断点并运行它时,我的程序就会停止。我很想知道为什么。这是第 2 章的赋值,涉及处理堆栈上溢出缓冲区的特定部分。我在 64 位 Kali Lix vim 上运行我的代码。这是源代码
#include <stdio.h>
void return_input (void){
char array[30];
gets(array);
printf("%s\n", array);
}
main(){
return_input();
return 0;
}
我用这些标志编译了代码 cc -m32 -mpreferred-stack-boundary=2 -ggdb -fmax-errors=1 -w overflow.c -o overflow 并且当我反汇编它时它给了我这个,在gets和prinft上放置中断并试图运行它。
就像我说的,我更感兴趣的是为什么我不能让程序运行到断点。