PE文件学习笔记(2)
来源:互联网 发布:java jre 64位 编辑:程序博客网 时间:2024/05/01 02:19
PE 表头(PE Header)
1 PE 表头
内含的重要信息包括程序代码和资料区域的大小位置、适用的操作系统、堆栈(stack)的
最初大小等等。
2 文件最前面的数百个字节是所谓的 DOS stub ,当 Win32 加载器把一个 PE 档映像到内存,内存
映像文件(memory mapped file )的第一个字节对应到 DOS Stub 的第一个字节。
3 e_lfanew 字段是一个相对偏移值(或说是 RVA ),指向真正的 PE 表头。为了获得指
标,你必须为 RVA 加上 image 的基地址:
pNTHeader = dosHeader + dosHeader->e_lfanew;
4 PE 表头整个是个IMAGE_NT_HEADERS 结构,此一结构有一个 DWORD 和两个子结构:
DWORD Signature; // ASCII 的 PE/0/0
IMAGE_FILE_HEADER FileHeader; //此结构内含最基础的文件信息
IMAGE_OPTIONAL_HEADER OptionalHeader;
/////////////////////////////////////////////////////////////////////////////////////////////////////////
1) WORD Machine
2) WORD NumberOfSections
3) DWORD TimeDateStamp
4) DWORD PointerToSymbolTable
5) DWORD NumberOfSymbols
6) WORD SizeOfOptionalHeader
7) WORD Characteristics
上面七个部分就是IMAGE_FILE_HEADER FileHeader的结构
下面还剩下 IMAGE_OPTIONAL_HEADER OptionalHeader
其中最重要的两个字段是 ImageBase 和 Subsystem
详细如下
1) WORD Magic
2) DWORD SizeOfCode
3) DWORD SizeOfInitializedData
4) DWORD SizeOfUninitializedData
5) DWORD AddressOfEntryPoint
6) DWORD BaseOfCode
7) DWORD BaseOfData
8) DWORD ImageBase
9) DWORD SectionAlignment
10) DWORD FileAlignment
11) WORD MajorOperatingSystemVersion
12) WORD MinorOperatingSystemVersion
13) WORD MajorImageVersion
14) WORD MinorImageVersion
15) WORD MajorSubsystemVersion
16) WORD MinorSubsystemVersion
17) DWORD Reserved1
18) DWORD SizeOfImage
19) DWORD SizeOfHeaders
20) DWORD CheckSum
21) WORD Subsystem
22) WORD DllCharacteristics
23) DWORD SizeOfStackReserve
24) DWORD SizeOfStackCommit
25) DWORD SizeOfHeapReserve
26) DWORD SizeOfHeapCommit
27) DWORD LoaderFlags
28) DWORD NumberOfRvaAndSizes
29) IMAGE_DATA_DIRECTORY DataDirectory [IMAGE_NUMBEROF_DIRECTORY_ENTRIES]
- PE文件学习笔记(2)
- PE文件学习笔记
- PE文件学习笔记
- 【学习笔记2】hook,PE文件
- PE文件学习笔记(1)
- PE文件学习笔记(3)
- PE文件结构学习笔记
- PE文件结构学习笔记
- PE学习笔记2
- (未完待续)Windows PE 文件加壳学习笔记
- PE文件学习笔记(二):Section Table解析
- PE文件学习笔记(六):总结与PE解析器(PETool)实现
- PE文件学习笔记(一):DOS头与PE头解析
- PE文件结构-学习笔记
- PE学习笔记(一)
- PE学习笔记(二)
- PE学习笔记(一)
- PE学习笔记(二)
- abstract和interface的区别
- 2009年终总结
- CUDA面内存用法总结
- broncho a1 hack指南-准备环境
- 把中英文混合的字符串转换成AscII
- PE文件学习笔记(2)
- 几个VC宏定义
- 不经意的发现http form非主流用法
- 平抛运动
- 基于J2EE架构的项目开发团队中的角色与职责
- 【EF英孚教育】报道事故实用英文 12月30日
- vim命令整理
- 《监控》新派惊悚职场小说
- 面向过程和面向对象的编程