PE文件结构学习笔记
2011-05-05 22:07
295 查看
pe文件结构学习笔记
一个pe文件的大致结构:
DOS头
PE头
节表
节
相关结构体:
IMAGE_DOS_HEADER
{
e_magic WORD 'MZ'
...
e_lfanew DWORD 指向PE文件头
}
IMAGE_NT_HEADER
{
'PE'
IMAGE_FILE_HEADER
{
Machine WORD 运行的硬件平台(CPU Intel386等等)
NumberOfSection WORD 文件的节数目
TimeDateStamp DWORD 创建日期
SizeOfOptionalHeader WORD 结构体大小
Characteristlics WORD 文件属性
}
IMAGE_OPTIONAL_HEADER
{
AddressOfEntryPoint 文件执行时入口地址
ImageBase 文件优先装入地址
SectionAlignment 节被装入内存后对齐单元
FileAlignment 节存储在磁盘文件中时的对齐单位
Subsystem 使用界面的子系统CUI OR GUI
DataDirectory 放16个IMAGE_DATA_DIRECTORY结构
}
}
后边是16个节表
IMAGE_DATA_DIRECTORY
{
VirtualAddress DWORD 数据起始虚拟地址 RVA
iSize DWORD 数据块长度
}
0 导出表 IMAGE_DIRECTORY_ENTRY_EXPORT
1 导入表 IMAGE_DIRECTORY_ENTRY_IMPORT
2 资源 IMAGE_DIRECTORY_ENTRY_RESOURCE
3 异常
4 安全
5 重定位表IMAGE_DIRECTORY_ENTRY_BASERELOC
6 调试信息IMAGE_DIRECTORY_ENTRY_DEBUG
7 版权信息IMAGE_DIRECTORY_ENTRY_ARCHITECTURE
8 不详
9 ThreadLocal Storage
10 不详
11 不详
12 导出函数地址IMAGE_DIRECTORY_ENTRY_IAT
13 不详
14 不详
15 未使用
Windows加载DOS, PE头, 节表部分不进行任何处理, 原封不动映射到内存, 但是加载节的时候要经过一些
处理
PE中所有节的属性被定义在节表中
节表的结构(每个节表结构体描述一个节):
IMAGE_SECTION_HEADER
{
Name1 8个字节的节名
union {
PhysicalAddress
VirtualSize 节区的尺寸
}
VirtualAddress 节区的RVA地址
SizeOfRawData 在文件中对齐后的尺寸
....
Characteristics 节的属性
}
详见 罗云彬的书
一个pe文件的大致结构:
DOS头
PE头
节表
节
相关结构体:
IMAGE_DOS_HEADER
{
e_magic WORD 'MZ'
...
e_lfanew DWORD 指向PE文件头
}
IMAGE_NT_HEADER
{
'PE'
IMAGE_FILE_HEADER
{
Machine WORD 运行的硬件平台(CPU Intel386等等)
NumberOfSection WORD 文件的节数目
TimeDateStamp DWORD 创建日期
SizeOfOptionalHeader WORD 结构体大小
Characteristlics WORD 文件属性
}
IMAGE_OPTIONAL_HEADER
{
AddressOfEntryPoint 文件执行时入口地址
ImageBase 文件优先装入地址
SectionAlignment 节被装入内存后对齐单元
FileAlignment 节存储在磁盘文件中时的对齐单位
Subsystem 使用界面的子系统CUI OR GUI
DataDirectory 放16个IMAGE_DATA_DIRECTORY结构
}
}
后边是16个节表
IMAGE_DATA_DIRECTORY
{
VirtualAddress DWORD 数据起始虚拟地址 RVA
iSize DWORD 数据块长度
}
0 导出表 IMAGE_DIRECTORY_ENTRY_EXPORT
1 导入表 IMAGE_DIRECTORY_ENTRY_IMPORT
2 资源 IMAGE_DIRECTORY_ENTRY_RESOURCE
3 异常
4 安全
5 重定位表IMAGE_DIRECTORY_ENTRY_BASERELOC
6 调试信息IMAGE_DIRECTORY_ENTRY_DEBUG
7 版权信息IMAGE_DIRECTORY_ENTRY_ARCHITECTURE
8 不详
9 ThreadLocal Storage
10 不详
11 不详
12 导出函数地址IMAGE_DIRECTORY_ENTRY_IAT
13 不详
14 不详
15 未使用
Windows加载DOS, PE头, 节表部分不进行任何处理, 原封不动映射到内存, 但是加载节的时候要经过一些
处理
PE中所有节的属性被定义在节表中
节表的结构(每个节表结构体描述一个节):
IMAGE_SECTION_HEADER
{
Name1 8个字节的节名
union {
PhysicalAddress
VirtualSize 节区的尺寸
}
VirtualAddress 节区的RVA地址
SizeOfRawData 在文件中对齐后的尺寸
....
Characteristics 节的属性
}
详见 罗云彬的书
相关文章推荐
- PE结构学习笔记--关于AddressOfEntryPoint位置在文件中怎么确定问题
- PE文件结构图解,比较牵强,仅为学习笔记,高手见笑
- PE文件结构学习笔记
- PE结构学习笔记--关于AddressOfEntryPoint位置在文件中怎么确定问题
- PE文件结构-学习笔记
- 小程序学习笔记一:基本目录结构与主目录文件详解
- UNIX环境编程学习笔记(3)——文件I/O之内核 I/O 数据结构
- 软件安全学习笔记(7):PE文件总体格式
- [PE文件结构学习]1.相对虚拟地址(RVA)与物理地址的转换
- [文件系统]文件系统学习笔记(四)---常用数据结构
- PE文件学习笔记(1)
- 图像编程学习笔记1——bmp文件结构处理与显示
- Java-J2SE学习笔记-树状展现文件结构
- 【Linux学习笔记③】linux磁盘分区、文件系统及目录结构
- 0x01 PE文件结构学习总结
- Ubutn操作系统学习笔记三之------文件系统基本结构
- JVM学习笔记(四)——类文件结构、字节码指令
- 关于PE病毒编写的学习(六)——关于PE文件结构操作的程序编写
- PE文件学习笔记(六):总结与PE解析器(PETool)实现
- (ios开发学习笔记一)ios项目文件结构