64位Delphi桌面应用程序是否可以通过Windows 8.1认证

时间:2014-12-20 20:05:48

标签: delphi windows-8 windows-8.1 app-certification-kit

据我所知,32位Delphi桌面应用程序无法通过Can a desktop Delphi application be certified for Windows 8

缺少SafeSEH而无法通过Windows 8.1认证

64位Delphi桌面应用程序怎么样?他们能否通过其他要求,因为他们不必满足SafeSEH的要求?

如果答案是肯定的,那么是否需要将任何编译器/链接器设置设置为特定值,以及所需的最小Delphi版本(显然至少为XE2)。

我特别考虑了认证要求的第3部分。

第3。应用支持Windows安全功能

Windows操作系统具有许多支持系统安全性和隐私的功能。应用必须支持这些功能才能保持操作系统的完整性。编译不当的应用程序可能会导致缓冲区溢出,从而导致拒绝服务或允许恶意代码执行。

  • 3.1。您的应用不得使用AllowPartiallyTrustedCallersAttribute(APTCA)来确保对具有强名称的程序集的安全访问

  • 3.2您的应用必须使用/ SafeSEH标志进行编译,以确保安全的异常处理(仅限32位)

  • 3.3您的应用必须使用/ NXCOMPAT标志进行编译,以防止数据执行

  • 3.4您的应用必须使用/ DYNAMICBASE标志进行编译以进行地址空间布局随机化(ASLR)

  • 3.5您的应用不得读取/写入共享PE部分

1 个答案:

答案 0 :(得分:6)

唯一难以满足Delphi的要求是/SafeSEH。但这不适用于64位应用程序。

Windows x64 ABI使用与x86使用的完全不同的异常模型。

x86异常模型基于堆栈。 /SafeSEH标志适用于基于堆栈的异常。 x64 ABI使用基于表的异常。而/SafeSEH根本不适用。这解释了您引用的仅32位文本。

因此很容易满足3.1和3.5。别做那些事。 3.3和3.4只是您可以使用{$SetPEFlags}设置的PE标志。然后3.2不适用,你回家了。

相关问题