ELF文件查看利器之objdump用法

2023-10-27

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”节区中的内容。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ELF文件查看利器之objdump用法 的相关文章

  • 有关 paddingStart 使用的冲突 lint 消息

    API 17 RTL 支持发布后 我将以下内容添加到我的清单中 android supportsRtl true 这导致 Lint 在我的视图中有 paddingLeft Right 的地方正确地向我发出这些警告 考虑添加 android
  • Android 布局不需要的填充

    所以我有这个布局文件 如下 正如您所看到的 没有填充或边距 dimen xml 文件也没有任何填充 边距 最后 我根本不以编程方式更改布局
  • PHP服务器端IAB验证openssl_verify总是返回0

    我使用以下函数 服务器端 php 来验证 IAB v3 事务 我从 Android 应用程序传递过来 Override protected void onActivityResult int requestCode int resultCo
  • 居中复选框视图

    如果除了 或代替 复选框之外 您还对单选按钮感兴趣 请参阅this https stackoverflow com questions 16701806 centering views 2而是提问 尽管存在
  • Android:如何从输入流创建 9patch 图像?

    我使用下面的代码实例化 9patch 图像并将其设置为按钮的背景 下图显示了不理想的结果 InputStream MyClass class getResourceAsStream images btn default normal 9 p
  • 通过我的应用程序以编程方式插入新联系人,而不使用 Intent

    我正在使用一个应用程序 与手机联系人进行交互 我想将新联系人添加到我的手机联系人列表中 我已经尝试过以下代码 但它不起作用 void addContact Context ctx PreviewContactModel model Arra
  • Android/Java 创建辅助类来创建图表

    Goal 创建用于图形生成的辅助类 背景 我有 3 个片段 每个片段收集一些传感器数据 加速度计 陀螺仪 旋转 并使用 GraphView 绘制图表 以下是其中一个片段的代码 该代码当前工作正常 public class Gyroscope
  • 无法从 com.android.aaptcompiler.ParsedResource@ef79973 提取资源

    无法从 com android aaptcompiler ParsedResource ef79973 提取资源 无法从 com android aaptcompiler ParsedResource 4c95ce87 提取资源 C Use
  • opencv人脸检测示例

    当我在设备上运行应用程序时 应用程序崩溃并显示以下按摩 java lang UnsatisfiedLinkError 无法加载 detector based tracker findLibrary 返回 null 我正在使用 OpenCV
  • Flutter Spotify Api 身份验证

    我需要在使用 Spotify api 的 Flutter 应用程序中对用户进行身份验证 我使用 flutter web auth 打开 WebView 并让用户在那里登录 我无法返回应用程序 在 Spotify 仪表板中 我将回调 Uri
  • twitter4j => AndroidRuntime(446): java.lang.NoClassDefFoundError: twitter4j.http.AccessToken

    我正在尝试使用 twitter4j 我的应用程序来连接并发布到 Twitter 我正在关注本教程 http blog doityourselfandroid com 2011 02 13 guide to integrating twitt
  • 从 Handler.obtainMessage() 获取什么参数

    我正在使用线程来执行一些 BT 任务 我正在尝试向 UI 线程发送消息 以便我可以基于我的 BT 线程执行 UI 工作 为此 我使用处理程序 但我不知道如何检索发送到处理程序的数据 要发送数据 我使用 handler obtainMessa
  • cordova插件条码扫描仪打不开扫描

    我的条形码扫描仪插件有问题 我不是天才 我不太了解如何编写网络应用程序 我使用phonegap和cordova 并且尝试制作一个网络应用程序 在单击链接后扫描条形码 我之前已经使用此命令行安装了该插件 cordova plugin add
  • Proguard - 找不到任何超级类

    我收到此错误 Unexpected error while performing partial evaluation Class org apache log4j chainsaw Main Method
  • 如何从webkit浏览器中检测Android版本和品牌?

    如何通过webkit浏览器检测Android版本和品牌 可靠吗 我相信你可以检查用户代理 但是 我认为它不安全 因为有很多方法可以用来欺骗用户代理 在谷歌上搜索这个问题给了我们很多答案 它甚至可以在默认浏览器上运行 您只需输入 about
  • InAppMessage 一旦显示就会自动消失

    您好 我最近将 InAppMessaging 添加到我的项目中 这似乎很容易集成 但对我来说并没有按预期工作 首先 我将其添加到 build gradle 中 implementation com google firebase fireb
  • BadPaddingException:无效的密文

    我需要一些帮助 因为这是我第一次编写加密代码 加密代码似乎工作正常 但解密会引发错误 我得到的错误是 de flexiprovider api exceptions BadPaddingException 无效的密文 in the 解密函数
  • Android:如何在布局中放置纯色矩形?

    我有一个可以很好地膨胀的relativelayout 我想在顶部添加一个跨越布局宽度的纯色矩形 我尝试将以下内容放入我的 xml 中
  • 如何让用户在android列表视图中选择主题?

    我有一个带有两个标签的列表视图 标题和副标题 我想要深色和浅色背景作为用户选项 标题具有 textAppearanceMedium 副标题具有 textAppearanceSmall 我希望样式 MyTheme Dark 具有白色文本 My
  • 我可以通过在 Android Activity 中声明适当的成员“静态”来提高效率吗

    如果一个 Activity 在实践中是单例 我认为我可以通过声明适当的成员 静态 来获得一些效率 且风险为零 是的 The Android 文档说 http developer android com guide topics fundam

