EXE文件结构及读取方法

EXE文件结构及读取方法

一、EXE文件概念

EXE File英文全名executable file ,译作可运行文件,可移植可运行 (PE) 文件格式的文件,它能够载入到内存中,并由操作系统载入程序运行。是可在操作系统存储空间中浮动定位的可运行程序。如记事本程序notepad.exe ,能够用来编辑文档。如:測试.txt双击打开notepad.exe记事本程序来进行编辑处理。

二、EXE文件结构

EXE文件分为两个部分: EXE文件头和程序本体。exe文件比較复杂,属于一种多段的结构,是DOS最成功和复杂的设计之中的一个。每一个exe文件包括一个文件头和一个可重定位程序的映像。

文件头包括MS-DOS用于载入程序的信息,比如程序的大小和寄存器的初始值。文件头还指向一个重定位表,该表包括指向程序映像中可重定位段地址的指针链表。

MS-DOS通过把该映像直接从文件拷贝到内存载入exe程序,然后调整定位表中说明的可重定位段地址。定位表是一个重定位指针数组,每一个指向程序映像中的可重定位段地址。 预知具体原理与结构,请点击EXE文件结构及原理

上表是EXE文件头

三、EXE文件打开方法

因为EXE文件比較特殊,打开方式也有点特殊,需指定格式。见以下代码:

#include

#include

#include

#include

using namespace std;

const int BUFFER_SIZE=1024;

void update(ifstream& in)

{

if (!in)

{

return;

}

std::streamsize length;

char buffer[BUFFER_SIZE];

while (!in.eof())

{

in.read(buffer, BUFFER_SIZE);

length = in.gcount();

if (length > 0)

{

printf("%s",buffer);

}

}

in.close();

}

int main()

{

update(ifstream("1.exe", ios_base::binary));

return 0;

}

当中,ios_base 是C++标准程序库中的一个类,定义于头文件里。

ios_base类封装了C++标准中的流输入输出中不依赖于读写的数据的类型的基本信息,如格式化信息、异常状态、事件回调函数等。

关于PE文件的头,能够參考PE文件说明。

相关推荐

娱乐圈中假戏真做的那些女星都有哪些?
365bet赌城投注

娱乐圈中假戏真做的那些女星都有哪些?

🎯 08-09 💯 764
博世冰箱售后怎么样?博世冰箱售后服务质量如何?
正规det365登录网站

博世冰箱售后怎么样?博世冰箱售后服务质量如何?

🎯 08-06 💯 674
日文输入时促音、拨音、拗音的输入方法
365bet赌城投注

日文输入时促音、拨音、拗音的输入方法

🎯 06-30 💯 876