据我所知,由于缺少SafeSEH,无法通过Windows 8.1对32位Delphi桌面应用程序进行认证,可以通过Windows 8对桌面Delphi应用程序进行认证吗?
但是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很难满足的唯一要求是/SafeSEH
。但这不适用于64位应用程序。
Windows x64 ABI使用与x86完全不同的异常模型。
x86异常模型是基于堆栈的。该/SafeSEH
标志适用于基于堆栈的异常。x64 ABI使用基于表的异常。并且/SafeSEH
根本不适用。这解释了您引用的仅32位文本。
因此很容易满足3.1和3.5。不要做那些事。3.3和3.4只是您可以使用设置的PE标志{$SetPEFlags}
。然后3.2不适用,您就可以回家了。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句