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

ELF文件格式详解

Binary Interface)接口部分,也是Linux主要可执行文件格式。...当前解析为00 0e。也就是14个节区为字符节区。 ? 到这里,头部信息相关字段就解析完成了。 4.elf文件节区(Section) elf文件节是从编译器链接角度来看文件组成。...从链接器角度上来看,包括指令、数据、符号以及重定位表等等。 4.1 节区作用 在可从定位可执行文件,节区描述了文件组成,节位置等信息。通过readelf -s可以查看信息。 ?...这些节信息通过特定地址偏移组成了一个elf文件整体。 4.2 节区组成 关于理解ELFSection。...首先需要知道程序链接视图,在编译器将一个一个.o文件链接成一个可以执行elf文件过程,同时也生成了一个表。这个表记录了各个Section所处区域。

5.9K54

【Android 逆向】ELF 文件格式 ( 安装 010 Editor 二进制查看工具 ELF.bt 插件模板 | 安装 ELF.bt 模板 | 打开 ELF 文件 )

文章目录 一、搜索并下载 ELF.bt 模板 二、安装 ELF.bt 模板 三、打开 ELF 文件 一、搜索并下载 ELF.bt 模板 ---- 进入 010 Editor 工具插件模板下载页面 http.../010editor/repository/files/ELF.bt ; 可以在浏览器下载 , 新建下载项 , 下载该 ELF.bt 文件 ; EXE.bt : 文件地址 https://www.sweetscape.com.../010editor/repository/files/DEX.bt 可以在浏览器下载 , 新建下载项 , 下载该 ELF.bt 文件 ; 二、安装 ELF.bt 模板 ---- 选择 " 菜单栏.../ 模板 / 编辑模板列表 " 选项 , 在弹出对话框 , 新建一个模板 , 并指定模板对应文件 ; 三、打开 ELF 文件 ---- 选择打开 ELF 文件 : 打开文件后 , 选择 "...菜单栏 / 模板 / ELF 模板 " 选项 , 此时就可以在 模板结果 面板 , 看到 ELF 文件四个组成部分 ;

1.6K10
您找到你想要的搜索结果了吗?
是的
没有找到

git 提交文件部分修改

概述 在 Git 提交一个文件时候,有时候会在同一个文件,包含两个不同功能修改,或者一个功能完成了,而别的部分还没有完善不应该进入代码库,这时候如果使用git add file-name的话,会将这个文件所有更新都提交...针对这种场景,git 提供了更细粒度提交命令git add -p,可以分部分提交一个文件更新代码块,实测能满足常见需求。这里简要记录一下如何使用这个命令。 2....实现命令 2.1 原理解释 git 中用”hunk”来表示一个文件邻近区域中代码修改块,比如用git diff 查看修改时,两个@@符号分割一个区域就是一个hunk,其中行首是-,颜色为红色为删去行...图片 需要注意是,git有一套默认文件中所有修改分成不同hunk机制,但我们也可以将默认机制分太大hunk分割为多个小hunk,这样能更精确地控制提交粒度。...部分提交文件修改原理简单来说是将所有的修改分成不同hunk,通过对每个hunk来进行是否提交判断,从而完成我们需求。具体命令下面详细讲述。

29420

几个命令了解ELF文件”秘密“

来源:公众号【编程珠玑】 作者:守望先生 网站:https://www.yanbinghu.com 前言 在Linux,可执行文件格式是ELF格式,而有一些命令可以帮助我们了解它们更多“秘密”,以此来帮助我们解决问题...我们可以知道,它是ELF可执行文件,且是64位程序,有动态链接,最后not stripped也表明了它保留了符号表信息或者调试信息。...查找ELF文件字符串 例如,你在文件写入了版本号或者特殊字符串,可以通过strings命令搜索到: $ strings hello|grep shouwang hello shouwangxiansheng...@GLIBC_2.2.5 0000000000400526 T main 如果没有找到或者前面是U,没有地址,表明在这个elf文件没有定义这个函数。...总结 ELF文件隐藏了丰富信息,只要使用得当,将会帮助我们更好地进行开发或者问题定位。

2.3K20

【Android 逆向】使用 Python 解析 ELF 文件 ( Capstone 反汇编 ELF 文件机器码数据 | 完整代码示例 ) ★★★

