PE文件的低对齐模式有什么影响?

逆向工程 聚乙烯
2021-06-17 12:57:06

我只在corkami wiki 中找到了“低对齐模式”这个术语

  • 标准模式:200 <= FileAlignment <= SectionAlignment 和 1000 <= SectionAlignment

  • 低对齐:1 <= FileAlignment = SectionAlignment <= 800

数字是十六进制值。

ReversingLabs描述了一些可能的影响

似乎需要低对齐才能使 PE Header 可写。但是,FileAlignment 和 SectionAlignment 必须小于等于 200h,这比上面的低对齐模式限制更多。所以我不确定这是否真的是低对齐的结果,或者低对齐模式是否只是该技巧的一部分

此外,虚拟地址似乎必须与物理地址相同。

我想更好地理解这一点。
我的问题是:低对齐模式有什么影响?loader加载PE的方式是如何改变的?为什么会这样?

1个回答

可写标头是低对齐的副作用。更有趣的是,即使设置为对所有进程启用可执行标头也是可能的,绕过 DEP 限制。这允许代码直接从标头执行,这通常是不允许的。当用于 DLL 时,ImageBase 可以成为入口点(即调用 LoadLibrary;调用 eax),这可能有点出乎意料。

其他含义包括某些工具无法正确反汇编或转储此类文件。低对齐允许创建非常小的文件(在 64 位上小至 268 字节或在 32 位 Vista 和更高版本的系统上小至 255 字节(XP 允许文件长 233 字节)),通过重叠表,甚至删除所有部分。事实证明,这个小尺寸对于下载器来说已经足够了。