即使是IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE在其 PE 映像中设置的最小控制台 Delphi 程序也不使用 ASLR。
GetProcessMitigationPolicy()返回PROCESS_MITIGATION_ASLR_POLICY0。
因此,ProcessHacker(使用此功能)报告此 Delphi 程序禁用 ASLR 的进程——进入 ProcessHacker 的进程详细信息窗口以查看 ASLR 状态。
如果有帮助,我可以提供一个最小编译的 Delphi 程序。我一直没能找出为什么没有激活 ASLR。
有任何想法吗?
编辑:重 定位信息是可执行文件的一部分。经过更多的调试,我发现 Delphi 对从 DLL 导入的函数的延迟加载代码是罪魁祸首。当我有更多信息或解决方案时,我会精确解决这个问题。
Edit2: 我将可执行文件作为附件发布在以下论坛中,因为我发现无法在此处附加任何内容:http : //wj32.org/processhacker/forums/viewtopic.php?p=6887#p6887