objdump 输出格式解析

Shell:objdump 4.显示某段的具体信息:objdump --section=.data -s file_path。./c_symbol: 文件格式 elf64-x86-64。./c_symbol: 文件格式 elf64-x86-64。5.显示动态符号表信息:objdump -T file_path。1.查看符号表信息:objdump -t file_path。./c: 文件格式 elf64-x86-64。./c: 文件格式 elf64-x86-64。 阅读详情

objdump 输出格式解析

文章主要翻译自https://www.man7.org/linux/man-pages/man1/objdump.1.html,为提高工作效率翻译借助了AI工具,并进行简单修改

一、objdump 选项
1. 
-t
--syms
打印文件的符号表

另外一种常见的输出格式,通常出现在基于ELF的文件中,如下所示:
    00000000 l    d  .bss   00000000 .bss
    00000000 g       .text  00000000 fred

在这里,第一个数字是符号的值(有时被称为它的地址)。接下来的字段实际上是一组字符和空格,表示符号的标志位。这些字符将在下面描述。接下来是与符号关联的节,如果是绝对节(即不与任何节连接),则显示为 ABS,如果是未定义但在文件中引用的节,则显示为 UND。

节名之后是另一个字段,一个数字,对于大多数符号来说是对齐字节数,对于其他符号是大小。最后显示符号的名称。

标志字符分为以下7组:

"l"
"g"
"u"
"!"
符号可以是局部的(l),全局的(g),唯一的全局(u),既不是全局也不是局部(空格),或者既是全局又是局部(!)。符号既不是局部的也不是全局的,可能是由于各种原因,例如它用于调试,但如果它既是局部的又是全局的,也可能是出错了。唯一的全局符号是GNU对标准ELF符号集的扩展。对于这样的符号,动态链接器将确保在整个进程中只有一个具有此名称和类型的符号被使用。

"w" 符号是弱符号(w)或者强符号(空格)
"C" 符号是构造符号(C)或者原始符号(空格)
"W" 符号是一个警告(W)或者一个普通符号(空格)。警告符号的名称是一个如果跟随警告符号的符号被引用时要显示的消息。

"I"
"i"
符号是对另一个符号的间接引用(I),在重定位期间需要处理的函数(i),或者是一个普通符号(空格)。

"d"
"D"
符号是一个调试符号(d)、一个动态符号(D)或者一个普通符号(空格)。

"F"
"f"
"O"
符号是函数名(F)、文件名(f)、对象名(O)或者只是一个普通符号(空格)。

2.
-T
--dynamic-syms
打印文件的动态符号表。这只对动态对象有意义,比如某些类型的共享库。这与nm使用 -D (–dynamic) 选项时提供的信息相似。

输出格式与 --syms 选项产生的格式相似,不同之处在于在符号名称前插入了一个额外的字段,给出了与符号关联的版本信息。如果该版本是用于解析对符号的无版本引用时的默认版本,则直接显示;否则将其放入括号中。

二、示例
$ objdump -TtC libalg.so 

libalg.so:     file format elf64-x86-64

SYMBOL TABLE:
0000000000001040 l     F .text    0000000000000000 deregister_tm_clones
0000000000000000 l    df *ABS*    0000000000000000 add.cpp
0000000000004028 l     O .bss    0000000000000004 TestFun(int, int)::s_sum
0000000000000000 l    df *ABS*    0000000000000000 sub.cpp  
0000000000000000  w      *UND*    0000000000000000 __cxa_finalize
0000000000001135 g     F .text    0000000000000016 Sub(int, int)
00000000000010f9 g     F .text    0000000000000024 TestFun(int, int)
0000000000004024 g     O .bss    0000000000000004 g_value
0000000000000000  w      *UND*    0000000000000000 __gmon_start__


DYNAMIC SYMBOL TABLE:
0000000000000000  w   D  *UND*    0000000000000000 __gmon_start__
00000000000010f9 g    DF .text    0000000000000024 TestFun(int, int)
0000000000004024 g    DO .bss    0000000000000004 g_value
000000000000111d g    DF .text    0000000000000018 Add(int, int)
0000000000001135 g    DF .text    0000000000000016 Sub(int, int)

上面是一个动态库,
第一列表示符号的值或者地址,
第二列 l(local)表示局部符号,w(weak)表示弱符号,g(global)表示全局符号;
第三列 F(Function)表示该符号是函数,f(file)表示是一个文件名称,add.cpp是库的一个文件,O(Object)表示是目标名,D(Dynamic)表示动态符号,动态符号简单可以理解为动态库导出的符号;
第四列表示符号所属的段,*UND*(undefine)表示该符号在该文件中未定义,是引用的其他地方的。__gmon_start__是引用的其他库的函数,在本库中未定义。Add则是本库定义的函数。

