首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

取消定义可重定位ELF符号表中的符号的工具

是strip命令。

strip命令是一个用于ELF(Executable and Linkable Format)可执行文件和目标文件的工具,它用于去除文件中的符号表信息,从而减小文件的大小。符号表包含了程序中定义和引用的函数、变量等符号的信息。

strip命令的主要作用是减小文件的大小,特别是在发布软件时,可以去除不必要的符号表信息,从而减小软件的体积。这对于嵌入式设备或者网络传输等资源受限的环境非常有用。

使用strip命令可以通过以下方式取消定义可重定位ELF符号表中的符号:

  1. 打开终端或命令提示符窗口。
  2. 运行以下命令格式:
  3. 运行以下命令格式:
  4. 其中,选项可以根据需要进行调整,常用的选项包括:
    • -s:去除所有符号表信息。
    • -g:保留全局符号表信息。
    • -N <符号名>:去除指定符号名的符号表信息。
    • -K <节名>:去除指定节名中的符号表信息。
    • -R <节名>:保留指定节名中的符号表信息。 更多选项可以通过运行strip --help命令查看。
  • 替换[选项]文件名为实际的选项和文件名。
  • 运行命令后,strip命令将会取消定义可重定位ELF符号表中的符号,并生成一个新的文件。

推荐的腾讯云相关产品:腾讯云对象存储(COS)。 腾讯云对象存储(COS)是一种高可用、高可靠、安全、低成本的云存储服务,适用于存储和处理各种类型的非结构化数据,如图片、音视频、文档等。它提供了简单易用的API接口和丰富的功能,可以满足各种存储需求。您可以通过以下链接了解更多关于腾讯云对象存储的信息:腾讯云对象存储(COS)产品介绍

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

链接加载原理及ELF文件格式

定位表(Relocation): 有了符号表,就需要有人对符号表进行引用,在程序执行过程对全局变量引用、跳转、调用函数,这些都涉及到相应符号引用。...因为符号值改变时候,也需要对所有引用符号地方代码进行修改,所以需要还有一张表来记录符号表引用关系,这就是定位表: 从上图可见,定位表项用来记录链接和加载过程需要重新定位位置,在各个段位置发生改变而引起符号地址改变时...GOT表(Global Offset Table): 前面的符号表定位表已经满足编译和链接过程定位需求。...elf文件格式 Linux环境下,三种类型执行文件都可以使用elf格式来表示:定位文件(即编译生成但是未连接文件)、动态库文件、可执行文件。...相关工具 Linux下可以操作elf文件有以下工具: a.readelf “readelf –a file“读出elf文件所有信息。 b.nm “nm file“读出elf文件符号表信息。

1.2K20

ELF文件及android hook原理

ELF文件主要有四种类型: 定位文件(Relocatable File) 包含适合于与其他目标文件链接来创建可执行文件或者共享目标文件代码和数据。...每个定义符号都有一个相应值,叫做符号值(Symbol Value),对于变量和函数,符号值就是它们地址。 符号表是一个Elf32_Sym(32位)数组,每个Elf32_Sym对应一个符号。...整个链接过程分两步: 第一步 空间与地址分配 扫描所有的输入目标文件,并且获得它们各个段长度、属性和位置,并且将输入目标文件符号表中所有的符号定义符号引用收集起来,统一放到一个全局符号表。...对于32位Intel x86系列处理器来说,定位结构是一个Elf_32Rel结构数组,每个数组元素对应一个定位入口。定义如下: ?...用readelf查看elf文件动态符号表及它哈希表。 ? 动态链接定位表 在动态链接,导入符号地址在运行时才确定,所以需要在运行时将这些导入符号引用修正,即需要定位

