没有合适的资源?快使用搜索试试~ 我知道了~
首页PE文件结构分析(包括DOS头、节表的详解+最小化压缩/修改PE文件思路实现讲解)
PE文件结构分析(包括DOS头、节表的详解+最小化压缩/修改PE文件思路实现讲解)

目录 一、 PE文件总述 2 1、PE文件和COM文件 2 2、PE文件基本结构 2 二、 DOS头 3 三、 PE文件头 4 1、PE标识 4 2、映像文件头IMAGE_FILE_HEADER 4 3、可选映像头文件 5 四、 节表和节 8 1、节表 8 2、RVA和FOA 9 3、节 9 五、 修改思路 14 1、基本 14 2、进阶 14 六、 实现 15 1、修改后文件 15 1、查找序列号的错误打开方式和正确打开方式 16
资源详情
资源评论
资源推荐

PE 文件
目录
一、 文件总述
、 文件和 文件
、 文件基本结构
二、 头
三、 文件头
、 标识
、映像文件头
、可选映像头文件
四、 节表和节
、节表
、 和
、节
五、 修改思路
、基本
、进阶
六、 实现
、修改后文件
、查找序列号的错误打开方式和正确打开方式

一、 PE 文件总述
!" #$ !% !&,可移植的执行体文件格式',(%)*+,
操作系统中可执行程序有好多种,比如 、、、- 等,这些文件的
格式大部分都继承自 。
1、PE 文件和 COM 文件
文件:在 时代是最早的、结构最简单的可执行文件,仅包含可执
行代码,没有附带任何“支持性”数据。所以,第一句执行指令必须安排在文件
头部。再就是没有重定位的信息,这样代码中不能有跨段操作数据的指令,造
成代码和数据,甚至包括堆栈只能限制在同一个 ./ 的段中。
- 文件:在代码的前面加了一个文件头,文件头中包括各种说明数据,
如文件入口,堆栈位置,重定位表等,操作系统根据文件头的信息将代码部分
装入内存,根据重定位表修正代码,最后在设置好堆栈后从文件头中指定的入
口开始执行。

2、PE 文件基本结构
分为 部分、!01 头( 文件头)、节表、节数据

二、 DOS 头
头即 ,具体定义如下:
!121!
34!(! &5%#!!66!5%#!!,%5)$ !77'!!! 可执行文件标记不可改
34!!(! #8!!!66!/9 ,!)!,!85 !:!; !!
34!(! #8!!!66!5 ,!%)!;
34!(! ##!!!66! #<),
3=4!(! #84*!!!66!%> !:!4 * !%)!8584,
34!(! &%)#!!!66!%)%&$)! "!8584,!) *,
3#4!(! &"#!!66!"%&$)! "!8584,!) *,
3 4!(! ,,!!!66!%)< <? '!?$ !!! 代码的初始化堆栈 !
34!(! ,8!!!66!%)<!!?$ !!! 代码的初始化堆栈指针 !
34!(! #,$&!!!66!4 #@,$&!
34!(! %8!!!66!!%)<!!?$ !!! 代码的初始化指令入口A指针 B!
34!(! #,!!!66!%)< <? '!?$ !!! 代码的初始堆栈入口
3=4!(! :#!!!66!% !** ,,!:! #<)! !
34!(! ?)!!66!!? 9!)$& !
3#4!(! ,AB!!66! , ? *!+*,!
34!(! &%*!!!66!!!%* )<; :! &%):'!
34!(! &%):!!66!!!%):&<)C &%*!,8 #%;#!!
3D4!(! ,AB!!66!! , ? *!+*,!
3#4!0!! :) +!!66!E, !!,!:!!4 * !!!指向 文件头实际情况(
字母的开始)

!0
() 其中第一个字段( 字节)为字符 7,识别标志,如果没有则表明不是
文件。
() 最后 字节的 :) + 字段,指出了真正的 文件头在文件中的位置。
三、 PE 文件头
文件头是由 01 结构定义的,分 部分( 标识、映像
文件头、可选映像文件头):
01!121!
34!(!%5)$ !!!!!!!!!!!!!!!!!!!! 文件标识不可改
34!!!!!% *
3=4!10!8<) * !!
01!0
1、PE 标识
开始的 字节为标识,为字符 ,如果不是 则表明不是 文件。
2、映像文件头 IMAGE_FILE_HEADER
!121
34!!!!(!!!!!!!!!!#4%) C!!!66!运行平台不必改
剩余23页未读,继续阅读
















安全验证
文档复制为VIP权益,开通VIP直接复制

评论1