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



标准模式:200 <= FileAlignment <= SectionAlignment和1000 <= SectionAlignment
低对齐:1 <= FileAlignment = SectionAlignment <= 800



数字是十六进制值。

ReversingLabs描述了一些可能的含义

似乎必须使PE标头可写低对齐。但是,FileAlignment和SectionAlignment必须小于或等于200h,这比上面的低对齐模式更具限制性。因此,我不确定这是否真的是低对齐的结果,还是低对齐模式只是该技巧的一部分。

另外,虚拟地址似乎必须等于物理地址。

我想更好地理解这一点。
我的问题是:什么暗示有低对齐模式?如何改变装载机装载PE的方式?为什么会这样呢?

#1 楼

可写标头是低对齐方式的副作用。更有趣的是,即使设置为对所有进程启用,可执行标头也可以绕过DEP限制。这允许代码直接从头执行,通常是不允许的。当用于DLL时,ImageBase可以成为入口点(即,调用LoadLibrary;调用eax),这可能有点出乎意料。低位对齐方式允许通过重叠表来创建非常小的文件(在64位上为268字节,在32位Vista和更高版本的系统上为255字节(XP允许文件为233字节长)),甚至删除所有部分。这种小尺寸已被证明足以用于下载。

评论


低对齐模式的目的是什么?为什么存在?

– Karsten Hahn
14-6-5在8:37



它的存在是为了减少驱动程序的内存占用量,特别是通过允许更多的部分放入一个页面中并减少填充来减少驱动程序的内存占用。

–彼得·弗里
2014年6月8日在1:38