objdump按照指定架构反汇编 裸二进制文件

因为某些特殊原因,不会把汇编代码直接编译成一个完整的可执行文件,直接编译成纯二进制的文件,以便读到内存中,供其他程序执行使用。例如:

/prj1$ cat bin.S
.globl _start.code16
_start:mov $0x3f8, %dxadd %bl, %aladd $'0', %alout %al, (%dx)mov $'\n', %alout %al, (%dx)

使用如下命令,编译成相应架构下的字节文件:

as -32 bin.S -o bin.o
ld -m elf_i386 --oformat binary -N -e _start -Ttext 0x10000 -o Bin.bin bin.o

如果这个文件是别人发送个你的,你想知道这个文件具体是在做什么话,可以写一个程序,把这个文件读内存中,gdb调试一下,就知道这个文件中的代码是干啥的。有时候,这样也不是很方便,我们可以采用objdump直接反汇编。由于bin.bin并没有编程成相应的可执行文件格式,所以objdump -S bin.bin是会失败的,如下所示:

/prj1$ objdump -S  bin.bin
objdump: bin.bin: 不可识别的文件格式

我们查一下,本机的objdump支持哪些指令架构,直接objdump --help就可以看到:

objdump:支持的目标: elf64-x86-64 elf32-i386 elf32-iamcu elf32-x86-64 a.out-i386-linux pei-i386 pei-x86-64 elf64-l1om elf64-k1om elf64-little elf64-big elf32-little elf32-big pe-x86-64 pe-bigobj-x86-64 pe-i386 plugin srec symbolsrec verilog tekhex binary ihex
objdump:支持的体系结构: i386 i386:x86-64 i386:x64-32 i8086 i386:intel i386:x86-64:intel i386:x64-32:intel i386:nacl i386:x86-64:nacl i386:x64-32:nacl iamcu iamcu:intel l1om l1om:intel k1om k1om:intel plugin下列 i386/x86-64 特定的反汇编器选项在使用 -M 开关时可用(使用逗号分隔多个选项):x86-64      Disassemble in 64bit modei386        Disassemble in 32bit modei8086       在 16 位模式下反汇编att         用 AT&T 语法显示指令intel       用 Intel 语法显示指令att-mnemonicDisplay instruction in AT&T mnemonicintel-mnemonicDisplay instruction in Intel mnemonicaddr64      假定 64 位地址大小addr32      假定 32 位地址大小addr16      假定 16 位地址大小data32      假定 32 位数据大小data16      假定 16 位数据大小suffix      在 AT&T 语法中始终显示指令后缀amd64       Display instruction in AMD64 ISAintel64     Display instruction in Intel64 ISA

因为我们知道,这个文件是按照 i386汇编搞的,所以我们直接如下操作就行了:

/prj1$ objdump -m att  -b binary -D bin.bin bin.bin:     文件格式 binaryobjdump: can't use supplied machine att
/prj1$ objdump -m i386  -b binary -D bin.bin bin.bin:     文件格式 binaryDisassembly of section .data:00000000 <.data>:0:  ba f8 03 00 d8          mov    $0xd80003f8,%edx5:   04 30                   add    $0x30,%al7:  ee                      out    %al,(%dx)8:  b0 0a                   mov    $0xa,%ala:   ee                      out    %al,(%dx)

att 方式是不对,反汇编失败
按照i386强行反汇编二进制文件。