本文测试代码:https://download.youkuaiyun.com/download/SimpleForest/89251966

利用Python搭建用户画像系统 用户画像是当下很多企业都会提及的概念,多数情况下会和大数据以及营销挂钩。本文将对用户画像的相关知识进行进行简单的介绍,并利用Python去实现一个简单的用户画像系统。 1.什么是用户画像 用户画像可以理解成是海量数据的标签,根据用户的目标、行为和观点的差异,将他们区分为不同的类型,然后每种类型中抽取出典型特征,赋予名字、照片、一些人口统计学要素、场景等描述,形成一个人物原型 。 用户画像 =... 阅读详情

相关推荐

记一次使用STM32F042K6芯片内部HSI48M时钟导致CAN总线报错问题

深入去解决某个问题时,也会加深你对其它部分的了解和思考,比如这里让我又重新了解和CAN的采样点和CAN报错机制。

ApexYuan 860

Linux objdump命令(反汇编、查看符号)

https://blog.youkuaiyun.com/q2519008/article/details/82349869

mayue_web的博客 2万+

Linux下开机异常(fsck exited with status code 4)

Linux下开机异常事情是这样的,本来我呢跑着程序听着歌,结果忽然就死机了,我只能强制关机,再次打开系统的时候,就提示这样fsck from util-linux 2.26.2 /dev/sda10 contains a file system with errors, check forced. /dev/sda10: Inodes that were part of a corrupted pr

芳草碧连天 2万+

objdump

1:查看符号表: objdump -t xxx.so 。-T 和 -t 选项在于 -T 只能查看动态符号,如库导出的函数和引用其他库的函数,而 -t 可以查看所有的符号,包括数据段的符号 2:nm命令可以查看,linux以及windows下的.o ,.obj文件中的符号列表 3: objdump -x obj 以某种分类信息的形式把目标文件的数据组织(被分为几大块)输出

farmwang的专栏 4759

NMS非极大值抑制算法原理

NMS非极大值抑制算法

pywin 3500

视觉开发板—K210自学笔记(三)--点亮LED

K210点亮LED灯

adamsecond 3412

使用objdump objcopy查看与修改符号表

我们在 Linux 下运行一个程序,有时会无法启动,报缺少某某库。这时需要查看可执行程序或者动态库中的符号表,动态库的依赖项, Linux 有现成的工具可用:objdump 。 有时我们拿到一个静态库,想调用其中的函数,而某些函数作用域非全局,也可以通过修改符号来达到目的。 Linux 有现成的工具可用: objcopy 。

安晓辉生涯——聚焦程序员的职业规划与成长 3万+

Etcd教程 — 第三章 Etcd集群动态发现、DNS发现

Etcd教程 — 第三章 Etcd集群动态发现、DNS发现

Mr_XiMu的博客 2819

objdump 符号表输出格式

没找到objdump的输出格式解释的文档,只能自己猜测了。objdump打印符号表的格式:shenyan@ubuntu:~/Temp$ objdump -t a.oa.o:     file format elf32-i386SYMBOL TABLE:00000000 l

shenyan008的专栏 1万+

医疗影像处理实战:如何用Slicer和Mimics将.nii.gz文件转为.ply格式(附避坑指南)

本文详细介绍了利用3D Slicer和Materialise Mimics软件,将医学影像中常见的.nii.gz格式文件转换为通用三维网格.ply格式的完整实战流程。文章重点分享了从数据分割、DICOM序列导出到高质量网格生成的核心步骤与关键参数设置,并提供了针对常见问题的避坑指南,旨在帮助医学影像研究者和工程师高效完成从体数据到三维模型的关键转换。

weixin_28304023的博客 102

程序设计二(面向对象)_实训10_复杂类的实现_ArrayList类的实现

第1关:构造函数与析构函数的实现

2401_83406306的博客 819

关于Objdump指令的解释

Objdump 指令的各项

software_wyq的博客 1002

Codex CLI 手机号验证失败?5 种接码平台实测对比与绕过地区限制的 3 步操作

揭示 Codex CLI 手机号验证失败的真实原因在于上下文污染而非网络问题,分析其通过 ASN、Accept-Language 和 TLS SNI 三重加权风控的机制,并实测对比 5 种接码平台在 DNS 解析路径、ASN 干净度和复用间隔上的差异,提出剥离浏览器指纹、固化 TLS SNI、隔离

weixin_42627902的博客 730

动态连接1-objdump -S -s file_b.so

[root@localhost mhello]# objdump -S file_b.so file_b.so: file format elf32-i386 Disassembly of section .init: 0000037c : 37c: 55

openCpu 3142

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

LINUX交叉编译器的常用调试命令总结:nm,addr2line,objdump,readelf,objcopy,gdb

