我尝试使用可选标头计算CLI标头文件偏移量,我手动检查了一个示例.NET程序集,并注意到可选标头为我提供了CLI标头的RVA 0x2008
CLI标头的文件偏移量为0x208
。如何计算RVA的文件偏移量?
感谢。
答案 0 :(得分:2)
PE文件包含一系列部分,这些部分使用部分表(在可选标头之后)映射到页面对齐的虚拟地址。
因此,要阅读CLI标题,您可以:
/* pseudo code */
int GetFilePosition(int rva)
{
foreach (var section in Sections)
{
var pos = rva - section.VirtualAddress;
if (pos >= 0 && pos < section.VirtualSize)
{
return pos + section.PointerToRawData;
}
}
Explode();
}
Section表在ECMA-335 Partition II Section 25.3
中描述