【问题标题】:Can 64bit Delphi desktop application be certified for Windows 8.164位Delphi桌面应用程序能否通过Windows 8.1认证
【发布时间】:2014-12-20 20:05:47
【问题描述】:

据我所知,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 部分

【问题讨论】:

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


    【解决方案1】:

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

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

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

    所以很容易满足 3.1 和 3.5。不要做那些事。而 3.3 和 3.4 只是 PE 标志,您可以使用 {$SetPEFlags} 设置它们。然后 3.2 不适用,您在家。

    【讨论】:

      猜你喜欢
      • 2011-12-25
      • 1970-01-01
      • 1970-01-01
      • 2016-03-05
      • 1970-01-01
      • 1970-01-01
      • 2012-10-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多