随机推荐

  • Github域名加上1s,在线VS Code阅读源码神器诞生

    近日 一款域名为 github1s 开源项目诞生了 正如他的名字所说 只要在 github 地址上面加上 1s 就能秒级用在线 VS Code 打开 github 项目 这可以说为开发者带来了巨大的便利 我们来看看这个项目打开后长什么样子
  • go get或go mod tidy报错 fatal: could not read Username for

    go get git xxxxx net CPC protocol module git xxxxx net CPC protocol git ls remote q origin in Users admin go pkg mod cac
  • STM32 基础系列教程 24 - USB_HID_key

    前言 学习stm32 USB接口使用 学会用CUBE工具快速创建USB设备工程及调试 关于usb的相关知道请读者提前准备并学习 当然如果不想深究其中原理的话 跟着本文来操作就可以实现基于USB的设备开发了 需要提示的是 stm32在使用us
  • 【蓝屏解决】笔记本频繁蓝屏,错误代码IRQL_NOT_LESS_OR_EQUAL

    问题发现 笔记本近期频繁蓝屏 最初几天会出现一次 后面10分钟左右就出现一次蓝屏情况 解决方案 Step1 找到崩溃日志 Win10 的崩溃日志保存在 C Windows Minidump 里 Step2 下载Debugging Tools
  • AIX系统启动

    复杂度2 5 机密度3 5 最后更新2021 04 23 AIX的启动过程粗略来看 大概是这样的 其中有通过硬件 微码 只能调整少量设置 完成的过程 也有通过操作系统软件 可修改 完成的功能 to be continue 关于SMS的介绍在
  • springmvc框架定时器功能实现和service注入问题解决

    1 在SpringMVC配置文件中添加 xmlns task http www springframework org schema task http www springframework org schema task http ww
  • PHP九大全局变量

    POST 用于接收post提交的数据 GET 用于获取url地址栏的参数数据 FILES 用于文件就收的处理img 最常见 COOKIE 用于获取与setCookie 中的name 值 SESSION 用于存储session的值或获取ses
  • Vue实现Markdown文件内容显示及代码块高亮

    用到的插件有 marked highlight js github markdown css 安装命令 安装 marked npm install marked 安装 highlight js npm install highlight j
  • 电脑往服务器传文件方法,电脑怎么给云服务器传文件

    电脑怎么给云服务器传文件 内容精选 换一换 简要介绍DNSmasq提供DNS缓存和DHCP服务功能 作为域名解析服务器 DNSmasq可以通过缓存DNS请求来提高对访问过的网址的连接速度 作为DHCP服务器 DNSmasq可以用于为局域网电
  • iframe加载完成事件

    获取到iframe加载的前提条件 1 iframe必须在body的下方 如 body append 2 IE下和其他浏览器下的iframe加载完成后执行事件 var iframe document getElementById player
  • 运行ddddocr项目,报错 DLL load failed: 找不到指定的模块

    我的环境是python3 7 9的 from onnxruntime pybind11 state import noqa ImportError DLL load failed 找不到指定的模块 看了网上什么改这改那的 太麻烦了 后来发现
  • 2.搭建一个spring-boot项目(git项目)

    很多同学在搭建一个springboot项目的时候会遇到很多问题 闲来无事我就自己搭建了一个基础的框架 大家可以自己看看 框架主要包括 初始化配置 数据库配置 Mysql mybatis plus JPA 自动生成代码 logback 基本上
  • Grafana 安装(Centos7)

    一 联网安装 1 Grafana安装 1 下载grafana wget https dl grafana com oss release grafana 8 0 3 1 x86 64 rpm wget https dl grafana co
  • java stream 多个filter_跟光磊学Java开发-流式编程

    使用Stream API操作集合 假设现在有一批名字数据 需要筛选出姓张的人后来需求又变了 需要筛选出姓张 而且名字长度大于等于3的人 使用传统方式操作集合只要操作集合都不得不需要使用循环遍历元素每次筛选后都需要使用新的集合存储元素 pac
  • jdbc的练习:建立一个连接数据库的类

    import java sql public class DatabaseConnection String driver com mysql jdbc Driver String url jdbc mysql localhost 3306
  • 【Pytorch深度学习实战】(8)双向循环神经网络(BiRNN)

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • c语言:char *c;测试

    include
  • html图片列表选择器,CSS 列表

    CSS 列表 从某种意义上讲 不是描述性的文本的任何内容都可以认为是列表 人口普查 太阳系 家谱 参观菜单 甚至你的所有朋友都可以表示为一个列表或者是列表的列表 由于列表如此多样 这使得列表相当重要 所以说 CSS 中列表样式不太丰富确实是
  • Laravel 图片不显示解决方案

    转自 https blog csdn net qq 18951197 article details 93163149 图片文件存储位置为 项目目录 storage app public 1 在项目目录下执行命令创建过软链接 php art
  • ELF文件查看利器之objdump用法

    Android在NDK开发工具中提供了objdump 用来帮助开发者查看编译后目标文件的组成结构和具体内容 常用的有以下几个功能选项 1 a或者 archive headers 这个参数起到的作用和ar命令相似 用来看一个 a静态库文件中包