0x01 前言

上一篇讲到了数据目录表的结构和怎找到到数据目录表(DataDirectory[16]),这篇我们我来讲讲数据目录表后面的另一个结构——区块表。

0x01 区块

区块就是PE载入器将PE文件载入后,将PE文件分割成若干块,每块包含不同的信息,由读写数据块.data,代码块.code,只读数据块.rdata等等,一般至少得有读写数据块和代码块。区块的的划分信息保存在一张名为区块表(IMAGE_SECTION_HEADER)的结构中。区块表紧邻着PE文件头IMAGE_NT_HEAER。它的结构如下:

typedef struct _IMAGE_SECTION_HEADER

{

BYTE Name[IMAGE_SIZEOF_SHORT_NAME];     // 节表名称,如“.text”

//IMAGE_SIZEOF_SHORT_NAME=8

union
         {

DWORD PhysicalAddress;        // 物理地址

DWORD VirtualSize;                // 真实长度,这两个值是一个联合结构,可以使用其中的任何一个,一

// 般是取后一个

} Misc;

DWORD VirtualAddress;              // 节区的 RVA 地址

DWORD SizeOfRawData;            // 在文件中对齐后的尺寸

DWORD PointerToRawData;        // 在文件中的偏移量

DWORD PointerToRelocations;     // 在OBJ文件中使用,重定位的偏移

DWORD PointerToLinenumbers;   // 行号表的偏移(供调试使用地)

WORD NumberOfRelocations;      // 在OBJ文件中使用,重定位项数目

WORD NumberOfLinenumbers;    // 行号表中行号的数目

DWORD Characteristics;              // 节属性如可读,可写,可执行等} IMAGE_SECTION_HEADER, *PIMAGE_SECTION_HEADER;

大小位40字节。由于它紧邻PE文件头,而PE文件头的中的Data[16]中的最后一个保留双字开头为100h+F0h=1F0h故区块表的开始位为1F0h+8h=1f8h,共占四十个字节,如下图:

由上图我们可读出很多重要信息,前八个字节可以知道这是个.code块,后面四个字节为00001000h这个是VirtualSize字段即Vsize,再后面四个字节是00001000h这个是VirtualAddress,即RAV字段,这个字段很有用,后面将会讲到。再后面是00000200h,标识的是SizeOfRawData字段,这个字段也很有用。再后面的几个字段就不再介绍了,其实用的也不多,用到了可以再进行分析。上图可知Code区段后面就是DATA区段了,分析方法和CODE字段一样,这里就不再做介绍了。

对于上述的分析其实我们也可以通过工具来完成,我们今天来使用另一个强大的工具PEID,这个工具对于脱壳来说很有用。我们打开PEID.exe。直接把文件拖到PEID窗口即可,点击EP段:边上的按钮即可查看刚刚分析的内容。如下图:

显然我们的分析是正确的。注意这里写的V偏移即为RAV,V大小即为Vsize,R大小即为SizeOfRawData,至于R偏移后面会介绍。

转载于:https://www.cnblogs.com/2f28/p/9817371.html

PE文件结构详解(三)相关推荐

  1. PE文件结构详解 --(完整版)

    From:https://blog.csdn.net/adam001521/article/details/84658708 PE结构详解:https://www.cnblogs.com/zheh/p ...

  2. PE文件结构详解(三)PE导出表

    上篇文章 PE文件结构详解(二)可执行文件头 的结尾出现了一个大数组,这个数组中的每一项都是一个特定的结构,通过函数获取数组中的项可以用RtlImageDirectoryEntryToData函数,D ...

  3. PE文件结构详解(六)重定位

    前面两篇 PE文件结构详解(四)PE导入表 和 PE文件结构详解(五)延迟导入表 介绍了PE文件中比较常用的两种导入方式,不知道大家有没有注意到,在调用导入函数时系统生成的代码是像下面这样的: 在这里 ...

  4. PE文件结构详解(四)PE导入表

    PE文件结构详解(二)可执行文件头的最后展示了一个数组,PE文件结构详解(三)PE导出表中解释了其中第一项的格式,本篇文章来揭示这个数组中的第二项:IMAGE_DIRECTORY_ENTRY_IMPO ...

  5. 【转】PE文件结构详解--(完整版)

    (一)基本概念 PE(Portable Execute)文件是Windows下可执行文件的总称,常见的有DLL,EXE,OCX,SYS等,事实上,一个文件是否是PE文件与其扩展名无关,PE文件可以是任 ...

  6. PE文件结构详解(一)基本概念

    (一)基本概念 PE(Portable Execute)文件是Windows下可执行文件的总称,常见的有DLL,EXE,OCX,SYS等,事实上,一个文件是否是PE文件与其扩展名无关,PE文件可以是任 ...

  7. PE文件结构详解(五)延迟导入表

    by evil.eagle 转载请注明出处. http://blog.csdn.net/evileagle/article/details/12718845 PE文件结构详解(四)PE导入表讲了一般的 ...

  8. PE文件结构详解(二)可执行文件头

    by evil.eagle 转载请注明出处. http://blog.csdn.net/evileagle/article/details/11903197 在PE文件结构详解(一)基本概念里,解释了 ...

  9. PE文件详解(教程1-7)

    PE文件详解(教程1-7) ========================================= PE教程1: PE文件格式一览 PE 的意思就是 Portable Executable ...

最新文章

  1. 刚刚,2021年诺贝尔生理学或医学奖揭晓!
  2. Xamarin.Android 使用 SQLite 出现 Index -1 requested, with a size of 10 异常
  3. iOS 自定义Cell按钮的点击代理事件
  4. 本地构建和自动化构建_如何构建最强大,最安全的家庭自动化系统
  5. 求字符串全排列的递归算法
  6. java 文件名空格,java关于文件名带有空格的个人见解
  7. 正则表达式学习笔记004--连字符和范围描述符的认识与应用
  8. Android NDK开发从0到1
  9. 在计算机上格式u盘启动,U盘制作dos启动盘几种简单方法
  10. 数学建模国赛拿奖关键tips,错过这7条可能与国奖无缘!
  11. ISO14443A读卡流程(作为示例参考)
  12. 向全国推荐优秀古籍整理图书活动入选书目公示(zz)
  13. 回归分析中,证明:总离差平方和=回归平方和+误差平方和。
  14. 关于如何保持图片分辨率并压缩图片存储大小
  15. 艾永亮:从小公司到行业龙头,一路披荆斩棘,最后输给了电商
  16. seaborn画分组箱线图
  17. antd 表格树如何展开_antd design tree 怎样实现 :展开折叠全部树节点
  18. CMWAP和CMNET 的区别与适用范围
  19. 万亿市值家电巨头“齐聚”汽车赛道,美的“寻求”兼并收购
  20. 偶数个数字,甲乙轮流取,甲先手,问能否判断甲取得数字之和不小于乙

热门文章

  1. Java substring使用时有哪些注意事项?
  2. 2022-2028年中国金属制品行业投资分析及前景预测报告
  3. 回顾 2018,展望 2019
  4. 三层交换机原理:02怎么用三层交换机?
  5. win10安装虚拟机提示主IP地址显示网络信息不可用
  6. 关于使用sklearn进行数据预处理 —— 归一化/标准化/正则化
  7. centos7系统中忘记了root管理员账号密码的解决方式
  8. LLVM一些编程语法语义特性
  9. TVM 各个模块总体架构
  10. python可视化来分析全国疫情