Delphi ASLR和Process Explorer结果

Delphi ASLR和Process Explorer结果,delphi,winapi,aslr,process-explorer,Delphi,Winapi,Aslr,Process Explorer,在Windows10上用一个空白VCL项目在Delphi中测试ALSR 在添加的VCL项目文件中: {$SETPEOPTFLAGS$140}//设置为ASLR和DEP 当“与运行时包的链接”为false时,Process Explorer将地址空间布局随机化列为“已启用(永久)已禁用”。当“与运行时包链接”为true时,Process Explorer将地址空间布局随机化列为“自下而上” 我使用32位和64位以及32位和64位Process Explorer对我的应用程序进行了测试。两位流程探索

在Windows10上用一个空白VCL项目在Delphi中测试ALSR

在添加的VCL项目文件中:

{$SETPEOPTFLAGS$140}//设置为ASLR和DEP

当“与运行时包的链接”为false时,Process Explorer将地址空间布局随机化列为“已启用(永久)已禁用”。当“与运行时包链接”为true时,Process Explorer将地址空间布局随机化列为“自下而上”

我使用32位和64位以及32位和64位Process Explorer对我的应用程序进行了测试。两位流程探索者给出了相同的答案


“已启用(永久)已禁用”和“自底向上”之间有什么区别?为什么这会受到运行时包的影响?

您是否验证是否为生成的PE正确设置了可选标志?研究effects Process Explorer是下一步。是的,可选标志将在PE头的dll特性部分设置。谢谢。这不是一个真正的德尔福问题,更多的是一个Windows问题。您最好在纯winapi标记中询问它。包只是DLL。在VS中使用C++程序,使用加载时间链接到DLL,您应该看到相同的行为。假定加载程序在进程初始化时检查链接DLL的PE标志,这将决定结果。谢谢。我没有VS,但我想知道VS是否会经历相同的结果,即需要使用加载时间链接来显示正在使用ASLR(在我的例子中是“自底向上”)。我有点被“启用(永久)禁用”这个短语卡住了。这听起来像是一个对比鲜明的短语。我将更改bpl加载的PE头,并在不使用运行时包的情况下重新测试。再次感谢。忽略以上内容。我不小心撞到了enter完整----附加信息-编译一个没有ASLR设置的空白vcl程序。32位-列为“禁用(永久)、禁用”。64位-空白程序被列为“启用(永久),禁用”。ASLR Process Explorer说明中的第一个禁用/启用(永久)表示操作系统设置。第二个禁用/启用是程序设置。在64位中,“已启用(永久)、已禁用”exe始终位于相同的基址,但DLL地址使用ASLR。