PE格式学习笔记(一)

news/2024/7/8 16:23:59 标签: microsoft, 编译器, windows, image, 数据结构, dos

1.概述  

PE文件格式,全称Portable Executable,是一种使用在WIN32下的可执行文件格式。之前有在MS-DOS下的MZ格式与16位WIN下的NE格式。具体定义可以在winnt.h文件的Image Format部分中可以找到。

64位WINDOWS只是对该格式某些域进行了或删除或扩展的修改,称为PE32+格式。PE格式经历了近20年仍保持其精华可见其设计的精妙。

之所以称之为可移植,是因为在与不在Inter处理器上运行无关紧要,同样可以识别该格式,虽然CPU指令也许会不同。

Microsoft采用的可执行文件与目标模块的格式称之为COFF,即通用目标文件格式,这也是为操作系统加载器与编程工具不需要为每种CPU定制特定的文件格式所提出的。在Windows NT的C编译器之前,采用Inter的OMF规范,采用这种格式会导致需要针对不同的编译器发布不同的OBJ或LIB文件版本。

 

2.DUMP

什么是DUMP?DUMP称转储,是将RAW DATA从一个地方拷贝到另一个地方的过程。一般来说,DUMP指将主内存中数据输出到显示器或打印机以供分析。所谓RAW DATA是指原始数据,并未被分析或者格式化。而DUMP后得到的数据为了增强可读性也许会附带一些格式。

 

3.补充

PE格式文件的一个很大优点在于它的数据结构在磁盘上与在内存中有相当的一致性,这就意味着加载一个PE文件并不需要进行很多操作。但值得注意的是,并不是PE文件中所有的部分都被映射进内存中,具体内容是有选择的.

 

4.结构概述

PE文件由DOS头、PE头、节表与节组成。而节的内容就是PE文件中的代码、数据、资源所在的部分。在PE文件中,很大部分用到了链表结构。例如从DOS头中可以找到PE头的RAV,而PE头又可以确定IMAGE_DATA_DIRECTORY_xxx 结构数组,可以同节表一起获取节的信息。因此,在WINNT.H中寻找PE文件的结构不是件容易的事

 


http://www.niftyadmin.cn/n/680052.html

相关文章

在VS2008套装中的VC++环境下使用正则表达式

这里不对正则表达式的具体形式和具体运用进行讨论,只是提供一个可行的方法。在网上找了很多帖子都说VS2008所带的VC中去掉了atlrx.h,个人觉得下载boost库是件麻烦的事,感觉一个高级编程环境不应该这样。结果在MSDN上找到了答案,其实可以用Reg…

Inter汇编语言程序设计之标志寄存器状态标志

书中第二章讨论了IA-32处理器中EFLAGES寄存器中各状态标志位(以下简称状态位)随计算结果变化的情况。本文关注的是进位标志CF、溢出标志OF、零标志ZF和符号标志SF。在文章中写到: 进位标志(CF):在无符号算术运算中的结果太大而目的…

什么叫网表?

比较汗颜,学了一段时间FPGA,经常看到“将语句翻译成网表”类似的表述,可是始终不知道网表为何物。请教了一些朋友也得不到个确切的答案。最近看了《基于FPGA的系统设计》一书,才知道网表为何物。在此留个底。 对于一个电路来说&am…

modelsim编译xilinx库文件的简单方法

在网上搜了无数帖子,结合自己数小时的实践,终于搞定了Xilinx仿真库。 测试环境:Windows XP3,Xilinx ISE Suite 10.1,ModelSim SE 6.5c 使用ISE自带的库生成工具是最方便的方法。 首先打开ISE,在Edit-…

Picoblaze的简易中断实验的启示

Picoblaze的LED灯中断实验 刚学习Picoblaze,自己设计了一个实验,几天功夫实验才成功,并且搞清楚之前问题的根源,撰此文以记之。 如不了解Picoblaze相关知识,请参阅其他网络文档,Xilinx公司应用手册等参…

怎样查找Xilinx的资料

俗话说”授之鱼不如授之以渔”,看到这边有人要资料有人送资料的,其实论坛不更应该是一个交流的空间么?那就让找资料更有效率一点,让大家花更多时间来交流吧。 言归正传,写这篇文章主要想介绍Xilinx各种资料的找法、分…

gorm忽略一个字段_FuzzyWuzzy库:一个非常好用的 Python 魔法库

今天跟大家分享FuzzyWuzzy一个简单易用的模糊字符串匹配工具包。让你多快好省的解决烦恼的匹配问题!1. 前言在处理数据的过程中,难免会遇到下面类似的场景,自己手里头获得的是简化版的数据字段,但是要比对的或者要合并的却是完整版…

关于一个ISE错误XST:899的错误判断的讨论

具体的错误原因与解决办法官网已经给出。这里讨论一下就一篇文章中一个错误判断的例子,这种情况官网并没有给出。 原文如下: " ERROR:Xst:899 - "file_name", line #: The logic for "net_name" does not match a known FF o…