ELF文件查看利器之objdump用法

2023-10-13 02:38
文章标签 查看 用法 elf 利器 objdump

本文主要是介绍ELF文件查看利器之objdump用法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Android在NDK开发工具中提供了objdump,用来帮助开发者查看编译后目标文件的组成结构和具体内容。

常用的有以下几个功能选项:

1)-a或者--archive-headers

这个参数起到的作用和ar命令相似,用来看一个.a静态库文件中包含了哪些目标文件。

2)-f或者--file-headers

输出目标ELF文件头中包含的信息,例如:


表明这是个ELF文件,支持处理器指令集是armv5te,等等。总体来说,信息量有限。

3)-h或者--[section-]headers

输出目标文件中节表(Section Table)中所包含的所有节头(Section Header)的信息,例如:


可以看到,这个文件共有18个有效节区。从中,我们可以了解到每个节区的名字,大小,和文件头的偏移位置,对齐属性,以及其它的一些属性。

4)-x或者--all-headers

显示目标文件的所有头的信息,包括ELF文件头、程序头(Program Header)和节头(Section Header)。除了这些头之外,还包括动态节区(Dynamic Section)和符号表(Symbol Table)内的信息。例如:


5)-d或者--disassemble

反汇编目标ELF文件中包含可执行指令的哪些节区中的内容,例如:


如果有汇编语言的功底,就可以通过这个命令来探究目标文件中每个函数的实现逻辑,非常的方便。

6)-D或者--disassemble-all

-D与前面的-d类似,唯一的不同是,用-D会反汇编目标ELF文件中的所有内容,而前面的-d只会反汇编可执行代码的部分。

7)-s或者--full-contents

显示目标文件每个节区的二进制完整内容,对应的会显示该内容在目标文件中的偏移位置,还有将内容转换成ASCII码的形式,例如:


8)-S或者--source

混合显示源码和汇编代码,如果编译目标文件的时候指定了-g参数的话,效果会非常明显。否则,和-d参数没有什么区别,事实上-S参数默认包含了-d参数。

9)-t或者--syms

输出目标文件的符号表(Symbol Table),即目标ELF文件中名字叫做.symtab节内的内容。

10)-T或者--dynamic-syms

输出目标文件的动态符号表(Dynamic Symbol Table),即目标ELF文件中名字叫做.dynsym节内的内容,例如:


通过这张表内的信息,可以看出由本ELF文件中导出的符号,和需要从别的动态库中导入的符号。如果第三列显示“*UND*”表明这个符号在本ELF文件中未定义,也就是说这个符号要从别的动态库中导入,其它的情况表明这个符号由本ELF文件中定义。

11)-r或者--reloc

显示目标文件的静态重定位入口。

12)-R或者--dynamic-reloc

显示目标文件的动态重定位入口,例如:


这个参数仅仅对于动态目标文件有意义,比如动态库文件(.so)。

13)-j或者--section=<NAME>

表示只显示名字为“NAME”节区中的内容。

这篇关于ELF文件查看利器之objdump用法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/200186

相关文章

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

java之Objects.nonNull用法代码解读

《java之Objects.nonNull用法代码解读》:本文主要介绍java之Objects.nonNull用法代码,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录Java之Objects.nonwww.chinasem.cnNull用法代码Objects.nonN

mysql如何查看当前连接数

《mysql如何查看当前连接数》:本文主要介绍mysql如何查看当前连接数问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql查看当前连接数查看mysql数据库允许最大连接数总结mysql查看当前连接数查看当前连接数SHOW STATUS LIKE

JavaScript Array.from及其相关用法详解(示例演示)

《JavaScriptArray.from及其相关用法详解(示例演示)》Array.from方法是ES6引入的一个静态方法,用于从类数组对象或可迭代对象创建一个新的数组实例,本文将详细介绍Array... 目录一、Array.from 方法概述1. 方法介绍2. 示例演示二、结合实际场景的使用1. 初始化二

一文带你了解SpringBoot中启动参数的各种用法

《一文带你了解SpringBoot中启动参数的各种用法》在使用SpringBoot开发应用时,我们通常需要根据不同的环境或特定需求调整启动参数,那么,SpringBoot提供了哪些方式来配置这些启动参... 目录一、启动参数的常见传递方式二、通过命令行参数传递启动参数三、使用 application.pro

关于@RequestParam的主要用法详解

《关于@RequestParam的主要用法详解》:本文主要介绍关于@RequestParam的主要用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 基本用法2. 默认值3. 可选参数4. 绑定到对象5. 绑定到集合或数组6. 绑定到 Map7. 处理复杂类

基于@RequestParam注解之Spring MVC参数绑定的利器

《基于@RequestParam注解之SpringMVC参数绑定的利器》:本文主要介绍基于@RequestParam注解之SpringMVC参数绑定的利器,具有很好的参考价值,希望对大家有所帮助... 目录@RequestParam注解:Spring MVC参数绑定的利器什么是@RequestParam?@

查看Oracle数据库中UNDO表空间的使用情况(最新推荐)

《查看Oracle数据库中UNDO表空间的使用情况(最新推荐)》Oracle数据库中查看UNDO表空间使用情况的4种方法:DBA_TABLESPACES和DBA_DATA_FILES提供基本信息,V$... 目录1. 通过 DBjavascriptA_TABLESPACES 和 DBA_DATA_FILES

SQL中的CASE WHEN用法小结

《SQL中的CASEWHEN用法小结》文章详细介绍了SQL中的CASEWHEN函数及其用法,包括简单CASEWHEN和CASEWHEN条件表达式两种形式,并通过多个实际场景展示了如何使用CASEWH... 目录一、简单CASE WHEN函数:二、CASE WHEN条件表达式函数三、常用场景场景1:不同状态展