一、符号列表输出命令:nm 文件格式:nm [options] [objfile...] ---- list symbols from object files options: [-A|-o|--print-file-name] [-a|--debug-syms] [-B|--format=bsd] [-C|--demangle[=style]...

Golden_Chen的专栏 2813

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

objdump指令 elf文件转成lst文件

objdump指令 elf文件转成lst文件

u014722462的博客 815

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

shell脚本之shellcode自动提取工具

  最近一直在忙着写论文。突然领导又分配任务,帮写个自动提取shellcode的脚本工具。因为之前,我们都是用objdump查看后,把shellcode一个个添加进去,很麻烦,害怕写错。所以说我们写这个工具还是挺有必要的。首先我们要先了解几个用到的命令。objdump,od,dd.这几个对于提取shellcode很有用。   objdump 有点象那个快速查看之类的工具,就是以一种可阅读的格式让...

weixin_30505751的博客 509

bingrep终极指南:如何快速解析和着色二进制文件的完整教程

bingrep是一款跨平台的二进制文件解析和着色工具,能够帮助开发者快速查看ELF、Mach、PE等多种格式二进制文件的结构和内容。无论是分析程序头、节头还是符号表,bingrep都能以清晰的彩色表格形式呈现,让二进制分析变得简单高效。 ## 为什么选择bingrep?二进制解析的终极工具 对于开发者来说,分析二进制文件往往是一项枯燥且复杂的任务。传统工具如objdump、nm输出的信息杂乱无

gitblog_00042的博客 450

二进制分析:nm、objdump、readelf 看懂符号表与段

段.text.data.bss.rodata按「可写、占盘」分类,size看大小)、符号nm里T/D/B/U一个字母说清一个符号的类型和链接,大小写区分内外部链接)、互证objdump -d的反汇编地址和nm的符号地址对得上,才是真读懂了,而不是背命令)。

weixin_38244193的博客 15

OWASP MASTG 安卓逆向实践:从 Android ELF 二进制中提取调试信息与符号表

在 Android 应用的逆向工程与漏洞分析中,native 层(`.so` 动态库)往往是安全测试的关键战场,而**符号与调试信息**则是解读 native 代码的第一把钥匙:它们能直接暴露函数名、变量名、源文件行号,甚至还原出 JNI 桥接函数的完整签名。本文基于 OWASP Mobile Application Security Testing Guide(MASTG)的 [MASTG-TE

gitblog_01183的博客 773

bingrep快速入门:10分钟学会二进制文件分析的简单方法

你是否曾经面对复杂的二进制文件感到无从下手?想要快速了解ELF、Mach-O或PE文件的结构却不知道从何开始?今天我要向你介绍一款强大的**二进制文件分析工具**——bingrep!这款工具能够帮助你轻松解析和分析各种二进制文件格式,让你的逆向工程和二进制分析工作变得更加简单高效。💡 ## 什么是bingrep?为什么选择它? **bingrep**是一个跨平台的二进制文件解析和着色工具,它

gitblog_00086的博客 985

[LinkerScript.1] 基本的链接器脚本概念 - Basic Linker Script Concepts

We need to define some basic concepts and vocabulary in order to describe the linker script language. 为了描述链接器脚本语言,我们需要定义一些基本的概念和词汇. The linker combines input files into a single output file. The

Vanquisher 596

编译与调试完全指南—第1章 编译工具集概览

本文摘要了《编译与调试完全指南》第1章的核心内容,系统介绍了Linux下的编译工具链生态系统。主要内容包括: 编译工具链全景 详细解析了GCC编译器、标准库(libstdc++/glibc)和二进制工具集(binutils)的组成与协作关系 分类介绍了binutils中的编译相关工具(as/ld/ar等)和分析工具(objdump/readelf/nm等) 展示了从源代码到可执行文件的完整工具链协作流程图 GCC编译的四个阶段 预处理:宏展开、头文件包含、条件编译处理 编译:语法检查、C代码转汇编 汇编:汇

weixin_43149888的博客 961

ELF文件与静态链接:原理、实战与优化策略

ELF(Executable and Linkable Format)是Linux系统中可执行文件的标准格式,理解其结构对于系统开发至关重要。静态链接作为程序构建的关键环节,通过将目标文件和静态库合并生成独立可执行文件,避免了运行时依赖。在嵌入式开发、容器化应用等场景中,静态链接因其部署简单的优势被广泛采用。通过readelf、objdump等工具可以分析ELF文件结构,而链接脚本则能精细控制内存布局。针对性能优化,链接时优化(LTO)和函数级别链接能有效减小二进制体积。在安全方面,静态链接配合栈保护、位置

weixin_30074763的博客 216
上一篇: how to install python distutils
下一篇: objdump命令解析
SimpleForest
博客等级 码龄10年 171粉丝 95原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值