您的位置:首页 > 其它

《Windows环境下32位汇编语言程序设计(第2版)》-chapter17知识点

2016-08-02 16:45 330 查看
今天又重新回到PE文件的学习了,之前学的Win32汇编更多是的利用API函数进行桌面程序的开发,PE文件这涉及到很多底层的东西,感觉是块儿硬骨头很难啃,不过还是得学下去。今天又关注了一下安全行业的发展状况,做Windows x86平台的逆向很早就有了,现在安卓和iso逆向正旺,不知以后怎么样。自己还是先把Windows这边学一学,过些日子再研究安卓的问题,自己以前做过安卓的开发,又有x86平台逆向的基础,相信会学起来会容易一些。今天还看了些罗云彬老师书的源码,里面有很多案例都很好,文本编辑器的例子很值得学习(书中限于篇幅为完全展示所有功能)。

《Windows环境下32位汇编语言程序设计(第2版)》的第17章讲得是PE文件,就当作入门课程吧。现在把笔记贴在下面。
17
17.1.1
PE文件(Portable Executable File Format)的演变
略
pE文件的基本结构
从上之下依次是
DOS文件头
DOS块
PE文件头
节表
节1
节2
...
17.1.2
DOS文件头和DOS块(可执行代码)
为了在DOS下打开PE文件
此时会显示:This program connot be run in DOS mode
文件头
MZ格式,由IMAGE_DOS_HEADER结构定义,其中e_lfanew指出PE的文件头
17.1.3
PE文件头
PE格式,由IMAGE_NT_HEADER结构定义,其中还有两个结构
IMAGE_FILE_HEADER
WORD Machine;					//运行平台
WORD NumberOfSections;			//文件中节的数量
DWORD TimeDateStamp;			//文件创建日期和时间
DWORD PointerToSymbolTable;	//调试用
DWORD NumberOfSymbols;			//调试用
WORD SizeOfOptionalHeader;		//下面一个结构的长度
WORD Characteristics;			//文件属性
IMAGE_OPTIONAL_HEADER32
重要的几个参数
AddressOfEntryPoint	//文件执行入口地址
ImageBase			//文件优先装入地址
//exe文件不需要重定位信息,dll文件需要
SectionAlignment	//装入内存对齐单位
FileAlignment		//存储在磁盘中对齐单位
Subsystem			//界面子系统
DataDirectory		//存储了16个数据块的位置和长度,数据目录表
17.1.4
节表
紧跟着PE文件头,存储节的属性
节
被装入内存并不是完全线性的
RVA和文件偏移
RVA是装入内存后相对于PE文件起始地址的偏移,对节来说意义更大
PE文件中的地址全是RVA地址
查找静态PE文件中的资源就很麻烦
17.2
导入表
节是按照属性分的,每个节内都可能有表
节由节表定位,表由DateDirectory定位(数据目录表)
导入函数名和驻留DLL
系统根据导入表中存储的信息装入DLL
17.3
导出表
17.4
资源
17.5
重定位表
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  win32 汇编 PE文件