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

Windows PE文件内未用空间学习

    未用空间,是指编译好的PE文件,整个可执行文件内,有一些空间是本exe没有用到的。有几种情况;
一种是未用的字段,PE格式定义了各种结构体,其中一些结构体的一些字段,是保留的,或者是赋什么值都不影响;
一种是大小不固定的数据块;还不太理解这种;
一种是操作系统对PE文件的强制对齐,为对齐而补足的0;
在未用空间插入一些构造好的代码,可以实现对程序打补丁的功能,或者制作病毒。对于打补丁来说,这就是可利用空间。

1 未用的字段

    根据资料,PE文件的DOS头,除了e_magic和e_lfanew字段,有54字节的未用空间。
看一下为什么会有这54字节;
DOS头定义如下,

//大小为: 0x40(64)字节#define IMAGE_DOS_SIGNATURE                 0x5A4D      // MZtypedef struct _IMAGE_DOS_HEADER {      // DOS .EXE headerWORD   e_magic;                     // MZ标记 0x5a4dWORD   e_cblp;                      // 最后(部分)页中的字节数WORD   e_cp;                        // 文件中的全部和部分页数WORD   e_crlc;                      // 重定位表中的指针数WORD   e_cparhdr;                   // 头部尺寸以段落为单位WORD   e_minalloc;                  // 所需的最小附加段WORD   e_maxalloc;                  // 所需的最大附加段WORD   e_ss;                        // 初始的SS值(相对偏移量)WORD   e_sp;                        // 初始的SP值WORD   e_csum;                      // 补码校验值WORD   e_ip;                        // 初始的IP值WORD   e_cs;                        // 初始的SS值WORD   e_lfarlc;                    // 重定位表的字节偏移量WORD   e_ovno;                      // 覆盖号WORD   e_res[4];                    // 保留字WORD   e_oemid;                     // OEM标识符(相对m_oeminfo)WORD   e_oeminfo;                   // OEM信息WORD   e_res2[10];                  // 保留字LONG   e_lfanew;                    // NT头(PE标记)相对于文件的偏移地址} IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER;

e_magic是可执行文件标记,e_lfanew字段是用来找NT头的,这两个必须有,其他都是没用到的。

拿工具观察一下,

只有Signature和Offset to Nex EXE Header是有用的;有54个字节不在意放什么; 

其他还有,
标准PE头有12个字节的未用空间;
扩展PE头有 14+8+8+2+4+4 字节的未用空间;

有时间继续;

http://www.xdnf.cn/news/15956.html

相关文章:

  • DNS应用层协议
  • Linux驱动-中断-共享队列
  • 两个android,一个客户端一个服务器端
  • 2025.7.22 测试 总结
  • Web服务器(Tomcat、项目部署)
  • C# 中的装箱与拆箱
  • 今日行情明日机会——20250722
  • 基于AutoJawSegment项目的CBCT图像分割实践指南
  • 【bug】Yolo11在使用tensorrt推理numpy报错
  • Java 中 String 类的常用方法
  • OneCode 3.0 @TreeAnnotation及@ChildTreeAnnotation子树注解速查手册
  • 生存分析机器学习问题
  • 数据交换---JSON格式
  • IDEA-通过IDEA导入第三方的依赖包
  • Android常用的adb和logcat命令
  • Qt/C++源码/监控设备模拟器/支持onvif和gb28181/多路批量模拟/虚拟监控摄像头
  • RedisJSON 指令精讲JSON.TOGGLE 键翻转布尔值
  • Python趣味算法:实现任意进制转换算法原理+源码
  • 【无标题】buuctf-re3
  • 企业级IIS配置手册:安全加固/负载均衡/性能优化最佳实践
  • PyQt5—QLabel 学习笔记
  • 常用 Flutter 命令大全:从开发到发布全流程总结
  • ELF 文件操作手册
  • Java 动态导出 Word 登记表:多人员、分页、动态表格的最佳实践
  • C++11--锁分析
  • ospf技术
  • 【SpringAI实战】实现仿DeepSeek页面对话机器人
  • Jiasou TideFlow AIGC SEO Agent:全自动外链构建技术重构智能营销新标准
  • 技术与情感交织的一生 (十)
  • Spring处理器和Bean的生命周期