zoukankan      html  css  js  c++  java
  • 反汇编测试

    基础操作

    编译为32位代码

    先使用指令sudo apt-get install libc6-dev-i386安装必备库。
    然后可以使用gcc - g example.c -o example -m32来将C代码编译为32位可执行程序。

    gdb

    b main在主函数设置断点。
    disassemble反汇编当前函数的机器码。
    i rinfo 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/
  • 相关阅读:
    记录:2019-06-15
    安卓APP环境搭建
    delphi 各版本的特性
    php.ini文件下载
    mysql数据库目录my.ini的内容
    Windows2008 R2 X64 PHP环境搭建步骤
    窗口关闭时弹出内存不能为read
    Delphi编译选项
    Android中EditText无法再次获得焦点
    Android设置分隔线
  • 原文地址:https://www.cnblogs.com/yejiaxing-01/p/15517161.html
Copyright © 2011-2022 走看看