反汇编测试

反汇编测试

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中每一条语句引起的变化情况

posted @ 2021-11-06 17:33  djx20191313  阅读(56)  评论(0编辑  收藏  举报