类型:读书笔记 知识来源:《****核心原理》第13章(下称作《逆向》) 阅读时间: 2018年1月8日 状态:未完成 注:下划线划出的为书中原话或者部分为原话。
什么是PE文件
PE文件是Windows操作系统下使用的可移植的可执行文件格式。 PE(Portable Executable) Portable:便携的(易于移植) Executable:可执行的
PE文件格式
·PE文件的种类
(表格来自《逆向》)
·PE文件的基本结构
《逆向》以记事本(32位xp系统下的notepad.exe)程序为例
(可以用Hex Editor打开记事本程序查看,我暂时还没有装xp的虚拟机,暂时不能附图片了)
下图是《逆向》书中描述notepad.exe文件加载到内存时的情形
PE头:
从DOS头(DOS header)到节区头(Section header)是PE头部分
PE体:
PE头其下的节区称作PE体
偏移和VA:
文件中使用偏移(offset),内存中使用VA(Virtual Address)来表示位置,文件加载到内存中,就会产生一些变化(节区的大小,位置等)
NULL填充:
图上灰色取余是NULL填充(NULL padding),和汇编中的nop使数据或代码对齐一样,使用了“最小基本单位”这一概念,文件/内存中的节区的起始位置应该在各文件/内存最小单位的倍数上。
VA&RVA:
VA指的是进程虚拟内存的绝对地址,RVA指从某个基准位置开始的相对地址。VA与RVA满足下面的换算关系。
RVA+ImageBase=VA
PE头内部信息大多以RVA形式存在。这种以相对的方式保存的优点,你可以在学习的过程中慢慢体会到。