感觉这博客写起来和抄书差不多。。。
概述
PE文件的全称是Portable Executable File Format(可移植文件),比较常见的PE文件有DLL exe文件等。
一些基本概念
-
基地址(Image Base)当PE文件通过Windows加载器被载入内存后,内存中的版本被称作模块(Module)。映射文件的起始地址被称作模块句柄(hMoudule),可以通过模块句柄访问其他的数据结构。这个初始内存地址就是基地址。默认情况下,exe文件在内存中的基地址时0x00400000, DLL文件是0x10000000,这些位置可以通过修改编译选项更改。
-
虚拟内存地址(Virtual Address)PE文件中的指令被载入内存后的地址
-
相对虚拟内存地址(Reverse Virtual Address)即内存地址相对于映射基址的偏移量。例如:一个exe文件从地址40000h处载入,并且它的代码区块开始于41000h ,代码区的RVA将是1000h
-
文件偏移地址(File Offset Address)当PE文件存储在磁盘上时,某个数据的位置相对于文件头的偏移量称为文件偏移地址(或者叫物理地址,RAW Offset)