公海710登录网址前后相继起先实施之处

8

8

ImageBase  ***公海710登录网址 ,(必得掌握卡塔尔***

Reserved, must be
0

The load configuration
table address and size. For more information, see section 6.8, “The Load
Configuration Structure (Image Only).”

pe文件的顾客分界面使用的子系统类型。定义如下:

Description

The import address
table address and size. For more information, see section 6.4.4, “Import
Address Table.”

Global Ptr

Certificate
Table

#define IMAGE_SUBSYSTEM_UNKNOWN              0   // 未知子系统
#define IMAGE_SUBSYSTEM_NATIVE               1   // 不需要子系统(如驱动程序)
#define IMAGE_SUBSYSTEM_WINDOWS_GUI          2   // Windows GUI 子系统
#define IMAGE_SUBSYSTEM_WINDOWS_CUI          3   // Windows 控制台子系统
#define IMAGE_SUBSYSTEM_OS2_CUI              5   // OS/2 控制台子系统
#define IMAGE_SUBSYSTEM_POSIX_CUI            7   // Posix 控制台子系统
#define IMAGE_SUBSYSTEM_NATIVE_WINDOWS       8   // 镜像是原生 Win9x 驱动程序
#define IMAGE_SUBSYSTEM_WINDOWS_CE_GUI       9   // Windows CE 图形界面

168/184

Load Config
Table

内部存款和储蓄器中区块的对齐单位。区块总是对齐到那个值的平头倍。此字段必得大于或等于
FileAlignment ,暗中同意值是系统页面包车型地铁大大小小。三十四个人cpu通常值为
0x1000(十二进制卡塔尔国,即4096,即4KB。60人cpu平时为 8kB
FileAlignment ***(必得询问卡塔尔*****

#define IMAGE_DIRECTORY_ENTRY_EXPORT          0   // Export Directory
#define IMAGE_DIRECTORY_ENTRY_IMPORT          1   // Import Directory
#define IMAGE_DIRECTORY_ENTRY_RESOURCE        2   // Resource Directory
#define IMAGE_DIRECTORY_ENTRY_EXCEPTION       3   // Exception Directory
#define IMAGE_DIRECTORY_ENTRY_SECURITY        4   // Security Directory
#define IMAGE_DIRECTORY_ENTRY_BASERELOC       5   // Base Relocation Table
#define IMAGE_DIRECTORY_ENTRY_DEBUG           6   // Debug Directory
//      IMAGE_DIRECTORY_ENTRY_COPYRIGHT       7   // (X86 usage)
#define IMAGE_DIRECTORY_ENTRY_ARCHITECTURE    7   // Architecture Specific Data
#define IMAGE_DIRECTORY_ENTRY_GLOBALPTR       8   // RVA of GP
#define IMAGE_DIRECTORY_ENTRY_TLS             9   // TLS Directory
#define IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG    10   // Load Configuration Directory
#define IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT   11   // Bound Import Directory in headers
#define IMAGE_DIRECTORY_ENTRY_IAT            12   // Import Address Table
#define IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT   13   // Delay Load Import Descriptors
#define IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR 14   // COM Runtime descriptor

The thread local
storage (TLS) table address and size. For more information, see section
6.7, “The .tls Section.”

Bound
Import

对此DLL文件来讲,由于多个DLL文件全体使用宿主EXE文件的地点空间,不可能保障优先装入地址未有被**的DLL使用,所以DLL文件中必得含有重一直音讯防止万风流倜傥。

The attribute
certificate table address and size. For more information, see section
5.7, “The Attribute Certificate Table (Image Only).”

The delay import
descriptor address and size. For more information, see section 5.8,
“Delay-Load Import Tables (Image Only).”

 

The bound import table
address and size.

微软官方文书档案:https://msdn.microsoft.com/en-us/library/windows/desktop/ms680339(v=vs.85).aspx.aspx)

Exception
Table

公海710登录网址前后相继起先实施之处。AddressOfEntryPoint  ***(必得询问卡塔尔国***

216/232

(PE/PE32+)

208/224

故此,在前头介绍的 IMAGE_FILE_HEADELacrosse 结构的 Characteristics
字段中,DLL 文件对应的 IMAGE_FILE_RELOCS_ST奥迪Q3IPPED
位总是为0,而EXE文件的这一个标识位三回九转为1。

www.710.com ,Resource
Table

The base relocation
table address and size. For more information, see section 6.6, “The
.reloc Section (Image
Only).”

Base Relocation
Table

Subsystem ***(必需领会卡塔 尔(阿拉伯语:قطر‎***

The RVA of the value to
be stored in the global pointer register. The size member of this
structure must be set to zero.

Delay Import
Descriptor

8

152/168

IAT

也便是概念了某块的职分和分寸。

8

8

The export table
address and size. For more information see section 6.3, “The .edata
Section (Image Only).”

Reserved, must be
zero

8

The import table
address and size. For more information, see section 6.4, “The .idata
Section.”

The exception table
address and size. For more information, see section 6.5, “The .pdata
Section.”

PE文件的刚开始阶段装入地址。也正是说,当文件被实行时,借使恐怕的话(当前地点没有被选用卡塔尔,Windows优先将文件装入到由ImageBase字段钦赐之处中。

160/176

8

以此字段能够说是最要害的字段之风流潇洒,它由17个生机勃勃律的IMAGE_DATA_DIRECTOVision GTY结构重组。其布局如下:

交由表明:

结构体源代码如下:

8

Debug

The CLR runtime header
address and size. For more information, see section 6.10, “The .cormeta
Section (Object Only).”

设若未有一点点名的话,dll文件默以为0x10000000;exe文件默以为0x00400000,不过在Windows
CE平台上是0x00010000。此值必得是64K bytes的翻番!

8

对于EXE文件来讲,由于各种文件延续采纳独立的虚拟地址空间,优先装入地址不容许被**模块私吞,所以EXE总是能够遵照这么些地点装入

8

144/160

112/128

程序开头试行之处,那是一个TucsonVA(相对设想地址)。对于exe文件,这里是开发银行代码;对于dll文件,这里是libMain()的地址。尽管在七个可实施文件上附加了生龙活虎段代码并想让这段代码首先被推行,那么只须求将以此进口地址指向附加的代码就足以了。在脱壳时首先件事正是找入口点,指的正是那几个值。

Import
Table

公海710登录网址 1

176/192

8

Field

Size

实际资料见:www.microsoft.com/whdc/system/platform/firmware/PECOFF.mspx
中的pecoff.docx文档

8

TLS Table

104/120

192/208

typedef struct _IMAGE_OPTIONAL_HEADER 
{
    //
    // Standard fields.  
    //
+18h    WORD    Magic;                   // 标志字, ROM 映像(0107h),普通可执行文件(010Bh)
+1Ah    BYTE    MajorLinkerVersion;      // 链接程序的主版本号
+1Bh    BYTE    MinorLinkerVersion;      // 链接程序的次版本号
+1Ch    DWORD   SizeOfCode;              // 所有含代码的节的总大小
+20h    DWORD   SizeOfInitializedData;   // 所有含已初始化数据的节的总大小
+24h    DWORD   SizeOfUninitializedData; // 所有含未初始化数据的节的大小
+28h    DWORD   AddressOfEntryPoint;     // 程序执行入口RVA ***(必须了解)***
+2Ch    DWORD   BaseOfCode;              // 代码的区块的起始RVA
+30h    DWORD   BaseOfData;              // 数据的区块的起始RVA
    //
    // NT additional fields.    以下是属于NT结构增加的领域。
    //
+34h    DWORD   ImageBase;               // 程序的首选装载地址 ***(必须了解)***
+38h    DWORD   SectionAlignment;        // 内存中的区块的对齐大小 ***(必须了解)***
+3Ch    DWORD   FileAlignment;           // 文件中的区块的对齐大小 ***(必须了解)***
+40h    WORD    MajorOperatingSystemVersion;  // 要求操作系统最低版本号的主版本号
+42h    WORD    MinorOperatingSystemVersion;  // 要求操作系统最低版本号的副版本号
+44h    WORD    MajorImageVersion;       // 可运行于操作系统的主版本号
+46h    WORD    MinorImageVersion;       // 可运行于操作系统的次版本号
+48h    WORD    MajorSubsystemVersion;   // 要求最低子系统版本的主版本号
+4Ah    WORD    MinorSubsystemVersion;   // 要求最低子系统版本的次版本号
+4Ch    DWORD   Win32VersionValue;       // 莫须有字段,不被病毒利用的话一般为0
+50h    DWORD   SizeOfImage;             // 映像装入内存后的总尺寸
+54h    DWORD   SizeOfHeaders;           // 所有头 + 区块表的尺寸大小
+58h    DWORD   CheckSum;                // 映像的校检和
+5Ch    WORD    Subsystem;               // 可执行文件期望的子系统 ***(必须了解)***
+5Eh    WORD    DllCharacteristics;      // DllMain()函数何时被调用,默认为 0
+60h    DWORD   SizeOfStackReserve;      // 初始化时的栈大小
+64h    DWORD   SizeOfStackCommit;       // 初始化时实际提交的栈大小
+68h    DWORD   SizeOfHeapReserve;       // 初始化时保留的堆大小
+6Ch    DWORD   SizeOfHeapCommit;        // 初始化时实际提交的堆大小
+70h    DWORD   LoaderFlags;             // 与调试有关,默认为 0 
+74h    DWORD   NumberOfRvaAndSizes;     // 下边数据目录的项数,这个字段自Windows NT 发布以来一直是16
+78h    IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];   
// 数据目录表 ***(必须了解,重点)*** winNT发布到win10,IMAGE_NUMBEROF_DIRECTORY_ENTRIES一直都是16
} IMAGE_OPTIONAL_HEADER32, *PIMAGE_OPTIONAL_HEADER32;

  96/112

更多请查看:

The resource table
address and size. For more information, see section 6.9, “The .rsrc
Section.”

184/200

Architecture

Offset

DataDirectory ***(必得询问,首要卡塔尔***

136/152

8

200/216

typedef struct _IMAGE_DATA_DIRECTORY {

   DWORD   VirtualAddress; // 相对虚拟地址 

   DWORD   Size;           // 数据块的大小

} IMAGE_DATA_DIRECTORY, *PIMAGE_DATA_DIRECTORY;

比如说,Visual Studio 二〇一四中编写翻译程序时方可在图形分界面设置链接选项:

Export
Table

The debug data starting
address and size. For more information, see section 6.1, “The .debug
Section.”

8

8

128/144

即使PE文件中的数据是鲁人持竿装入内部存款和储蓄器后的页属性归类而被放在分歧的节中的,然而这么些处在各样节中的数据遵照用场能够被分成导出表、导入表、财富、重定位表等数据块,这15个IMAGE_DATA_DIRECTO索罗德Y结构正是用来定义二种分化用场的数据块的(如下表所示卡塔尔国。IMAGE_DATA_DIRECTO福特ExplorerY结构的概念极粗略,它然则提议了某种数据块的岗位和长度。

那也意味着EXE文件不再必要重定位音讯。

SectionAlignment ***(必得询问卡塔 尔(英语:State of Qatar)***

8

120/136

CLR Runtime
Header

pe文件中区块的对齐单位,以bytes(字节卡塔 尔(英语:State of Qatar)为单位。此值必须是2的次方倍,可是必得在512和64K间距之间(闭区间[521,
64*1024=65536]卡塔尔,假诺SectionAlignment小于系统页面包车型客车轻重缓急,那么SectionAlignment的轻重缓急就和FileAlignment相像。pe文件中默许值为
521 字节(0.5KB卡塔尔 即 0x200(十八进制卡塔 尔(英语:State of Qatar)。

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图