http://blog.csdn.net/q_l_s/article/details/52597330 三.分析在fork产生新进程中ELF文件格式与进程地址空间的联系 1.进程的虚拟地址空间 每个程序都有自己的虚拟地址空间(Virtual Address Space),大小由硬件平台(CPU位数)决定. 如32位平台下每个程序都有4G虚拟空间.但4G空间不是都分配给程序的用户空间,还有系统的虚拟空间.如Linux系统默认情况下高1G为系统的虚拟地址空间,低3G为用户空间. 这也就是说每个进程原…
本文基于Linux™系统对进程创建与加载进行分析,文中实现了Linux库函数fork.exec,剖析内核态执行过程,并进一步展示进程创建过程中进程控制块字段变化信息及ELF文件加载过程. 一.初识Linux进程                                                                                                                                                …
引言:上篇博文中,我们简单的介绍了Linux虚拟存储器的概念及组成情况,下面来分析分析进程的创建和终结及跟进程地址空间的联系. 这里首先介绍一个比较重要的概念:存储器映射 在Linux系统中,通过将一个虚拟存储器区域与一个磁盘上的对象关联起来,以初始化这个虚拟存储器区域的内容,这个过程称为存储器映射.存储器映射为共享数据.创建新的进程以及加载程序提供了一种高效的机制. 虚拟存储器区域可以映射到两种类型对象中: 1)普通文件:一个虚拟区域可以映射到普通磁盘文件的连续部分,例如可执行目标文件.虚拟区…
最近的lab里面有ELF文件相关的,所以成这个几乎,学点ELF的东西. ELF,是一种文件格式.暂时,只看可执行文件的ELF文件格式. 首先,给出文件的格式的布局图: 光看这个很难理解,所以写一个小的程序,用readelf来结合的看. 程序比较简单: #include <stdio.h> #include <stdlib.h> int data[100] ={0}; int bss[100]; int main() { int i=0; for(i=0; i<100; i++…
摘要:本文主要讲解elf文件格式,通过readelf命令结合底层的相关数据结构,讲解相关内容,分析程序运行的基本原理. 本文来源:elf 文件格式探秘——程序运行背后的故事 http://blog.csdn.net/trochiluses/article/details/10373921 1.elf 文件格式概览 elf文件大体上由文件头和相关的section组成,而每个section由header和data组成. 2.elf文件头 文件头的数据结构: 1 typedef struct { un…
ELF(Executable and Linking Format)是一种对象文件的格式,用于定义不同类型的对象文件(Object files)中都放了什么东西.以及都以什么样的格式去放这些东西.它自最早在 System V 系统上出现后,被 xNIX 世界所广泛接受,作为缺省的二进制文件格式来使用.可以说,ELF是构成众多xNIX系统的基础之一,所以作为嵌入式Linux系统乃至内核驱动程序开发人员,你最好熟悉并掌握它. 其实,关于ELF这个主题,网络上已经有相当多的文章存在,但是其介绍的内容比…
ELF文件格式学习总结 ELF文件格式学习总结1. 概述2. 目标文件结构3. ELF文件头3.1 魔数3.2 文件类型3.3 机器类型4. ELF文件内容4.1段表4.2字符串表(.**strtab)4.3符号表4.4重定位段(.rel.***) 1. 概述 ELF文件全称是Executable Linking Format(可执行连接格式),最初由unix系统实验室发布,它是应用程序二进制接口(Application Binary Interface,ABI)的一部分.在linux下,它是可…
ELF--Linux下可执行文件格式   1.类型          常见的ELF格式文件包括:                                                                  ELF文件格式类型   2.常用工具        2.1 objdump --查看文件结构信息       2.2 nm --查看对象文件的符号信息         3.目标文件结构                                            …
linux进程地址空间详解(转载) 在前面的<对一个程序在内存中的分析 >中很好的描述了程序在内存中的布局,这里对这个结果做些总结和实验验证.下面以Linux为例(实验结果显示windows上的结果也一样). 我们还是利用前面看到过的这个图,如下图:32位X86机器的内存布局图,内存主要分为栈.堆.BSS段.数据段.代码段5个段.   代码段:代码段(code segment/text segment)通常是指用来存放程序执行代码的一块内存区域.这部分区域的大小在程序运行前就已经确定,并且内存…
2.4   ELF文件格式分析 20135318 刘浩晨 ELF全称Executable and Linkable Format,可执行连接格式,ELF格式的文件用于存储Linux程序.ELF文件(目标文件)格式主要三种: 1)可重定向文件:文件保存着代码和适当的数据,用来和其他的目标文件一起来创建一个可执行文件或者是一个共享目标文件.(目标文件或者静态库文件,即linux通常后缀为.a和.o的文件) 2)可执行文件:文件保存着一个用来执行的程序.(例如bash,gcc等) 3)共享目标文件:共…