博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PE Header中的FIleHeader(文件头)
阅读量:6843 次
发布时间:2019-06-26

本文共 1413 字,大约阅读时间需要 4 分钟。

IMAGE_FILE_HEADER STRUCT

    Machine WORD ?
    NumberOfSections WORD ?
    TimeDateStamp dd ?
    PointerToSymbolTable dd ?
    NumberOfSymbols dd ?
    SizeOfOptionalHeader WORD ?
    Characteristics WORD ?
IMAGE_FILE_HEADER ENDS

Field name Meanings
Machine 该文件运行所要求的CPU。对于Intel平台,该值是IMAGE_FILE_MACHINE_I386 (14Ch)。我们尝试了LUEVELSMEYERpe.txt声明的14Dh14Eh,但Windows不能正确执行。看起来,除了禁止程序执行之外,本域对我们来说用处不大。
NumberOfSections 文件的节数目。如果我们要在文件中增加或删除一个节,就需要修改这个值。
TimeDateStamp 文件创建日期和时间。我们不感兴趣。
PointerToSymbolTable 用于调试。
NumberOfSymbols 用于调试。
SizeOfOptionalHeader 指示紧随本结构之后的 OptionalHeader结构大小,必须为有效值。
Characteristics 关于文件信息的标记,比如文件是exe还是dll

 

但如果要遍历节表就得使用NumberOfSections

为了更好阐述 NumberOfSections 的用处,这里简要介绍一下节表。

    节表是一个结构数组,每个结构包含一个节的信息。因此若有3个节,数组就有3个成员。我们需要NumberOfSections值来了解该数组中到底有几个成员。也许您会想检测结构中的全0成员起到同样效果。Windows确实采用了这种方法。为了证明这一点,可以增加NumberOfSections的值,Windows仍然可以正常执行文件。据我们的观察,Windows读取NumberOfSections的值然后检查节表里的每个结构,如果找到一个全0结构就结束搜索,否则一直处理完NumberOfSections指定数目的结构。

    为什么我们不能忽略NumberOfSections的值? 有几个原因。

    1、PE说明中没有指定节表必须以全0结构结束。

    2、Thus there may be a situation where the last array member is contiguous to the first section, without empty space at all. (首尾相连,会导检验出的节的数量变多,也就是原因3)

    3、Another reason has to do with bound imports. The new-style binding puts the information immediately following the section table's last structure array member.(在节表后面有非全0的数据)

因此您仍然需要NumberOfSections

转载于:https://www.cnblogs.com/wang-can/p/3280336.html

你可能感兴趣的文章
解析三层架构(2)----分层究竟分出了那些东西
查看>>
AES加密不一致问题
查看>>
Linux用户管理
查看>>
jquery源码解析:attr,prop,attrHooks,propHooks详解
查看>>
UIView淡入淡出动画
查看>>
I.MX6 新版u-boot分析
查看>>
初级程序员面试不靠谱指南(一)
查看>>
Sort函数(C++)
查看>>
svn merge简单理解
查看>>
C++ 类模板
查看>>
app与服务器对接
查看>>
2016.7.22
查看>>
Centos7与Windows10添加Windows10启动项并设置为默认启动
查看>>
java学习第十五天
查看>>
POJ 2346:Lucky tickets
查看>>
POJ 3259:Wormholes bellman_ford判定负环
查看>>
POJ 1502:MPI Maelstrom Dijkstra模板题
查看>>
51nod 1423:最大二“货”
查看>>
msyql多个or,and,
查看>>
VISIBLE、INVISIBLE、GONE的区别
查看>>