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

64位Delphi桌面应用程序是否可以通过Windows 8.1认证,delphi,windows-8,windows-8.1,app-certification-kit,Delphi,Windows 8,Windows 8.1,App Certification Kit,据我所知,由于缺少SafeSEH via,32位Delphi桌面应用程序无法通过Windows 8.1认证 但是64位Delphi桌面应用程序呢?他们可以通过其他要求吗,因为他们不必满足SafeSEH要求 如果答案是肯定的,是否有任何编译器/链接器设置必须设置为特定值,以及所需的最低Delphi版本(显然至少是XE2) 我特别考虑认证要求第3节 3。应用程序支持Windows安全功能 Windows操作系统具有许多支持系统安全和隐私的功能。应用程序必须支持这些功能才能保持操作系统的完整性。未正确

据我所知,由于缺少SafeSEH via,32位Delphi桌面应用程序无法通过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您的应用程序必须使用地址空间布局随机化(ASLR)的/DYNAMICBASE标志进行编译

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


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

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

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

      所以很容易满足3.1和3.5的要求。不要做那些事。3.3和3.4只是可以使用设置的PE标志。那么3.2不适用,您就在家了