segment and section for c++ elf】的更多相关文章

http://blog.csdn.net/jiafu1115/article/details/12992497 写一个汇编程序保存成文本文件max.s. 汇编器读取这个文本文件转换成目标文件max.o,目标文件由若干个Section组成,我们在汇编程序中声明的.section会成为目标文件中的Section,此外汇编器还会自动添加一些Section(比如符号表). 然后链接器把目标文件中的Section合并成几个Segment[28],生成可执行文件max. 最后加载器(Loader)根据可执行…
ELF 是Executable and Linking Format的缩写,即可执行和可链接的格式,是Unix/Linux系统ABI (Application Binary Interface)规范的一部分. Unix/Linux下的可执行二进制文件.目标代码文件.共享库文件和core dump文件都属于ELF文件. 下面的图来自于文档 Executable and Linkable Format (ELF),描述了ELF文件的大致布局. 左边是ELF的链接视图,可以理解为是目标代码文件的内容布…
catalog . INTRODUCTION . THE PROCESS IMAGE . THE CORE IMAGE . EXECUTABLE RECONSTRUCTION . FAILURES IN RECONSTRUCTION . USES OF RECONSTRUCTION . Helper Tools . Code For New Linux Kernel 1. INTRODUCTION This article documents the results from experimen…
目录 . 引言 . ELF文件格式 . ELF格式分析工具 0. 引言 0x1: ELF文件类型 ELF文件标准里把系统中采用ELF格式的文件归为以下几类 . 可重定位文件(Relocatable File) 这类文件包含了代码和数据,可以被用来链接成可执行文件或共享目标文件,静态链接库也可以归为这一类 ) .o文件 . 可执行文件(Executable File) 这类文件包含了可以直接执行的程序,它的代表就是ELF可执行文件,它们一般都没有扩展名 ) /bin/bash文件 . 共享目标文件…
摘要:本文主要讲解elf文件格式,通过readelf命令结合底层的相关数据结构,讲解相关内容,分析程序运行的基本原理. 本文来源:elf 文件格式探秘——程序运行背后的故事 http://blog.csdn.net/trochiluses/article/details/10373921 1.elf 文件格式概览 elf文件大体上由文件头和相关的section组成,而每个section由header和data组成. 2.elf文件头 文件头的数据结构: 1 typedef struct { un…
介绍 技术原因写这篇文章,有两种: 一个是在大多数在线叙述性说明发现PLT/GOT第二十符号重定向过程定向x86的,例<Redirecting functions in shared ELF libraries>就写得很不错.尽管其过程跟ARM很相似.但由于CPU体系不同,指令实现差异很大: 其二是网上大部分关于ELF文件格式的介绍,都是基于链接视图(Linking View),链接视图是基于节(Section)对ELF进行解析的.然而动态链接库在载入的过程中,linker仅仅关注ELF中的段…
四. ELF 文件格式分析 ELF文件(目标文件)格式主要四种: 可重定向文件: 文件保存着代码和适当的数据,用来和其他的目标文件一起来创建一个可执行文件或者是一个共享目标文件.(目标文件或者静态库文件,即linux通常后缀为 .a 和 .o 的文件) 可执行文件: 文件保存着一个用来执行的程序.(例如bash,gcc等) 共享目标文件: 共享库.文件保存着代码和合适的数据,用来被下连接编辑器和动态链接器链接.(linux下后缀为 .so 的文件.) 执行文件的格式与上述两种文件的格式之间的区别…
前文链接: ELF格式探析之一:Segment和Section ELF格式探析之二:文件头ELF Header详解 今天我们讲对目标文件(可重定位文件)和可执行文件都很重要的section. 我们在讲ELF Header的时候,讲到了section header table.它是一个section header的集合,每个section header是一个描述section的结构体.在同一个ELF文件中,每个section header大小是相同的.(其实看了源码就知道,32位ELF文件中的se…
ELF目标文件格式最前部ELF文件头(ELF Header),它包含了描述了整个文件的基本属性,比如ELF文件版本.目标机器型号.程序入口地址等.其中ELF文件与段有关的重要结构就是段表(Section Header Table) ELF文件格式 可重定向文件:文件保存着代码和适当的数据,用来和其他的目标文件一起来创建一个可执行文件或者是一个共享目标文件.(目标文件或者静态库文件,即linux通常后缀为.a和.o的文件) 可执行文件:文件保存着一个用来执行的程序.(例如bash,gcc等) 共享…
引言 写这篇技术文的原因,主要有两个: 其一是发现网上大部分描写叙述PLT/GOT符号重定向过程的文章都是针对x86的.比方<Redirecting functions in shared ELF libraries>就写得很不错. 尽管其过程跟ARM很相似,但由于CPU体系不同,指令实现差异很大. 其二是网上大部分关于ELF文件格式的介绍.都是基于链接视图(Linking View),链接视图是基于节(Section)对ELF进行解析的. 然而动态链接库在载入的过程中,linker仅仅关注E…
http://www.cnblogs.com/hzl6255/p/3312262.html ELF, Executable and Linking Format, 是一种用于可执行文件.目标文件.共享库和核心转储的标准文件格式.  ELF格式是是UNIX系统实验室作为ABI(Application Binary Interface)而开发和发布的. 这里简单介绍一下相关历史:  - UNIX:        最初采用的格式为a.out,之后被System V中的COFF取代,最后则被SVR4中的…
http://blog.csdn.net/lingfong_cool/article/details/7832896 (一) ELF 文件的格式       ELF 文件类型 (1) 可重定位文件( .o 目标文件) : 用于链接创建可执行文件或 so 文件 (2) 可执行文件                     : 用于执行 (3)so( 共享对象 ) 文件            : 用于链接 注 :   一个 Program Header 对应一个 Segment 一个 Section…
ELF文件整体布局 下图是后来例子中main.o和main.elf的布局. 其中,只有elf header的位置是固定的,固定在文件开始,其它部分的位置都不确定. 比如下面的main.o布局中,.text .comment .shstrtab两个节在前面,而section header table在后面 正常流程应该是由elf header找到section header table,然后,基于该表,定位其它的节. main.o是Reloc文件,没有program header:main.elf…
最近一个月的时间大部分在研究glibc中dlopen的代码,基本上对整个流程建立了一个基本的了解.由于网上相关资料比较少,走了不少弯路,故在此记录一二,希望后人能够站在我这个矮子的肩上做出精彩的成果. ELF格式简介 dlopen是用来加载ELF文件中的共享对象(shared object,下文简称为so)的.ELF文件有多种类别,通过其header中0x10处的两个字节标识,参考Wikipedia.ELF的header中还包含了一些额外信息如指令集.操作系统信息等等,在本文中不会涉及. 可以把…
本文信息来源: 又是一期硬核内容:ELF文件格式 What's the difference of section and segment in ELF file format ELF Sections & Segments and Linux VMA Mappings ELF简介 ELF全称 executable and linkable format 精灵 是一种linux下常用的可执行文件 对象 共享库的标准文件格式 还有许多其他可执行文件格式 PE Mach-O COFF COM 内核中…
一 :概述 ELF全称Executable and Linkable Format,可执行连接格式,ELF格式的文件用于存储Linux程序.ELF文件(目标文件)格式主要三种: (1)可重定向文件:文件保存着代码和适当的数据,用来和其他的目标文件一起来创建一个可执行文件或者是一个共享目标文件. (目标文件或者静态库文件,即linux通常后缀为.a和.o的文件) (2)可执行文件:文件保存着一个用来执行的程序.(例如bash,gcc等) (3)共享目标文件:共享库.文件保存着代码和合适的数据,用来…
ELF文件(目标文件)格式主要三种: 1)可重定向文件:文件保存着代码和适当的数据,用来和其他的目标文件一起来创建一个可执行文件或者是一个共享目标文件.(目标文件或者静态库文件,即linux通常后缀为.a和.o的文件) 2)可执行文件:文件保存着一个用来执行的程序.(例如bash,gcc等) 3)共享目标文件:共享库.文件保存着代码和合适的数据,用来被下连接编辑器和动态链接器链接.(linux下后缀为.so的文件.) 一般的 ELF 文件包括三个索引表: 1)ELF  header:在文件的开始…
2.4   ELF文件格式分析 20135318 刘浩晨 ELF全称Executable and Linkable Format,可执行连接格式,ELF格式的文件用于存储Linux程序.ELF文件(目标文件)格式主要三种: 1)可重定向文件:文件保存着代码和适当的数据,用来和其他的目标文件一起来创建一个可执行文件或者是一个共享目标文件.(目标文件或者静态库文件,即linux通常后缀为.a和.o的文件) 2)可执行文件:文件保存着一个用来执行的程序.(例如bash,gcc等) 3)共享目标文件:共…
标签(空格分隔): 20135321余佳源 一.基础知识 ELF全称Executable and Linkable Format,可执行连接格式,ELF格式的文件用于存储Linux程序.ELF文件(目标文件)格式主要三种: 可重定向文件:文件保存着代码和适当的数据,用来和其他的目标文件一起来创建一个可执行文件或者是一个共享目标文件.(目标文件或者静态库文件,即linux通常后缀为.a和.o的文件) 可执行文件:文件保存着一个用来执行的程序.(例如bash,gcc等) 共享目标文件:共享库.文件保…
linux第三次实践:ELF文件格式分析 标签(空格分隔): 20135328陈都 一.概述 1.ELF全称Executable and Linkable Format,可执行连接格式,ELF格式的文件用于存储Linux程序.ELF文件(目标文件)格式主要三种: 可重定向文件:文件保存着代码和适当的数据,用来和其他的目标文件一起来创建一个可执行文件或者是一个共享目标文件.(目标文件或者静态库文件,即linux通常后缀为.a和.o的文件) 可执行文件:文件保存着一个用来执行的程序.(例如bash,…
2.4   ELF文件格式分析 20135306 黄韧 ELF全称Executable and Linkable Format,可执行连接格式,ELF格式的文件用于存储Linux程序.ELF文件(目标文件)格式主要三种: 1)可重定向文件:文件保存着代码和适当的数据,用来和其他的目标文件一起来创建一个可执行文件或者是一个共享目标文件.(目标文件或者静态库文件,即linux通常后缀为.a和.o的文件) 2)可执行文件:文件保存着一个用来执行的程序.(例如bash,gcc等) 3)共享目标文件:共享…
ELF(Executable and Linking Format)用于存储Linux程序. ELF文件分三种类型: 1.目标文件(通常是.o); 2.可执行文件(我们的运行文件)   3.动态库(.so) ELF头的各个字段: typedef struct { unsigned char e_ident[EI_NIDENT]; /* File identification. */ Elf32_Half e_type; /* File type. */ Elf32_Half e_machine;…
gcc编译选项可以设置生成调试信息, debug信息格式有stabs,coff,xcoff,dwarf. 常用的有两种格式,stab和dwarf,stab较早,dwarf较新.两种格式介绍:https://www.ibm.com/developerworks/cn/opensource/os-debugging/ 单独-g可以生成只有gdb能识别的额外辅助信息,如果不想生成这些辅助信息,可以使用-gstabs等选项,只生成stabs调试信息,不生成额外辅助信息. 调试选项-g和优化选项-O一起使…
➠更多技术干货请戳:听云博客 0x01  Mach-O格式简单介绍 Mach-O文件格式是 OS X 与 iOS 系统上的可执行文件格式,类似于windows的 PE 文件 与 Linux(其他 Unix like)的 ELF 文件,如果不彻底搞清楚Mach-O的格式与相关内容,那么深入研究 xnu 内核就无从谈起. Mach-O文件的格式如下图所示: 有如下几个部分组成: 1. Header:保存了Mach-O的一些基本信息,包括了平台.文件类型.LoadCommands的个数等等. 2. L…
转载自http://bbs.pediy.com/showthread.php?t=191649 以前一直对.so文件加载时解密不懂,不了解其工作原理和实现思路.最近翻看各种资料,有了一些思路.看到论坛没有类似帖子,故来一帖,也作为学习笔记.限于水平,本菜没有找到安卓平台一些具体实现思路,这些方法都是借鉴其他平台的实现思路和本菜的YY,肯定会有不少疏漏和错误之处,还请各位大牛指正,感激不尽! 简单粗暴的so加解密实现一.  概述利用动态链接库实现安卓应用的核心部分,能一定程度的对抗逆向.由于ida…
“平安的祝福 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ” 理解编译链接的过程和ELF可执行文件格式…
[预备起~~~]最近在忙找工作的事情,笔试~面试~笔试~面试...很久没有写(pian)文(gao)章(fei).忙了一阵子之后,终于~~~到了选offer的阶段(你家公司不是牛吗,老子不接你家offer,哈哈哈哈~~~),可以喘(出)口(口)气(恶)了(气)...来来来,继续讨论一下抗静态分析的问题,这回要说的是如何对so文件进行加密.[一二三四]so文件的作用不明觉厉~~~不对是不言而喻.各大厂商的加固方案都会选择将加固的代码放到native层,主要因为native层的逆向分析的难度更大,而…
Linux与Windows的动态连接库概念相似,但是实现机制不同.它引入了GOT表和PLT表的概念,综合使用了多种重定位项,实现了"浮动代码",达到了更好的共享性能.本文对这些技术逐一进行了详细讨论. 本文着重讨论x86体系结构,这是因为 (1)运行Linux的各种体系结构中,以x86最为普及: (2)该体系结构上的Windows操作系统广为人知,由此可以较容易的理解Linux的类似概念: 下表列出了Windows与Linux的近义词,文中将不加以区分: Windows Linux  …
作业七:Linux内核如何装载和启动一个可执行程序 一.编译链接的过程和ELF可执行文件格式 可执行文件的创建——预处理.编译和链接 在object文件中有三种主要的类型. 一个可重定位(relocatable)文件保存着代码和适当的数据,用来和其他的object文件一起来创建一个可执行文件或者是一个共享文件. 一个可执行(executable)文件保存着一个用来执行的程序:该文件指出了exec(BA_OS)如何来创建程序进程映象. 一个共享object文件保存着代码和合适的数据,用来被下面的两…
此为个人学习笔记存档 week 7 可执行程序的装载 一.预处理.编译.链接和目标文件的格式 可执行文件的创建--预处理.编译和链接 cd Code vi hello.c gcc -E -o hello.cpp hello.c -m32 vi hello.cpp gcc -x cpp-output -S -o hello.s hello.cpp -m32 vi hello.s gcc -x assembler -c hello.s -o hello.o -m32 vi hello.o gcc -…