PE文件结构详解(三)
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文件结构详解(三)相关推荐
- PE文件结构详解 --(完整版)
From:https://blog.csdn.net/adam001521/article/details/84658708 PE结构详解:https://www.cnblogs.com/zheh/p ...
- PE文件结构详解(三)PE导出表
上篇文章 PE文件结构详解(二)可执行文件头 的结尾出现了一个大数组,这个数组中的每一项都是一个特定的结构,通过函数获取数组中的项可以用RtlImageDirectoryEntryToData函数,D ...
- PE文件结构详解(六)重定位
前面两篇 PE文件结构详解(四)PE导入表 和 PE文件结构详解(五)延迟导入表 介绍了PE文件中比较常用的两种导入方式,不知道大家有没有注意到,在调用导入函数时系统生成的代码是像下面这样的: 在这里 ...
- PE文件结构详解(四)PE导入表
PE文件结构详解(二)可执行文件头的最后展示了一个数组,PE文件结构详解(三)PE导出表中解释了其中第一项的格式,本篇文章来揭示这个数组中的第二项:IMAGE_DIRECTORY_ENTRY_IMPO ...
- 【转】PE文件结构详解--(完整版)
(一)基本概念 PE(Portable Execute)文件是Windows下可执行文件的总称,常见的有DLL,EXE,OCX,SYS等,事实上,一个文件是否是PE文件与其扩展名无关,PE文件可以是任 ...
- PE文件结构详解(一)基本概念
(一)基本概念 PE(Portable Execute)文件是Windows下可执行文件的总称,常见的有DLL,EXE,OCX,SYS等,事实上,一个文件是否是PE文件与其扩展名无关,PE文件可以是任 ...
- PE文件结构详解(五)延迟导入表
by evil.eagle 转载请注明出处. http://blog.csdn.net/evileagle/article/details/12718845 PE文件结构详解(四)PE导入表讲了一般的 ...
- PE文件结构详解(二)可执行文件头
by evil.eagle 转载请注明出处. http://blog.csdn.net/evileagle/article/details/11903197 在PE文件结构详解(一)基本概念里,解释了 ...
- PE文件详解(教程1-7)
PE文件详解(教程1-7) ========================================= PE教程1: PE文件格式一览 PE 的意思就是 Portable Executable ...
最新文章
- 刚刚,2021年诺贝尔生理学或医学奖揭晓!
- Xamarin.Android 使用 SQLite 出现 Index -1 requested, with a size of 10 异常
- iOS 自定义Cell按钮的点击代理事件
- 本地构建和自动化构建_如何构建最强大,最安全的家庭自动化系统
- 求字符串全排列的递归算法
- java 文件名空格,java关于文件名带有空格的个人见解
- 正则表达式学习笔记004--连字符和范围描述符的认识与应用
- Android NDK开发从0到1
- 在计算机上格式u盘启动,U盘制作dos启动盘几种简单方法
- 数学建模国赛拿奖关键tips,错过这7条可能与国奖无缘!
- ISO14443A读卡流程(作为示例参考)
- 向全国推荐优秀古籍整理图书活动入选书目公示(zz)
- 回归分析中,证明:总离差平方和=回归平方和+误差平方和。
- 关于如何保持图片分辨率并压缩图片存储大小
- 艾永亮:从小公司到行业龙头,一路披荆斩棘,最后输给了电商
- seaborn画分组箱线图
- antd 表格树如何展开_antd design tree 怎样实现 :展开折叠全部树节点
- CMWAP和CMNET 的区别与适用范围
- 万亿市值家电巨头“齐聚”汽车赛道,美的“寻求”兼并收购
- 偶数个数字,甲乙轮流取,甲先手,问能否判断甲取得数字之和不小于乙