objdump查看目标文件构成

本文介绍了objdump工具的基本使用方法,包括如何查看目标文件或可执行文件的构成、反汇编代码展示、目标文件数据组织输出、符号表输出、段信息输出及C语言与汇编语言的对照显示等功能。

objdump

objdump是用查看目标文件或者可执行的目标文件的构成的GCC工具


反汇编

#objdump -d cpuid2

对于其中的反汇编代码

左边是机器指令的字节,右边是反汇编结果。显然,所有的符号都被替换成地址了, 注意没有加$的数表示内存地址,而不表示立即数。


objdump -x obj 以某种分类信息的形式把目标文件的数据组织(被分为几大块)输出 <可查到该文件的所有动态库>
objdump -t obj 输出目标文件的符号表()
objdump -h obj 输出目标文件的所有段概括()
objdump -j .text/.data -S obj 输出指定段的信息,大概就是反汇编源代码把
objdump -S obj C语言与汇编语言同时显示


更多参考

#man objdump

### 如何查看 Linux 系统中的 `.so` 动态链接库文件的内容或结构 在 Linux 中,`.so` 文件是一种动态链接库文件,通常用于提供可重用的功能模块。为了分析这些文件的内容或结构,可以使用多种工具和技术。 #### 使用 `nm` 查看符号表 `nm` 是一个常用的命令行工具,能够显示对象文件中的符号表信息。这可以帮助开发者了解 `.so` 文件中定义和使用的函数以及变量名称。 ```bash nm -D libexample.so | less ``` 上述命令会列出动态库中的全局符号及其地址[^2]。 #### 利用 `objdump` 获取更详细的反汇编信息 如果需要进一步深入到二进制层面来理解 `.so` 文件的具体实现细节,则可以通过 `objdump` 工具完成此操作: ```bash objdump -T libexample.so ``` 该指令展示了动态符号表内的条目详情;而下面这条语句则提供了整个程序的反汇编版本: ```bash objdump -dS libexample.so ``` #### 应用 `readelf` 探索 ELF 头部和其他元数据 由于大多数现代 UNIX 平台上的共享库都是基于 ELF(Executable and Linkable Format)构建而成,因此借助专门解析这种格式的实用程序——即 readelf ——便显得尤为重要了 。它允许我们访问关于段、节区头部以及其他重要属性的信息。 ```bash readelf --dyn-syms libexample.so # 显示动态符号表 readelf -hW libexample.so # 打印ELF头基本信息 readelf -l libexample.so # 展现程序头表 (Program Headers) ``` #### 调试器 gdb 加载 so 进行动态调试 当静态方法不足以满足需求时,还可以考虑采用交互式的手段来进行探索工作。GDB 支持加载外部共享库并对其进行逐步执行跟踪等功能 ,从而使得研究者能够在运行时刻观察其行为特征 。 启动 GDB 后加载目标应用连同待测插件一起装载即可 : ```bash gdb ./application (gdb) break main (gdb) run (gdb) info sharedlibrary ``` 以上就是几种常见的用来检查 linux 下面 .so 文件内部构成的方法介绍.
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值