[re入门]PE文件结构(上)

简介: [re入门]PE文件结构

PE文件结构分析

image.png

基本概念

  • 认识PE文件
    PE文件的全称是Portable Executable,意为可移植的可执行的文件,常见的EXE、DLL、OCX、SYS、COM都是PE文件,PE文件是微软Windows操作系统上的程序文件(可能是间接被执行,如DLL)。


EXE和DLL文件之间的区别完全是语义上的,他们使用完全相同的PE格式。唯一的区别就是用一个字段标识出这个文件是EXE还是DLL。还有许多DLL的扩展,如OCX控件和控制面板程序(.CPL文件)等都是DLL,它们有一样的实体。

64位的Windows只是对PE格式做了一些简单的修饰,新格式叫PE32+。没有新的结构加进去,其余的改变只是简单地将以前的32位字段扩展成64位。对于C++代码,Windows文件头的配置使其拥有不明显的区别。

整体结构

PE结构一般来说:从起始位置开始依次是DOS头、NT头、节表以及具体的节。

基地址

程序加载进内存的起始地址。

当PE文件通过Windows加载器被装入内存后,内存中的版本被称作模块(Module)。映射文件的起始地址被称为模块句柄(hModule),可以通过模块句柄访问内存中其他的数据结构。这个初始内存地址也称为基地址(ImageBase)。我们可以通过Pchunter工具查看程序基地址。

相对虚拟地址

又称作RVA,它是一个“相对”地址,或称为“偏移量”。存中的一个简单的相对于PE文件装入地址的偏移位置。顺便说一下,在PE用语里,实际的内存地址被称作虚拟地址(Virtual Address,简称VA),另外也可以把虚拟地址想象为加上首选装入地址的RVA。不要忘了前面提到的装入地址等同于模块句柄。它们之间的关系如下:

虚拟地址(VA)=基地址(ImageBase)+相对虚拟地址(RVA)

1.png

1.png

相关文章
|
4月前
|
存储 Windows
9.2 Windows驱动开发:内核解析PE结构导出表
在笔者的上一篇文章`《内核特征码扫描PE代码段》`中`LyShark`带大家通过封装好的`LySharkToolsUtilKernelBase`函数实现了动态获取内核模块基址,并通过`ntimage.h`头文件中提供的系列函数解析了指定内核模块的`PE节表`参数,本章将继续延申这个话题,实现对PE文件导出表的解析任务,导出表无法动态获取,解析导出表则必须读入内核模块到内存才可继续解析,所以我们需要分两步走,首先读入内核磁盘文件到内存,然后再通过`ntimage.h`中的系列函数解析即可。
35 0
9.2 Windows驱动开发:内核解析PE结构导出表
|
6月前
|
存储 安全 数据管理
[读书][笔记]WINDOWS PE权威指南《三》PE的原理和基础 之 第三章 PE文件头(上)
[读书][笔记]WINDOWS PE权威指南《三》PE的原理和基础 之 第三章 PE文件头
|
6月前
|
程序员 Windows
[读书][笔记]WINDOWS PE权威指南《三》PE的原理和基础 之 第三章 PE文件头(中)
[读书][笔记]WINDOWS PE权威指南《三》PE的原理和基础 之 第三章 PE文件头(中)
|
6月前
|
C++ Windows
[读书][笔记]WINDOWS PE权威指南《三》PE的原理和基础 之 第三章 PE文件头(下)
[读书][笔记]WINDOWS PE权威指南《三》PE的原理和基础 之 第三章 PE文件头(下)
|
6月前
|
安全 数据安全/隐私保护 Windows
[读书][笔记]WINDOWS PE权威指南《零》PE基础
[读书][笔记]WINDOWS PE权威指南《零》PE基础
|
8月前
|
安全 API Python
21.1 使用PEfile分析PE文件
PeFile模块是`Python`中一个强大的便携式第三方`PE`格式分析工具,用于解析和处理`Windows`可执行文件。该模块提供了一系列的API接口,使得用户可以通过`Python`脚本来读取和分析PE文件的结构,包括文件头、节表、导入表、导出表、资源表、重定位表等等。此外,PEfile模块还可以帮助用户进行一些恶意代码分析,比如提取样本中的字符串、获取函数列表、重构导入表、反混淆等等。PEfile模块是Python中处理PE文件的重要工具之一,广泛应用于二进制分析、安全研究和软件逆向工程等领域。
143 0
|
Linux Windows
PE格式:实现ELF结构解析工具
ELF文件格式,是一个开放的可执行文件和链接文件格式,其主要工作在Linux系统上,是一种用于二进制文件、可执行文件、目标代码、共享库和核心转储格式文件,ELF文件格式类似于PE格式,但比起PE结构来ELF结构显得更加的简单,Linux文件结构相比于Windows结构来说简单一些.
193 0
|
11月前
|
存储 Windows
驱动开发:内核解析PE结构导出表
在笔者的上一篇文章`《驱动开发:内核特征码扫描PE代码段》`中`LyShark`带大家通过封装好的`LySharkToolsUtilKernelBase`函数实现了动态获取内核模块基址,并通过`ntimage.h`头文件中提供的系列函数解析了指定内核模块的`PE节表`参数,本章将继续延申这个话题,实现对PE文件导出表的解析任务,导出表无法动态获取,解析导出表则必须读入内核模块到内存才可继续解析,所以我们需要分两步走,首先读入内核磁盘文件到内存,然后再通过`ntimage.h`中的系列函数解析即可。
214 0
|
存储 Unix 程序员
PE文件格式
PE文件基本内容
126 0
PE文件格式
|
存储 安全 编译器
PE格式:手写PE结构解析工具
PE格式是 Windows下最常用的可执行文件格式,理解PE文件格式不仅可以了解操作系统的加载流程,还可以更好的理解操作系统对进程和内存相关的管理知识,而有些技术必须建立在了解PE文件格式的基础上,如文件加密与解密,病毒分析,外挂技术等,在PE文件中我们最需要关注,PE结构,导入表,导出表,重定位表,下面将具体介绍PE的关键结构,并使用C语言编程获取到这些结构数据.
631 0
PE格式:手写PE结构解析工具