文章目录 一、完整代码示例 二、执行结果 三、博客资源 一、完整代码示例 ---- 使用 Python 解析 ELF 文件完整代码示例 : # coding=utf-8 # 解析 elf 文件需要导入依赖库..., 用于解析 ELF 文件 from capstone import * def main(): # 要解析动态库路径 elf_path = r'libwtcrypto.so'...# 打开 elf 文件 file = open(elf_path, 'rb') # 创建 ELFFile 对象 , 该对象是核心对象 elf_file = ELFFile(file...) # 打印 elf 文件头 print(elf_file.header) # 打印 程序头入口 个数 print(elf_file.num_segments())...capstone = Cs(CS_ARCH_X86, CS_MODE_32) # 此处设置为 true , 表示需要显示细节 , 打开后 , 会标明每条汇编代码对寄存器影响

71610

CA1509:代码度量配置文件条目无效

配置文件。...规则说明 通过代码度量分析规则 .NET 代码质量分析器实现,最终用户可以提供名为 CodeMetricsConfig.txt 附加文件。 此文件包含配置用于分析代码度量阈值条目。...以下规则可在此文件配置: CA1501:避免过度继承 CA1502:避免过度复杂 CA1505:避免使用无法维护代码 CA1506:避免过度类耦合度 此配置文件需要每个条目采用以下格式: 'RuleId...以“#”开头行被视为注释行 例如,以下是有效配置文件: # Comment text CA1501: 1 CA1502(Type): 4 CA1502(Method): 2 此配置文件无效条目使用...如何解决冲突 若要解决此规则冲突,请确保 CodeMetricsConfig.txt 无效条目采用所需格式。 何时禁止显示警告 请勿禁止显示此规则冲突警告。

58800

动态调试elf文件几种方法

动态调试elf文件几种方法 最近在刷题时候遇到了很多elf文件,虽然可以通过ida分析伪代码解出来,但是发现有些通过动态调试方式可以直接找到flag,这样简单了不少,因为之前接触linux下逆向题目比较少...,所以通过这次刷题也记录一下动态调试elf文件几种方式。...0x01 ida动态调试 ida不光可以静态分析函数伪代码,也可以通过动态调试方式来分析linux下elf文件。...首先将ida/dbgsrv/路径下linux_server/linux_serverx64文件复制到linux下,两个文件分别是调试32位和64位程序使用: 在linux下启动对应文件: 把我们要调试文件放到相应文件...在ida中选择Debugger-Run-Remote linux debugger 在弹出对话框,Application填写文件存放位置和文件名,Directory填写文件存放路径,Parameters

2.6K20

