标签:运行 恢复 log gdb调试 call 结构 跟踪 inf 内存
gcc -S -o main.s main.c
,将下面c程序“week04学号.c”编译成汇编代码int g(int x){ return x+3; } int f(int x){ int i = 学号后两位; return g(x)+i; } int main(void){ return f(8)+1; }
gcc -S -o main.s main.c
,将下面c程序“week04学号.c”编译成汇编代码int g(int x){ return x+3; } int f(int x){ int i = 学号后两位; return g(x)+i; } int main(void){ return f(8)+1; }
gdb
跟踪汇编代码,在纸上画出f中每一条语句引起的eip(rip),ebp(rbp),esp(rsb),eax(rax)的值和栈的变化情况。提交照片,要有学号信息。gcc - g XX.c -o XX -m32
指令在64位的机器上产生32位汇编gdb XX
指令进入gdb调试器指令 | eip | ebp | esp | eax | 栈 |
---|---|---|---|---|---|
push %ebp | 0x80483e6 | 0xbfffef58 | 0xbfffef50 | 0xb7fbcdbc | 0x8048411 0x8 0x0 |
mov %esp,%ebp | 0x80483e7 | 0xbfffef58 | 0xbfffef4c | 0xb7fbcdbc | 0xbfffef58 0x8048411 0x8 0x0 |
sub $0x10,%esp | 0x80483e9 | 0xbfffef4c | 0xbfffef4c | 0xb7fbcdbc | 0xbfffef58 0x8048411 0x8 0x0 |
movl $0xc,-0x4(%ebp) | 0x80483ec | 0xbfffef4c | 0xbfffef3c | 0xb7fbcdbc | 0x8048441 0xb7fbb3dc 0x80481ec 0x8048429 |
pushl 0x8(%ebp) | 0x80483f3 | 0xbfffef4c | 0xbfffef3c | 0xb7fbcdbc | 0x8048441 0xb7fbb3dc 0x80481ec 0x1e |
call 0x80483db | 0x80483f6 | 0xbfffef4c | 0xbfffef38 | 0xb7fbcdbc | 0x8 0x8048441 0xb7fbb3dc 0x80481ec |
add $0x4,%esp | 0x80483fb | 0xbfffef4c | 0xbfffef38 | 0xb 11 | 0x8 0x8048441 0xb7fbb3dc 0x80481ec |
mov %eax,%edx | 0x80483fe | 0xbfffef4c | 0xbfffef3c | 0xb 11 | 0x8048441 0xb7fbb3dc 0x80481ec 0x1e |
mov -0x4(%ebp),%eax | 0x8048400 | 0xbfffef4c | 0xbfffef3c | 0xb 11 | 0x8048441 0xb7fbb3dc 0x80481ec 0x1e |
add %edx,%eax | 0x8048403 | 0xbfffef4c | 0xbfffef3c | 0x1e 30 | 0x8048441 0xb7fbb3dc 0x80481ec 0x1e |
leave | 0x8048406 | 0xbfffef58 | 0xbfffef50 | 0x29 41 | 0x8048411 0x8 0x0 |
ret | 0x8048417 | 0xbfffef58 | 0xbfffef58 | 0x2a 42 | 0x0 |
标签:运行 恢复 log gdb调试 call 结构 跟踪 inf 内存
原文地址:https://www.cnblogs.com/besty-zyx/p/9859360.html