PE 1 DOS头、NT头和节表
PE 文件格式简介
PE(Portable Executable)格式:这是 Windows 系统下常用的可执行文件格式。相比于 Linux 系统下的 ELF 格式,PE 格式在 Windows 平台上具有广泛应用。
结构概览
IMAGE_DOS_HEADER:文件最开始的 DOS 头(兼容16位),其中包含了一个跳转指令以及一个指向 NT 头的偏移量(
e_lfanew
)。DOS Stub:一个 DOS 程序,当在 DOS 环境下执行时显示提示信息(通常提示“此程序只能在 Windows NT/2000/XP 等系统上运行”)。
IMAGE_NT_HEADERS
:紧接 DOS Stub 后面的 NT 头,其中包含:
- Signature:魔数(通常是 “PE\0\0”)。
- IMAGE_FILE_HEADER:描述文件信息,如目标机器类型、节数量等。
- IMAGE_OPTIONAL_HEADER:描述程序加载信息(例如入口点、程序内存布局等),以及数据目录数组,用于指向如导入表、导出表、资源表等重要数据结构。
IMAGE_SECTION_HEADER:紧随 NT 头之后的节表,每个节描述一个文件内的数据区块(代码区、数据区、资源区等)。
数据部分与附加数据:文件的实际数据,以及可能存在的用户自定义数据(如加密数据、病毒代码、反调试技术等)。
代码说明与作用
IMAGE_DOS_HEADER
:DOS 头的大小,用于判断 DOS 可执行文件部分。IMAGE_NT_HEADERS32
:32位 NT 头的大小,包含文件头、选项头及数据目录等。IMAGE_SECTION_HEADER
:节表中单个节描述的大小。
为AA的部分都是与exe文件能否正常运行无关,可以随意修改,
1 |
|
运行结果
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Hexo!