我试图找出一步一步地进行藏匿粉碎的方法.我已经使用谷歌无济于事,我仍然不知道为什么我的EIP没有被覆盖.我有这个示例程序:
1 #include <stdio.h>
2 #include <string.h>
3
4 int main(int argc, char *argv[])
5 {
6 char buf[10];
7
8 strcpy(buf, argv[1]);
9 printf("Done.\n");
10 return 0;
11
12 }
Run Code Online (Sandbox Code Playgroud)
它是用编译的
gcc -g -o prog main.c
Run Code Online (Sandbox Code Playgroud)
当我放入很多AAAAAA时,我得到SEGV和寄存器EBP(以及argc和argv地址被覆盖:
Program received signal SIGSEGV, Segmentation fault.
0x08048472 in main (argc=<error reading variable: Cannot access memory at address 0x41414141>, argv=<error reading variable: Cannot access memory at address 0x41414145>)
at main.c:12
12 }
(gdb) info reg
eax 0x0 0
ecx 0x41414141 1094795585
edx 0xb7fbb878 …Run Code Online (Sandbox Code Playgroud)