Gdb 无法设置断点
我正在尝试获取Gdb 无法设置断点,gdb,buffer-overflow,disassembly,Gdb,Buffer Overflow,Disassembly,我正在尝试获取buf的起始地址。因此,我编译以下程序并将其加载到gdb中 #include <stdio.h> #include <string.h> int main(int argc, char **argv) { char buf[128]; if(argc < 2) return 1; strcpy(buf, argv[1]); printf("%s\n", buf); return 0; } 为了找到bu
buf
的起始地址。因此,我编译以下程序并将其加载到gdb中
#include <stdio.h>
#include <string.h>
int main(int argc, char **argv) {
char buf[128];
if(argc < 2) return 1;
strcpy(buf, argv[1]);
printf("%s\n", buf);
return 0;
}
为了找到buf的起始地址,我需要查看加载到eax
中的地址。当我在0x080483e5
或0x080483ee
设置断点时,我得到以下结果
(gdb) b 0x080483eb
Function "0x080483eb" not defined.
Make breakpoint pending on future shared library load? (y or [n])
(gdb) run test
Starting program: /levels/level05 test
test
Program exited normally.
我做错了什么?为什么程序执行不在该地址暂停?如果要在地址设置断点,必须说
b*0x080483eb
有关更多信息,请参阅
您还应该使用-g编译程序,而不进行优化。您只需中断main
即可在到达main时停止,使用n
步进几行,然后使用p buf
打印buf
(gdb) b 0x080483eb
Function "0x080483eb" not defined.
Make breakpoint pending on future shared library load? (y or [n])
(gdb) run test
Starting program: /levels/level05 test
test
Program exited normally.