反汇编测试

2021/11/6 17:13:12

本文主要是介绍反汇编测试,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

反汇编测试

作者:20191322wyl

目录
  • 反汇编测试
    • 源代码:
    • 安装库
    • 编译
    • 分析过程
    • 变化情况

源代码:

int g(int x){
    return x+3;
}
int f(int x){
     int i = 22;
    return g(x)+i;
}
int main(void){
    return f(8)+1;
}

安装库

sudo apt-get install libc6-dev-i386

编译

gcc -g week20191322.c -o example -m32

在64位的机器上产生32位汇编,然后使用gdb example指令进入gdb调试器

分析过程

  1. 在main函数处设置一个断点b main,在r一下,使用disassemble

获取汇编代码,用i(info) r(registers)指令查看各寄存器的值:

  1. 使用命令display /i $pc设置每次都显示当前执行的命令

  2. push

  3. mov

  4. sub

  5. call

  6. add

  7. movl

  8. push

  9. call

  10. add

  11. mov

  12. add

  13. leave

  14. ret

变化情况

20191322wyl eax ebp esp eip
push 0x56559000 0xffffd138 0xffffd130 0x5655619e 0x565561db
move 0x56559000 0xffffd138 0xffffd12c 0x5655619f 0xfffd138
sub 0x56559000 0xffffd12c 0xffffd12c 0x565561a1 0xffffd138
call 0x56559000 0xffffd12c 0xffffd11c 0x565561a4 0x5655620d
add 0x565561a9 0xffffd12c 0xffffd11c 0x565561a9 0x5655620d
movl 0x56559000 0xffffd12c 0xffffd11c 0x565561ae 0x5655620d
push 0x56559000 0xffffd12c 0xffffd11c 0x565561b5 0x5655620d
call 0x56559000 0xffffd12c 0xffffd118 0x565561b8 0x8
add 0xb 0xffffd12c 0xffffd118 0x565561bd 0x8
mov 0xb 0xffffd12c 0xffffd11c 0x565561c0 0x5655620d
add 0xb 0xffffd12c 0xffffd11c 0x565561c3 0x0
leave 0x21 0xffffd12c 0xffffd11c 0x565561c5 0x5655620d
ret 0x21 0xffffd138 0xffffd130 0x565561c6 0x565561db


这篇关于反汇编测试的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程