反汇编测试
1、通过输入gcc -S -o week20191313.s week20191313.c
将下面c程序”week0303学号.c“编译成汇编代码
2、使用指令在64位的机器上产生32位汇编,然后使用gdb example指令进入gdb调试器
gcc -g week20191313.c -o week20191313 -m32
3、进入之后先在main函数处设置一个断点,再run一下,使用disassemble(disas)指令获取汇编代码
用i(info) r(registers)指令查看各寄存器的值:
可见此时主函数的栈基址为0xffffd3e8,用x(examine)指令查看内存地址中的值,但目前%esp所指堆栈内容为0,%ebp所指内容也为0
首先,结合display命令和寄存器或pc内部变量,做如下设置:display /i $pc,这样在每次执行下一条汇编语句时,都会显示出当前执行的语句。
开始调试
endbr32
push
mov
sub
call
add
movl
pushl
call
add
mov
add
leave
ret
主函数的汇编代码
f函数的汇编代码
g函数的汇编代码
f中每一条语句引起的变化情况