当前位置: 首页 > news >正文

PE文件格式

Day 17: PE文件格式

本章介绍Windows可执行文件的PE(Portable Executable)格式结构。


1. PE文件结构

PE文件结构(从上到下): 1. DOS Header - MZ签名 2. DOS Stub - "This program..." 3. PE Signature - "PE\0\0" 4. File Header - 20字节 5. Optional Header - 重要信息 6. Section Headers - 节表 7. .text - 代码段 8. .data - 数据段 9. .rdata - 只读数据段 10. ... - 其他节

2. DOS Header

typedefstruct_IMAGE_DOS_HEADER{WORD e_magic;// 0x5A4D = "MZ"...LONG e_lfanew;// PE头偏移}IMAGE_DOS_HEADER;

3. PE Header

// File Headertypedefstruct_IMAGE_FILE_HEADER{WORD Machine;// 0x14c=x86, 0x8664=x64WORD NumberOfSections;DWORD TimeDateStamp;DWORD PointerToSymbolTable;DWORD NumberOfSymbols;WORD SizeOfOptionalHeader;WORD Characteristics;// 标志}IMAGE_FILE_HEADER;// Optional Header (关键!)typedefstruct_IMAGE_OPTIONAL_HEADER{WORD Magic;// 0x10B=PE32, 0x20B=PE32+...DWORD AddressOfEntryPoint;// 入口点RVADWORD BaseOfCode;DWORD ImageBase;// 基址DWORD SectionAlignment;DWORD FileAlignment;...DWORD SizeOfImage;IMAGE_DATA_DIRECTORY DataDirectory[16];}IMAGE_OPTIONAL_HEADER;

4. Section Header

typedefstruct_IMAGE_SECTION_HEADER{BYTE Name[8];// 节名 ".text"DWORD VirtualSize;// 内存大小DWORD VirtualAddress;// 内存RVADWORD SizeOfRawData;// 文件大小DWORD PointerToRawData;// 文件偏移...DWORD Characteristics;// 属性}IMAGE_SECTION_HEADER;// 常见节.text-代码(可执行).data-可写数据.rdata-只读数据.rsrc-资源.reloc-重定位

5. 重要数据目录

索引 名称 用途 0 Export 导出函数 1 Import 导入函数 5 Base Relocation 重定位 6 Debug 调试信息 12 IAT 导入地址表 14 CLR .NET元数据

6. 导入表

程序如何调用DLL函数: 1. Import Directory Table 列出所有导入的DLL 2. Import Lookup Table (ILT) 函数名/序号 3. Import Address Table (IAT) 运行时填充实际地址 call [IAT_entry] ; 间接调用

7. 地址转换

RVA = Relative Virtual Address VA = Virtual Address = ImageBase + RVA 文件偏移 = RVA - SectionRVA + SectionFileOffset

8. 小结

[结构] 1. DOS Header + Stub 2. PE Signature 3. File/Optional Header 4. Section Headers [关键字段] 5. ImageBase - 基地址 6. AddressOfEntryPoint - 入口 7. DataDirectory - 数据目录 [节] 8. .text代码, .data数据 9. 节属性决定权限

下一篇预告:Day 18 - ELF文件格式


http://www.jsqmd.com/news/377683/

相关文章:

  • 【python毕设源码分享】基于Python的媒体资源管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)
  • 【大数据毕设源码分享】基于Django+数据可视化的 Spark 的音乐数据分析(程序+文档+代码讲解+一条龙定制)
  • 【大数据毕设源码分享】基于Django+数据可视化的租房大数据可视化系统的设计与实现(程序+文档+代码讲解+一条龙定制)
  • ELF文件格式
  • 【python毕设源码分享】基于Python的采用人脸识别技术的课堂考勤管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)
  • 逆向工程入门
  • 【python毕设源码分享】基于Python的见花则喜线上花店管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)
  • 新组的电脑却无法开机,您可能漏了这个
  • 【大数据毕设源码分享】django基于机器学习的旅行产品推荐系统设计与实现(程序+文档+代码讲解+一条龙定制)
  • GCC内联汇编
  • 【python毕设源码分享】基于Web的酒店住宿管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)
  • 干货合集:10个降AIGC平台测评,专科生降AI率必备神器
  • 【python毕设源码分享】基于python的租房管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)
  • 调试技术和技巧
  • 浮点数运算
  • 【python毕设源码分享】基于Python的协同过滤算法的天气穿搭推荐系统的设计与实现(程序+文档+代码讲解+一条龙定制)
  • 赶deadline必备! 10个AI论文网站深度测评,继续教育毕业论文写作全攻略
  • YOLOv8眼睛状态检测:基于AFPNet-P345的睡意监测系统_1
  • 【python毕设源码分享】基于Flask和Vue的电商管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)
  • 打家劫舍问题的动态规划解法与性能优化笔记
  • 基于SpringBoot+协同过滤推荐算法+智能AI问答的水果线上交易平台开题报告
  • go mapstructure使用例子
  • 硬币找零问题的动态规划解法与实现思考笔记
  • TPJ系列机械式螺旋圆弹簧疲劳试验机
  • 2026年市场评价好的包装袋定制厂家选哪家,四边封包装袋/自立袋/聚酯尼龙袋/三边封拉链袋,包装袋制造厂家推荐排行 - 品牌推荐师
  • 【Python毕设全套源码+文档】基于python的媒体资源管理系统的设计与实现(丰富项目+远程调试+讲解+定制)
  • 『NAS』设置内网固定 IP
  • 教你如何识别台式电脑电源的好坏
  • 【Python毕设全套源码+文档】基于python的采用人脸识别技术的课堂考勤管理系统的设计与实现(丰富项目+远程调试+讲解+定制)
  • 面试必看:打家劫舍