《Windows环境下32位汇编语言程序设计(第2版)》-chapter17知识点
2016-08-02 16:45
330 查看
今天又重新回到PE文件的学习了,之前学的Win32汇编更多是的利用API函数进行桌面程序的开发,PE文件这涉及到很多底层的东西,感觉是块儿硬骨头很难啃,不过还是得学下去。今天又关注了一下安全行业的发展状况,做Windows x86平台的逆向很早就有了,现在安卓和iso逆向正旺,不知以后怎么样。自己还是先把Windows这边学一学,过些日子再研究安卓的问题,自己以前做过安卓的开发,又有x86平台逆向的基础,相信会学起来会容易一些。今天还看了些罗云彬老师书的源码,里面有很多案例都很好,文本编辑器的例子很值得学习(书中限于篇幅为完全展示所有功能)。
《Windows环境下32位汇编语言程序设计(第2版)》的第17章讲得是PE文件,就当作入门课程吧。现在把笔记贴在下面。
《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 重定位表
相关文章推荐
- 数据结构(c++版)(第2版)第一章:绪论的知识点总结图,制作者:信管1134-28
- 《Javascript DOM编程艺术》第2版 知识点汇总
- 数据结构(c++版)(第2版)第一章:绪论的知识点总结图,制作者:物联1131-22
- 《Windows环境下32位汇编语言程序设计(第2版)》-chapter4-9部分知识点
- 【读书笔记】《框架设计(第2版)CLR Via C#》中两个比较有趣的知识点(转)(good)
- 数据结构(c++版)(第2版)第一章:绪论的知识点总结图,制作者:物联网1131-18 .
- 【读书笔记】《框架设计(第2版)CLR Via C#》中两个比较有趣的知识点
- 【读书笔记】《框架设计(第2版)CLR Via C#》中两个比较有趣的知识点(转)(good)
- 知识点必记
- C#—代码理解知识点(二)
- js知识点 归纳
- Angular2文档学习的知识点摘要——Angular模块(NgModule)
- Android Java小知识点集锦
- JSF知识点概览
- [多线程]thread,threadpool,task及TPL知识点整理
- 零碎知识点随意记录
- --wps知识点--不断总结
- T-SQL 知识点
- C/C++知识点记录
- 3.关于QT中的MainWindow窗口,MenuBar,ToolBar,QuickTip等方面的知识点