33. void test_function(int a, int b, int c, int d)
{
int flag;
char buffer[10];
flag = 31337; //
buffer[0] = 'A';
}
int main()
{
test_function(1, 2, 3, 4); //
}
!33
34. gdb -q ./stack_example
Reading symbols from ./stack_example...done.
(gdb) list
1
2 void test_function(int a, int b, int c, int d)
3 {
4 int flag;
5 char buffer[10];
6
7 flag = 31337;
8 buffer[0] = 'A';
9 }
10
(gdb) list
11 int main()
12 {
13 test_function(1, 2, 3, 4);
14 test_function(5,6,7,8);
15 }
16
(gdb) break 13
Breakpoint 1 at 0x1147: file stack_example.c, line 13.
(gdb) break test_function
Breakpoint 2 at 0x1135: file stack_example.c, line 7.
(gdb) break 14
Breakpoint 3 at 0x1160: file stack_example.c, line 14.
!34
35. (gdb) run
Starting program: /root/rg/stack_example
Breakpoint 1, main () at stack_example.c:13
13 test_function(1, 2, 3, 4);
(gdb) i r rsp rbp
rsp 0x7fffffffe350 0x7fffffffe350
rbp 0x7fffffffe350 0x7fffffffe350
(gdb) cont
Continuing.
Breakpoint 2, test_function (a=1, b=2, c=3, d=4) at stack_example.c:7
7 flag = 31337;
(gdb) i r rsp rbp
rsp 0x7fffffffe340 0x7fffffffe340
rbp 0x7fffffffe340 0x7fffffffe340
(gdb) cont
Continuing.
Breakpoint 3, main () at stack_example.c:14
14 test_function(5,6,7,8);
(gdb) i r rsp rbp
rsp 0x7fffffffe350 0x7fffffffe350
rbp 0x7fffffffe350 0x7fffffffe350
!35