《操作系统真象还原》ELF文件】的更多相关文章

下面是第五章部分内容的收获. 用C语言编写内核 一直以来我们都是用汇编语言编写程序的,但接下来我们或许很少用汇编语言编写代码了,大多数都是使用C语言.为什么要这样呢?书上的解释我看的不是很懂,只能结合书上谈谈我的见解,个人觉得有两个原因: 汇编语言编写代码较高级语言来说还是麻烦很多的,毕竟大家试试就知道了,一句C语言代码,可能要几句汇编语言代码才能与之对应.那有人说CPU能执行C语言代码吗,当然不,CPU最终执行的是机器指令,也就是由0和1组成的机器指令.所以肯定需要一个东西将C语言转换为机器指…
在安装bochs之前,我们先需要安装虚拟机和linux发行版,也可以安装双系统,总之有个linux操作系统就好. 我是在ubuntu14.04系统下安装bochs的. 安装Bochs 以下为安装步骤 下载bochs.官方地址是http://sourceforge.net/projects/bochs/files/bochs/,安装的版本是2.6.2,下载后的文件是bochs-2.6.2.tar.gz. 解压压缩包 tar zxvf bochs-2.6.2.tar.gz 编译.先进入到目录 cd…
以下是读本书第三章的收获. 如何知道一个源程序的各符号(指令和变量)地址?简单来说,地址就是该符号偏移文件开头的距离,符号的地址是按顺序编排的,所以两个相邻的符号,其地址也是相邻的.对于指令来说,指令的地址=上一个指令的地址+上一个指令的大小,最初的符号地址为0,可以根据此公式推算出所有符号的地址. section称为节,它是提供给程序员编排程序用的,我们可以将一段读取字符串的代码放在section A下,将读取硬盘的代码放进section B下,可以给A,B换成一个更具体的名字,来提高可读性.…
以下是读本书第二章的收获. 记得我大学学习操作系统的时候会遇到一些奇奇怪怪的问题,因为觉得问题太奇怪了,所以羞于问老师.诸如ROM到底是个什么东西:如果用内存映射的方式访问外部设备,是不是内存条里专门有块内存空间来用于访问供外部设备,是不是先访问内存条这个地址,然后就直接跳到访问这个设备了等等.幸运的是,这本书都给我一一解答了. 实际上,ROM是下图这样的一种只读存储器(取自百度百科),是一种即使没有通电,也能保存信息的存储器.ROM其实是既可以读也可以写,只不过由于历史原因统称只读存储器.RO…
ELF文件格式是一个开发标准,各种UNIX系统的可执行文件都采用ELF格式,它有三种不同的类型: 可重定位的目标文件 可执行文件 共享库 现在分析一下上一篇文章中经过汇编之后生成的目标文件max.o和链接之后生成的可执行文件max的格式,从而理解汇编.链接和加载执行的过程. 一.目标文件 ELF文件格式提供了两种不同的视角,在汇编器和链接器看来,ELF文件是由Section Header Table描述的一系列Section的集合,而执行一个ELF文件时,在加载器看来它是由Program Hea…
加载和动态链接 从编译/链接和运行的角度看,应用程序和库程序的连接有两种方式. 一种是固定的.静态的连接,就是把需要用到的库函数的目标代码(二进制)代码从程序库中抽取出来,链接进应用软件的目标映像中: 另一种是动态链接,是指库函数的代码并不进入应用软件的目标映像,应用软件在编译/链接阶段并不完成跟库函数的链接,而是把函数库的映像也交给用户,到启动应用软件目标映像运行时才把程序库的映像也装入用户空间(并加以定位),再完成应用软件与库函数的连接. 这样,就有了两种不同的ELF格式映像. 一种是静态链…
四. ELF 文件格式分析 ELF文件(目标文件)格式主要四种: 可重定向文件: 文件保存着代码和适当的数据,用来和其他的目标文件一起来创建一个可执行文件或者是一个共享目标文件.(目标文件或者静态库文件,即linux通常后缀为 .a 和 .o 的文件) 可执行文件: 文件保存着一个用来执行的程序.(例如bash,gcc等) 共享目标文件: 共享库.文件保存着代码和合适的数据,用来被下连接编辑器和动态链接器链接.(linux下后缀为 .so 的文件.) 执行文件的格式与上述两种文件的格式之间的区别…
二.ELF 文件介绍 2.1 可执行文件格式综述 相对于其它文件类型,可执行文件可能是一个操作系统中最重要的文件类型,因为它们是完成操作的真正执行者.可执行文件的大小.运行速度.资源占用情况以及可扩展性.可移植性等与文件格式的定义和文件加载过程紧密相关.研究可执行文件的格式对编写高性能程序和一些黑客技术的运用都是非常有意义的. 可执行链接格式 ( Executable and Linking Format)最初是由 UNIX 系统实验室 ( UNIX System Laboratories, U…
[转]https://blog.csdn.net/ZCShouCSDN/article/details/100048461 ELF 文件规范   ELF(Executable and Linking Format)是一个二进制文件规范.用于定义不同类型的对象文件(Object files)中都放了什么东西.以及都以什么样的格式去放这些东西.   现在流行的二进制可执行文件格式 (Executable File Format),主要是 Windows 下的 PE(Portable Executab…
本文介绍了C6000最新的v7.2或者之后的编译器如何支持ELF(EABI)和COFF-ABI格式,首先由ARM引入嵌入式(Embedded) EABI的介绍,之后比较了COFF-ABI和EABI的区别,如何用编译器选项(--ABI=EABI --strip_coff_underscore)和预编译处理命令来实现从COFF格式到ELF格式的转换,主要是关注long数据类型位宽不一致以及汇编文件变量和函数定义的前置下划线的处理方式.最后是ELF格式引入的链接段区和COFF格式的不同. EABI简介…