第5天:《加密与解密》-PE文件格式(二)

区块

区块表

区块表紧跟IMAGE_NT_HEADERS,是一个IMAGE_SECTION_HEADER结构数组。

第5天:《加密与解密》-PE文件格式(二)

告诉编译器将数据插入一个区块:

第5天:《加密与解密》-PE文件格式(二)

链接器设置合并区块

第5天:《加密与解密》-PE文件格式(二)

区块的对齐值:

FileAlignment定义了磁盘区块的对齐值,是200h的倍数,不足补00h。

SectionAlignment定义了内存中的对齐值,是1000h的倍数,不足补00h。

.NET文件的内存对齐值为8KB。

文件偏移与虚拟地址的转换

第5天:《加密与解密》-PE文件格式(二)

关系:

第5天:《加密与解密》-PE文件格式(二)

第5天:《加密与解密》-PE文件格式(二)

输入表

可执行文件使用来自其他DLL的代码或数据的动作称为输入。

输入函数的调用:

 高效:第5天:《加密与解密》-PE文件格式(二)

 低效:第5天:《加密与解密》-PE文件格式(二)

一般是低效形式。

优化:第5天:《加密与解密》-PE文件格式(二)

输入表的结构:

IMAGE_IMPORT_DESCRIPTOR(IID):

第5天:《加密与解密》-PE文件格式(二)

OriginalFirstThunk 与 FirstThunk相似,指向相同的数组。

第5天:《加密与解密》-PE文件格式(二)

数组中有IMAGE_THUNK_DATA结构:

第5天:《加密与解密》-PE文件格式(二)

第5天:《加密与解密》-PE文件格式(二)

输入地址表:

PE装载器在加载程序时会搜索INT中的函数,将输入函数的地址写入IAT。

第5天:《加密与解密》-PE文件格式(二)