反汇编测试
基础操作
编译为32位代码
先使用指令sudo apt-get install libc6-dev-i386
安装必备库。
然后可以使用gcc - g example.c -o example -m32
来将C代码编译为32位可执行程序。
gdb
b main
在主函数设置断点。
disassemble
反汇编当前函数的机器码。
i r
或info registers
查看当前寄存器的值。
si
汇编级的指令,步入下一条(进入函数)汇编代码。
ni
汇编级的指令,继续下一条(不进入函数)汇编代码。
display /i $pc
通过PC的值指向是下一条机器码的原理,实现显示当前执行的指令。
通过gcc得到了汇编代码:
测试
gdb调试main文件
disassemble
push:
mov:
call:
mov:
ret:
add:
push:
call:
sub:
call:
mov:
ret:
add:
movl:
pushl:
call:
endbr32:
push:
mov:
call:
mov:
ret:
add:
mov:
add:
pop:
ret:
add:
mov:
add:
leave:
ret:
add:
add:
leave:
ret:
libc:
eip(rip),ebp(rbp),esp(rsb),eax(rax)的值和栈的变化情况:
————————————————————————————————————————————————————————————————
转载麻烦附上本文链接和本声明,感谢!
博主<叶家星>博客园链接如下:https://www.cnblogs.com/yejiaxing-01/