objdump按照指定架构反汇编 裸二进制文件相关推荐

  1. 反汇编工具objdump的使用以及反汇编文件的解读

    什么是反汇编 反汇编顾名思义就是汇编的逆过程,将二进制文件反汇编成汇编代码.arm-linux-objdump是交叉编译工具链里的一个工具,专门用来反汇编的,将二进制代码反汇编成汇编代码来查看. 为什 ...

  2. objdump反汇编用法示例

    objdump反汇编用法示例 原文:http://blog.csdn.net/zoomdy/article/details/50563680 -d:将代码段反汇编 -S:将代码段反汇编的同时,将反汇编 ...

  3. c语言gcc汇编文件,[汇编]gcc生成汇编.s文件 $ gcc -Og -S sum.c /$ gcc -Og -S -masm=intel sum.c 与 反汇编 objdump...

    目录 - C语言源码文件:sum.c - gcc 生成的汇编语言文件 sum.s x86-64 AT&T 语法格式 x86-64 Intel格式 - 反汇编 objdump 3.1 输出 AT ...

  4. objdump(Linux)反汇编命令使用指南

    1 objdump反汇编示例 1.1 显示```main.c```的汇编代码 1.2 目标文件反汇编 1.3 可执行文件反汇编 1.4 objdump反汇编常用参数 2 objdump帮助信息 3 参 ...

  5. linux gcc反汇编,objdump(Linux)反汇编命令使用指南

    1 objdump反汇编示例 1.1 显示main.c的汇编代码 1.2 目标文件反汇编 1.3 可执行文件反汇编 1.4 objdump反汇编常用参数 2 objdump帮助信息 3 参考资料 1 ...

  6. 【CMAKE】指定编译器架构(x86 or x64)

    1.Windows vs2015 x64编译器为例,cmake命令如下: cmake -G "Visual Studio 14 Win64" path\to\source\dir ...

  7. 服务器物理架构,裸金属服务器架构介绍

    最近看到很多文章介绍裸机云.云原生等相关知识,今天和大家介绍一下原生架构,希望可以帮助大家理解裸机云原生架构或裸金属服务器架构. 原生架构又称为裸金属架构,它将Hypervisor直接安装在硬件上,将 ...

  8. (转)逆向与反汇编工具

    第 1 章           逆向与反汇编工具 了解反汇编的一些背景知识后,再深入学习IDA Pro之前,介绍其他一些用于二进制文件的逆向工程工具,会对我们学习有所帮助.这些工具大多在IDA之前发布 ...

  9. objdump命令的使用

    objdump命令是Linux下的反汇编目标文件或者可执行文件的命令,它还有其他作用,下面以ELF格式可执行文件test为例详细介绍: objdump -f test 显示test的文件头信息 obj ...

最新文章

  1. 如何在ActionScript 3中将“ Null”(真实的姓氏!)传递给SOAP Web服务
  2. 容器中构建镜像慢,在dockerfile中换源加速
  3. nginx端合并JS
  4. 开源开放 | 熵简科技 AI Lab 开源金融领域中文预训练语言模型 FinBERT
  5. Java并发编程实战~volatile
  6. [BZOJ 5072]小A的树
  7. 好的软件人员必看的书
  8. ubuntu linux 下 adb 连接andoid 设备
  9. JavaScript实现碰撞检测(分离轴定理)
  10. [转]MySQL索引背后的数据结构及算法原理
  11. case when then else end 用法
  12. 英特尔:5G将释放云的潜力,为垂直行业带来巨大商机
  13. 卸载VS2005不完全出现的安装问题
  14. python实现反向传播_如何反向链接列表? (C和Python实现)
  15. jmeter性能测试实战——基础篇
  16. leancloud上传图片js_leanCloud上传多个图片保存到一个数组中的疑惑
  17. ue4 unreal4 自定义网格 绘制自定义网格 绘制面 (Plus)
  18. 低代码开发平台是什么?
  19. MCE | 表观遗传:YTHDF蛋白调节 m6A-RNA
  20. 【智能优化算法-热交换算法】基于热交换优化算法求解多目标优化问题附matlab代码

热门文章

  1. 使用R语言进行Metroplis-in-Gibbs采样和MCMC运行分析
  2. 企业安全风险管理—应对风险
  3. VS2010 数据库操作(基于Access 2013)
  4. GroupDocs.Viewer使用功能总结(下)
  5. 流镜像(华为S9306和S5700)
  6. 我在腾讯云从域名申请到网站备案的操作攻略
  7. 使用Xshell5连接阿里云主机失败
  8. PERT管与PERT二型管的区别
  9. 发货单表格用什么软件做
  10. 浏览器缓存机制(1)