ELF文件加载过程(load_elf_binary函数详解)--Linux进程管理与调度(十三)

)工具软件,而解释器装入/启动也由内核负责,这在后面我们分析ELF文件加载时就可以看到 这部分主要说明ELF文件在内核空间加载过程,下一部分对用户空间符号动态解析过程进行说明。...在ELF文件格式,处理函数是load_elf_binary函数,下面主要就是分析load_elf_binary函数执行过程(说明:因为内核实际加载需要涉及到很多东西,这里只关注跟ELF文件处理相关代码...= ET_DYN) goto out; 在load_elf_binary之前,内核已经使用映像文件前128个字节对bprm->buf进行了填充,563行就是使用这此信息填充映像文件头(具体数据结构定义见第一部分...在二进制映像,只有类型为PT_LOAD段才是需要装入。当然在装入之前,需要确定装入地址,只要考虑就是页面对齐,还有该段p_vaddr域值(上面省略这部分内容)。...填写目标文件参数环境变量等必要信息 start_kernel宏准备进入新程序入口 ELF文件符号动态解析过程 前面我们提到了内核空间中ELF文件加载工作 内核工作 内核首先读取ELF文件头部

7.4K51

Linux CC++工程可生成ELF、动静态库文件通用Makefile

最近写了一个*nix环境下Makefile文件,支持编译C/C++,同时能够通过参数配置生成ELF目标文件、动态链接库(.so)和静态链接库(.a)文件。...1 Makefile文件配置说明 首先,根据生成目标文件类型(ELF可执行文件,动态链接库文件或静态链接库文件),配置GEN_LIBS、GEN_DYN_LIB、EXCUTE_BIN、STATIC_LIBS...同样,更建议在工程配置文件配置,例如: export PROJECT_DIR=/home/typecodes 2 使用方法 在配置好Makefile文件变量对应值后,直接将该文件放置在需要编译...伪目标clean对应命令make clean能够清除上次执行make命令产生影响;伪目标help对应命令make help能够在界面上输出Makefile文件重要变量值,方便调试。...执行完make命令后,在当前目录下会生成.o目标文件以及.d依赖文件ELF可执行文件放在工程bin目录下,动/静态库文件放在工程lib目录下。

18110

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

— 节头表 并非所有的 ELF 文件都包含全部上述四部分,除了 ELF 头外,其他各部分位置、大小都不固定。...header table 条目Elf32_Half e_phnum; // Section header table 每个条目的字节数 Elf32_Half...Section Header 结构 Section Header Table 每个条目 Section Header 都描述了 ELF 文件 Sections 区域中一个节信息。...Program Header 结构 Program Header Table 条目 Program Header 是与程序执行直接相关,他描述了一个即将被载入内存段在文件位置、大小以及它被载入内存后所在位置和大小...了解了上面的结构信息,你就会发现,事实上与我们目标直接相关ELF 文件 Program Header 部分,他描述了可执行文件中有那几个段,每个段需要被载入到内存哪个位置,而每个段包含多少个节

2.6K20

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

不光是可执行文件按照可执行文件格式存储,动态链接库(DLL,Dynamic Linking Library)(Windows.dll和Linux.so)及静态链接库(Static Linking Library...,二是与可执行文件结合,作为进程映像部分来运行 Linux.a,Windows.dll 可执行文件(Executable File) 包含了可直接执行程序 Linux下无后缀ELF可执行文件...Linux下可以根据file命令查看上面表格列出四种ELF文件格式。...后台,System V Release 4 在 COFF基础上引入了ELF格式,目前流行Linux系统也是以ELF作为基本可执行文件格式。...由于COFF格式设计非常通用,以至于COFF继承者PE和ELF目前还在被广泛地使用。COFF主要贡献是在目标文件引入了“段”机制,不同目标文件可以拥有不同数量及不同类型段。

2.9K30

含大量图文解析及例程 | Linux下ELF文件、链接、加载与库(

我们用命令readelf -a [fileName] Section to Segment mapping部分来看一下可执行文件中段映射关系。...下图是Linux内核代码ELF文件装载相关一些代码: /fs/binfmt_elf.c Load_elf_binary代码走读: 检查ELF文件头部信息(一致性检查) 加载程序头表(可以看到一个可执行程序必须至少有一个段...静态ELF文件加载:将磁盘上静态链接可执行文件按照ELF program header,正确地搬运到内存执行。...也就是说,库foo函数确实是动态链接,内存只有一份foo副本。 这在操作系统内核不难实现:所有以只读方式映射同一个文件部分(如代码部分)时,都指向同一个副本,这个过程中会创建引用计数。...Linux动态链接器是glibc部分,入口地址是sysdeps/x86_64/dl-machine.h_start,然后调用 elf/rtld.c _dl_start函数,最终调用 dl_main

2.4K20

Linux CC++工程可生成 ELF、动静态库文件通用 Makefile(二)

今天对之前写 Linux C/C++工程可生成ELF、动/静态库文件通用Makefile - TypeCodes 文章里面的 Makefile 进行了优化,增加了在当前目录生成单个可执行文件功能...1 功能说明 之前已有的功能不再赘述,这次主要是在包含多个 cpp 文件项目中生成一个可执行文件(之前只能一个 cpp 或者 c 文件生成对应一个可执行文件)。...如上图所示,我一个 myRedisSentinel 目录包含了多个 cpp 文件,然后只要在 SINGLE_BIN 里面配置想要输出可执行文件名称,最后执行 make -j4 命令即可生成。...2 附录:Makefile 文件源码 已将下面的 Makefile 源文件托管到 github仓库: 1、GitHub: https://github.com/vfhky/General_Makefile...###################### # # FILENAME : Makefile # DESCRIPT : A general makefile to generate an ELF

8110

Linux CC++工程可生成 ELF、动静态库文件通用 Makefile(二)

今天对之前写 Linux C/C++工程可生成ELF、动/静态库文件通用Makefile - TypeCodes 文章里面的 Makefile 进行了优化,增加了在当前目录生成单个可执行文件功能...1 功能说明 之前已有的功能不再赘述,这次主要是在包含多个 cpp 文件项目中生成一个可执行文件(之前只能一个 cpp 或者 c 文件生成对应一个可执行文件)。...如上图所示,我一个 myRedisSentinel 目录包含了多个 cpp 文件,然后只要在 SINGLE_BIN 里面配置想要输出可执行文件名称,最后执行 make -j4 命令即可生成。...2 附录:Makefile 文件源码 已将下面的 Makefile 源文件托管到 github仓库: 1、GitHub: https://github.com/vfhky/General_Makefile...###################### # # FILENAME : Makefile # DESCRIPT : A general makefile to generate an ELF

7510

ELF文件格式解析

sh_link & sh_info sh_link和sh_info字段具体含义依赖于sh_type值: sh_type sh_link sh_info SHT_DYNAMIC 此节区条目所用到字符串表格节区头部索引...} Elf32_sym; 在010Editor里解析完成后这部分内容就是dynamic_symbol_table了 其中symname值就是在.dynstr偏移了。....dynamic节区   由于.dynamic节区在010Editor不会和其他Header Table一样有模板来解析各个组成部分含义,而是只能看到如下图中内容,因此需要人工理解一下各个部分意义...如图是32位ELF.dynamic节区,所以一个条目是d_tag(四字节) + d_un(四字节)共八字节。若在64位下则是一共十六字节。...通过Program Header Table定位,首先找到dynamic段,然后读取遍历dynamic条目,找到DT_STRTAB,后边值即为.dynstr偏移。

2.4K40

【Android 逆向】使用 Python 解析 ELF 文件 ( Capstone 反汇编 ELF 文件机器码数据 | 反汇编二进制机器码 | 打印反汇编数据 )

; 调用 反汇编解析器 disasm 方法 , 向汇编解析器传入 节区数据 对应 二进制数据 , 这些二进制数据都是机器码数据 , 即 , 需要反汇编这些二进制数据为 汇编 代码 ; 第一个参数设置二进制数据...; 第二个参数指的是读取 raw 二进制数据起始地址 , 一般设置 0 即可 ; 调用 反汇编解析器 disasm 方法 , 得到是反汇编后汇编代码列表 , 如果反汇编失败 , 此处为空 ;...capstone = Cs(CS_ARCH_X86, CS_MODE_32) # 此处设置为 true , 表示需要显示细节 , 打开后 , 会标明每条汇编代码对寄存器影响...# 如 : 本条汇编代码 , 会读写哪些寄存器 capstone.detail = True # 向汇编解析器传入 节区数据...= capstone.disasm(raw, 0) 二、打印反汇编数据 ---- 调用 反汇编解析器 disasm 方法 , 得到是反汇编后汇编代码列表 ; 遍历该汇编代码列表 , 可以得到该行汇编代码对应

75110

Linux系统编译、链接基石-ELF文件:扒开它层层外衣,从字节码粒度来探索

在 Linux 系统,一个 ELF 文件主要用来表示 3 种类型文件: ? 既然可以用来表示 3 种类型文件,那么在文件,肯定有一个地方用来区分这 3 种情况。...加载器在看我时候,它眼睛里是另外 3 部分内容: ? 加载器只关心 ELF header, Program header table 和 Segment 这 3 部分内容。...其实只要掌握到 2 点内容就可以了: 一个 ELF 文件一共由 4 个部分组成; 链接器和加载器,它们在使用我时候,只会使用它们感兴趣部分; 还有一点差点忘记给你提个醒了:在 Linux 系统,...,将会有 4 个 Entry(条目)来分别描述这 4 个 Section 具体信息(严格来说,不止 4 个 Entry,因为还存在一些其他辅助 Sections),就像下面这样: ?...为了权威性,我把官方文档对于这部分解释也贴给大家看一下: ? 关于大端、小端格式,这个 main 文件显示是 1,代表小端格式。啥意思呢,看下面这张图就明白了: ?

76520

详解共享库动态加载

每个这样表都由固定大小条目组成(我使用该条目在适当描述段标题或节标题)。条目是标题,并且包含指向该段或节实际主体位置指针(文件偏移量)。该主体存在于文件数据部分。...它们类型LOAD(有2个),DYNAMIC,NOTE等等。我们也可以看到各段部分所有权。...在他们:因为我们感兴趣是这个文件特定部分,我解释这个程序头表,ELF文件可以有(和共享特别库必须具有)段头一个描述段型PT_DYNAMIC。...该部分拥有一个名为部分.dynamic,其中包含有用信息以了解动态依赖性。 直接依赖 我们可以使用readelf实用工具来进一步探索.dynamic可执行文件部分。...可执行文件或共享库rpath和runpath在.dynamic我们前面介绍部分是可选条目。它们都是要搜索目录列表。

3K20
领券