3.8K81
  • ELF 64 格式详解

    ), 定位文件(定位文件)必须包含,可加载文件可选(共享目标文件,可执行文件) 段头表(Program header table),可加载文件必选,定位文件可选 段和节实际内容,包括可加载数据...符号表 符号表结构如下: image.png st_name 符号名字在符号字符串表偏移 st_info 符号绑定属性和类型,高4比特是绑定属性,低4比特是符号类型, 绑定属性定义如下:...,字段值是SHN_UNDEF,对于绝对符号,值是SHN_ABS,common符号,值是SHN_COMMON st_value 符号地址,可能是绝对或相对地址,对于定位文件,值是定义符号相对偏移...,对于可执行或可供行文件,值是定义符号虚拟地址 st_size 该符号对应存储空间大小,如果未知,字段值是0 定位ELF 文件有2种定位格式,"Rel"和"Rela", 前者较短,...结构定义如下: image.png r_offset 标识需要定位位置,对于定位文件,是从节开头到需要被定位存储位置偏移量,对于可执行或共享库,是需要被定位存储位置虚拟地址,单位都是字节

    1.1K31

    动态链接相关结构

    ,比如依赖于哪些共享对象、动态链接符号表位置、动态链接定位位置、共享对象初始化代码地址等。...从上面给出定义来看,“.dynamic”段里面保存信息有点像elf文件头,只是我们看到elf文件头中保存是静态链接时相关信息,比如静态链接时使用到符号表定位表等,这里换成了动态链接下所使用相应信息了...我们知道在静态链接,有一个专门段叫做符号表“.symtab”( Symbol Table),里面保存了所有关于该目标文件符号定义和引用。...我们可以用readelf工具来查看elf文件动态符号表及哈希表: readelf -sD lib.so ?...动态链接符号表结构与静态链接符号表几乎一样,我们可以简单将导入韩式看作是对其他目标文件函数引用:把导出函数看作是在本目标文件定义函数就可以了; 3.

    1.7K20

    Shell命令(readelf)

    换句话说: 可执行文件(Executable) 定位文件(Linkable) 他们都属于ELF格式文件。...-S 选项列出来信息,有一项是Addr,这是程序运行时对应虚拟地址,可以用这个选项查看可执行文件和定位文件区别,你会发现定位文件全局变量、函数等符号地址都是0,这也验证了这些符号需要链接定位编译原理...ELF 文件有 3 种类型,一种是如上所示 Executable file 可执行文件,一种是定位文件(Relocatable),另外一种是共享库(Shared Library) 。...使用 -s 可以查看详细符号表信息: raedelf -s example 由于以上命令会输出相当多符号表信息,这里就不贴出来了。...所谓符号,就是程序中使用到所有的函数名和全局变量名,由于函数和全局变量默认都是全局可见,因此他们简称全局符号或者符号。全局符号都是需要定位

    1.2K20

    深入理解计算机系统(第三版) CSAPP 杂谈,第7章:链接

    链接器主要完成符号解析和定位两个任务。 目标文件有三种形式:定位目标文件(.so);可执行目标文件(.exe),共享目标文件(.so)。...linux x86-64 定位目标文件使用 ELF 格式。....symtab:符号表,存放定义和引用函数与全局变量信息。使用 STRIP 命令可以去掉符号表。 .rel.text:.text 位置列表,是定位信息。....rel.data: 引用或定义所有全局变量定位信息。 .debug:调试符号表。用 -g 选项编译时候才会得到这张表。 .line:源程序行号与 .text 机器码对应关系。...—- 2018.12.14 —- .symtab 存储各 section 定位信息 弱全局符号是未赋值全局符号,会被强全局符号覆盖,包括类型,所以容易导致类型不匹配细微bug;强全局符号是初始化全局符号

    1K30

    ELF文件格式简介

    存储定位表项,可能会有附加内容,目标文件可能有多个定位表项; 此种类型节sh_link存储相关符号表节索引,sh_info存储定位所使用节索引; SHT_HASH(5):存储符号哈希表...8):这种类型节不占据文件空间,但是成员sh_offset依然会包含对应偏移; SHT_REL(9):包含定位表项,无附加内容,目标文件可能有多个定位表项; 此种类型节sh_link存储相关符号表节索引...2.5 符号表   目标文件符号表包含定位定位程序符号定义和引用所需信息。符号表索引是该数组下标。索引0既指定表第一个条目,又用作未定义符号索引。...另外,不同对象文件类型符号表条目对 st_value 成员解释略有不同: 在定位文件定位文件,st_value保存节索引为SHN_COMMON符号对齐约束; 在定位文件,st_value...这种类型符号表条目主要用于定位,通常具有STB_LOCALBIND属性; STT_FILE(4):一个有STB_LOCALBIND属性文件符号节索引为SHN_ABS。

    2.1K31

    【图片+代码】:GCC 链接过程定位】过程分析

    目录 示例代码 sub.o 文件内容分析 段信息 符号表信息 main.o 文件分析 段信息 符号表信息 绝对寻址 相对寻址 定位表信息 可执行程序 main 段信息 符号表信息 绝对地址定位 相对地址定位...在Linux系统,目标文件(.o) 和可执行文件都是ELF格式,因此如何查看ELF格式文件一些工具指令就非常有帮助。...很久之前总结过这篇文章:《Linux系统编译、链接基石-ELF文件:扒开它层层外衣,从字节码粒度来探索》,里面详细总结了ELF文件内部结构,以及一些相关工具。...简单来说,符号表就是一个文件定义所有符号、引用外部符号(在其它文件定义),包括:变量名、函数名、段名等等,都属于符号。 当然了,在ELF文件中会详细说明每一个符号类型、大小、可见性等信息。...相对地址定位 从上面描述定位表中看出:main.o代码段SubFunc符号也需要定位,而且是相对寻址。

    73010

    符号解析与定位

    事实上在ELF文件,有一个叫定位表( Relocation Table)结构专门用来保存这些与定位相关信息,我们在前面介绍ELF文件结构时已经提到过了定位表,它在ELF文件往往是个或多个段...对于定位ELF文件来说,它必须包含有定位表,用来描述如何修改相应段里内容。...对于每个要被定位ELF段都有一个对应定位表,而一个定位表往往就是ELF文件一个段,所以其实定位表也可以叫定位段,我们在这里统一称作定位表。...这时候链接器就会去查找由所有输入目标文件符号表组成全局符号表,找到相应符号后进行定位。...比如我们查看“a.o”符号表: GLOBAL”类型符号,除了“main”函数是定义在代码段之外,其他两个“ shared和“swap”都是“UND”,即“ undefined”未定义类型,这种未定义符号都是因为该目标文件中有关于它们定位

    1.2K10

    变量究竟存储在什么地方?

    在计算机系统,目标文件通常有三种形式: 1. 定位目标文件:包含二进制代码和数据,与其他定位目标文件合并起来,创建一个可执行目标文件。 2....共享目标文件:一种特殊定位目标文件,即我们通常所说动(静)态链接库 一个典型定位目标文件如下图所示: 高地址 节头部表 .strtab .line .debug .rel.data .rel.text...0 图 1典型ELF定位目标文件(数字代表索引) 夹在ELF头和节头部表之间都是节(section),各个节意思如下: 节 含义 .text 已编译程序机器代码 .rodata 只读数据,...下面我们在通过符号表来解释变量存储。 每个定位目标文件都有一个符号表,它包含该文件所定义和引用符号信息。在链接器上下文中,有三种不同符号: 1....定位目标文件:距定义目标文件起始位置偏移 可执行目标文件:一个绝对运行地址 Size 目标的大小 Type 要么是数据,要么是函数,或各个节表目 Bind 符号是全局还是本地

    1.8K10

    《程序员自我修养》第三章学习笔记

    、运行平台、ABI版本、 ELF定位类型、硬件平台、硬件平台版本、入口地址、程序头入口和长度、段表位置和长度及段数量等。...4,ELF文件类型:分为 定位、可执行、共享目标文件、核心转储文件 3.4.2 段表(除了文件头以外最重要结构) 1,描述了ELF各个段信息(比如每个段段名、段长度、在文件偏移,读写权限及其他属性...3.4.3 定位表 1,一个叫”rel.text”段,类型是”SHT_REL”,就是定位表 2,链接器在处理目标文件时,需要对目标文件某些部位进行定位(即代码段和数据段那些对绝对地址引用位置...3,这些定位信息都记录在ELF文件定位表里。对于每个需要定位代码段或数据段,都会有一个相应定位表。...3.5.1 ELF符号表结构 1,ELF文件符号表往往是文件一个段,y一般叫做 “.symtab”。是一个Elf32_Sym数组,数组每个元素对应一个符号

    1.1K60

    ELF文件格式解析

    SHT_PROGBITS 1 此节区包含程序定义信息,其格式和含义都由程序来解释。 SHT_SYMTAB 2 此节区包含一个符号表。...SHT_RELA 4 此节区包含定位表项,其中可能会有补齐内容(addend),例如 32 位目标文件 Elf32_Rela 类型。目标文件可能拥有多个定位节区。...0 SHT_HASH 此哈希表所适用符号表节区头部索引 0 SHT_REL SHT_RELA 相关符号表节区头部索引 定位所适用节区节区头部索引 SHT_SYMTAB SHT_DYNSYM...相关联字符串表节区头部索引 最后一个局部符号(绑定 STB_LOCAL)符号表索引值加一 其它 SHN_UNDEF 0 Section 字符串表与符号表   一个ELF文件包含三张字符串表...Elf32_Half st_shndx; //每个符号表项都以和其他节区关系方式给出定义。此成员给出相关节区头部表索引。

    2.5K40

    认识目标文件结构

    常见做法就是把字符串集中起来存放到一个表。然后使用字符串在表偏移来引用字符串; (11).rela.text,代码段定位表存放目标文件未定义指令在链接时所需定位信息。...(7)类型(Type),为定位文件(REL,Relocatable file),包括目标文件.o与静态链接库.a。其它还有DYN(共享目标文件,.so文件)和 EXEC(可执行文件)。...该段包含了定位信息 SHT_HASH 5 符号表哈希表 SHT_DYNAMIC 6 动态链接信息 SHT_NOTE 7 提示性信息 SHT_NOBITS 8 表示该段在文件没有内容,比如.bss段...(不论是动态链接或静态链接),比如定位表、符号表等,那么 sh_link 和 sh_info 这两个成员所包含意义如下表所示。...该段所使用相应符号表在段表下标 该定位表所作用段在段表下标 SHT_SYMTAB、SHT_DYNSYM 操作系统相关 操作系统相关 other SHN_UNDEF 0 9.符号表(.

    1.2K30

    动态链接步骤与实现

    通过“.dynamic”信息,自举代码便可以获得动态链接器本身定位表和符号表等,从而得到动态链接器本身定位入口,先将它们全部定位。...当一个新共享对象被装载进来时候,它符号表会被合并到全局符号表,所以当所有的共享对象都被装载进来时候,全局符号表里面将包含进程所有动态链接所需要符号。...符号优先级 在动态链接器按照各个模块之间依赖关系,对它们进行装载并且将它们符号并入到全局符号表时,会不会有这么一种情况发生,那就是有可能不同模块定义了同一个符号?...当a2.so函数a要被加入全局符号表时,先前装载a1.so时,al.o函数a已经存在于全局符号表,那么a2.so函数a只能被忽略。...因为此时动态链接器已经拥有了进程全局符号表,所以这个修正过程也显得比较容易,跟我们前面提到地址定位原理基本相同。

    1.4K20

    Linux命令(65)——ld命令

    >,--mri-script=:为与MRI链接器兼容,ld接受由MRI命令语言编写脚本文件 --cref:创建跨引用表 -d,-dc,-dp:即使指定了定位输出文件...-E,--export-dynamic:对于ELF格式文件,创建动态链接可执行文件时,把所有符号添加到动态符号表 -f ,--auxiliary=:对于ELF格式共享对象,设置...-no-keep-memory:ld通常在内存缓存输入文件符号表来优化内存使用速度。此选项告诉ld不要缓存符号表。...=:从指定文件读取符号名称和地址 -r,--relocatable:生成定位输出(称为部分连接) -rpath=:把指定目录添加到运行时库搜索路径 -rpath-link...org>:使用指定地址作为bss段起始点 -t,--trace:在处理输入文件时显示它们名称 -u ,--undefined=:强制指定符号在输出文件作为未定义符号

    17.4K13

    【胖虎逆向之路】——GOTPLT Hook详解&针对自定义so库Hook实操

    使用~ 当so动态库被装载时候,动态链接器linker会将动态库装载到进程地址空间,并且将程序中所有没确定符号绑定到相应动态链接库,并进行定位工作~ 3、定位 共享库进行定位主要原因是在于导入符号原因...,所以需要在运行时将这些导入符号引用修正,即需要定位 动态链接文件,有专门定位表分别叫做.rel.dyn和.rel.plt:(刚才看表时候有圈起来哦) R_AARCH64_GLOB_DA...和R_AARCH64_JUMP_SL是ARM64下定位方式,这两个类型定位入口表示,被修正位置只需要直接填入符号地址即可。...,因此这里需要清除一下指令缓存 总结 综上所述,一套流程下来感觉Native Hook流程并不太复杂,但是相关基础例如ELF文件结构和组成、链接装载重定位等基础逻辑认知还是比较重要~ 当然这仅仅是有符号表函数...Hook,那如果是没有函数符号表Hook呢?

    1K41

    ELF文件结构描述

    正如我们开始所说,链接器在处理目标文件时,须要对目标文件某些部位进行定位,即代码段和数据段哪些对绝对地址引用位置。...这些定位信息都记录在ELF文件定位表里面,对于每个须要定位代码段或数据段,都会有一个相应定位表。 字符串表 ELF文件中用到了许多字符串,比如段名,变量名等。...我们将符号表所有符号进行分类,它们有可能是下面这些类型几种: 定义在本目文件全局符号,可以被其他目标文件引用,比如SimpleSection.o里面的“func1”、“main”和“global_init_val...对于我们来说,最值得关注是全局符号,即上面的第一类和第二类。 ELF符号表结构 ELF文件符号表往往是文件一个段,段名一般叫做“.symtab”。...符号表结构很简单,它是一个Elf32_Sym结构(32位ELF文件)数组,每个Elf32_Sym结构对应一个符号。这个数组第一个元素,也就是下标0元素为无效“未定义符号

    1.6K50

    《程序员自我修养》笔记

    符号表也是段 elf文件头结构 elf文件类型:定位/可执行文件/共享文件类型 EM:可运行CPU平台 eshotoff:段表偏移 使用readelf -S可以查看 详细段表内存储段信息 每个...偏移量,通过这个偏移量找到这个符号来进行修正 可以理解为如果定位符号在最终链接后全局符号表里面没有找到,就可以认定是链接失败,没有找到外部文件定义符合,一般是少链接了库 虽然处理器寻址方式有很多种...链接器就会去查找由所有输入目标文件符号表组成全局符号表,找到相应符号后进行定位。...“符号定义错误”是如何产生 原来符号定义错误 不是 通过比对重定位段里面的符号 是否在全局符号表中找到 为判断条件检测; 而是直接在扫描整个符号表,如果符号所处段是未定义就是在其他目标文件...,所以直接找这种符号是否可以在全局符号表中找到就行,不需要对比重定位,效率确实可以高一点 原文:“undefined”未定义类型,这种未定义符号都是因为该目标文件中有关于它们定位项。

    9310

    程序一定要从main函数开始运行吗?

    A: 这里涉及到程序链接两个步骤: 空间与地址分配:扫描所有的输入目标文件,获得它们每个段长度属性和位置,收集输入目标文件符号表所有符号定义符号引用,统一放到一个全局符号表,合并所有的段...符号解析与定位:使用第一步收集到所有信息,读取输入文件中段数据及定位信息,进行符号解析和定位,调整代码地址,将每个段需要定位指令和数据进行“修补”,使他们都指向正确位置。...对于那些需要定位符号,都会放在定位表里,也叫定位段,即.rel.data、.rel.text等,如果.text段有被定位地方,就有.rel.text段,如果.data段有被定位地方,就有...,在链接器扫描完所有的输入目标文件后,所有这种未定义符号都应该能在全局符号表中找到,否则报符号定义错误。...,每个目标文件都有什么符号 objdump -r 显示文件定位入口,定位表 objdump -x 显示所有可用头信息,等于-a -f -h -r -t objdump -H 帮助 关于分析ELF

    1.2K30

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券