![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
PE
jiangqin115
这个作者很懒,什么都没留下…
展开
-
PE文件结构简介
PE结构总览图MZ头部又称为DOS头部,该部分用于在DOS下加载可执行程序,是用IMAGE_DOS_HEADER来定义的。DOS残留是一段简单的程序,主要用于输出“This program cannot be run in DOS mode.”类似的字符串。存在DOS头部的原因,关键是为了该可执行程序可以兼容DOS系统。PE头部PE头部保存W原创 2017-09-13 15:28:23 · 266 阅读 · 0 评论 -
PE文件之IMAGE_OPTIONAL_HEADER
可选头位于IMAGE_NT_HEADERS内,紧接与IMAGE_FILE_HEADER之后,可选头的大小由文件头中倒数第二个成员指定。可选头中重要的数据成员有:第一个成员WORD Magic,这个对于32位可执行文件来说为0x010B。DWORD AddressOfEntryPoint,这个成员是程序执行的入口RVA地址。ImageBase为建议的装载地址。对于可执行文件来说一般是0x004000...原创 2018-03-30 14:18:11 · 704 阅读 · 0 评论 -
PE文件之IMAGE_FILE_HEADER
IMAGE_NT_HEADERS的第一个成员是一个DWORD类型的PE签名,第二个成员就是IMAGE_FILE_HEADER了。IMAGE_FILE_HEADER的大小为20字节。第一个成员为WORD类型的Machine,这个通常为0x014C(intel 386系列CPU);第二个成员为WORD类型的NumberOfSections,即文件中节的数量,这个对应的文件具体的节区数量。第三个成员为D...原创 2018-03-30 14:17:44 · 2227 阅读 · 0 评论 -
PE文件之IMAGE_NT_HEADERS
继续看PE文件格式:IMAGE_NT_HEADERS紧接在DOS Stub之后,其位置由IMAGE_DOS_HEADER中的e_lfanew所指;IMAGE_NT_HEADERS由三部分组成,他们分别是DWORD类型的PE签名Signature;IMAGE_FILE_HEADER类型的FileHeader;以及IMAGE_OPTIONAL_HEADER32类型的OptionalHeader。IMA...原创 2018-03-30 14:17:14 · 1516 阅读 · 0 评论 -
PE文件之IMAGE_DOS_HEADER
Windows系统下的可执行文件,是基于Microsoft设计的一种新的文件结构,此结构被称之为PE结构。PE的意思是Portable Executable(可移植的执行体),所有Win32执行体都是用PE文件格式,其中包括SYS、DLL、EXE、COM、OCX等。不管是学习逆向、破解还是安全,了解PE文件格式都是非常必要的。PE文件的第一个部分是IMAGE_DOS_HEADER,大小为64B,这...原创 2018-03-30 14:16:12 · 1124 阅读 · 0 评论 -
PE文件学习笔记(五):导入表、IAT、绑定导入表解析
1、导入表(Import Descriptor)结构解析:导入表是记录PE文件中用到的动态连接库的集合,一个dll库在导入表中占用一个元素信息的位置,这个元素描述了该导入dll的具体信息。如dll的最新修改时间、dll中函数的名字/序号、dll加载后的函数地址等。而一个元素即一个结构体,一个导入表即该结构体的数组,其结构体如下所示:typedef struct _IMAGE_IMPORT_DESC...原创 2018-03-30 12:00:49 · 1284 阅读 · 0 评论 -
win32 PE 文件格式
一个操作系统的可执行文件格式在很多方面是这个系统的一面镜子。虽然学习一个可执行文件格式通常不是一个程序员的首要任务,但是你可以从这其中学到大量的知识。在这篇文章中,我会给出 MicroSoft 的所有基于 win32系统(如winnt,win9x)的可移植可执行(PE)文件格式的详细介绍。在可预知的未来,包括 Windows2000 , PE 文件格式在 MicroSoft 的操作系统中扮演一个重原创 2017-11-24 14:11:47 · 2088 阅读 · 0 评论 -
PE 文件结构分析
一:PE整体结构PE 的意思就是Portable Executable(可移植的执行体)。PE文件的整体大概结构描述:struct pe{DOS MZ header:所有PE文件(甚至32位的DLLs) 必须以一个简单的DOS MZ header 开始。有了它,一旦程序在DOS下执行,DOS就能识别出这是有效的执行体,然后运行紧随MZ header原创 2017-11-24 14:10:34 · 2232 阅读 · 0 评论 -
PE文件结构详解(四)PE导入表
PE文件结构详解(二)可执行文件头的最后展示了一个数组,PE文件结构详解(三)PE导出表中解释了其中第一项的格式,本篇文章来揭示这个数组中的第二项:IMAGE_DIRECTORY_ENTRY_IMPORT,即导入表。也许大家注意到过,在IMAGE_DATA_DIRECTORY中,有几项的名字都和导入表有关系,其中包括:IMAGE_DIRECTORY_ENTRY_IMPORT,IMAGE_D原创 2017-11-24 14:07:21 · 1900 阅读 · 0 评论 -
PE文件结构详解(三)PE导出表
上篇文章 PE文件结构详解(二)可执行文件头 的结尾出现了一个大数组,这个数组中的每一项都是一个特定的结构,通过函数获取数组中的项可以用RtlImageDirectoryEntryToData函数,DataDirectory中的每一项都可以用这个函数获取,函数原型如下:PVOID NTAPI RtlImageDirectoryEntryToData(PVOID Base, BOOLEAN原创 2017-11-24 14:06:35 · 1791 阅读 · 0 评论 -
PE文件结构详解(二)可执行文件头
在PE文件结构详解(一)基本概念里,解释了一些PE文件的一些基本概念,从这篇开始,将详细讲解PE文件中的重要结构。了解一个文件的格式,最应该首先了解的就是这个文件的文件头的含义,因为几乎所有的文件格式,重要的信息都包含在头部,顺着头部的信息,可以引导系统解析整个文件。所以,我们先来认识一下PE文件的头部格式。还记得上篇里的那个图吗?DOS头和NT头就是PE文件中两个重要原创 2017-11-24 14:05:35 · 1948 阅读 · 0 评论 -
PE文件结构详解(一)基本概念
PE(Portable Execute)文件是Windows下可执行文件的总称,常见的有DLL,EXE,OCX,SYS等,事实上,一个文件是否是PE文件与其扩展名无关,PE文件可以是任何扩展名。那Windows是怎么区分可执行文件和非可执行文件的呢?我们调用LoadLibrary传递了一个文件名,系统是如何判断这个文件是一个合法的动态库呢?这就涉及到PE文件结构了。PE文件的结构一般来说如原创 2017-11-24 14:04:13 · 1778 阅读 · 0 评论 -
关于内存加载DLL后修复重定位的问题
看网上的代码好累,摸索整理了一下,顺便巩固下PE首先介绍下PE头,分为2个部分1、DOS头 (IMAGE_DOS_HEADER)[cpp] view plain copy print?typedef struct _IMAGE_DOS_HEADER { // DOS .EXE header WORD原创 2017-09-13 16:08:48 · 1576 阅读 · 1 评论 -
DOS头部IMAGE_DOS_HEADER
对于一个PE文件来说,最开始的位置就是一个DOS程序。DOS程序包含一个DOS头和一个DOS程序体。DOS头部是由IMAGE_DOS_HEADER结构体来定义的。该结构体定义如下:[cpp] view plain copytypedef struct _IMAE_DOS_HEADER { //DOS .EXE he原创 2017-09-13 15:32:01 · 2935 阅读 · 0 评论 -
【C++源码】PE文件结构中导出表的解析
#include<iostream> #include<fstream> #include<Windows.h> #include<cstring> #include"RVAToFOA.h" using namespace std; //函数声明 unsigned int GetFunctionAddressByName(...原创 2018-03-29 14:54:43 · 714 阅读 · 0 评论