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

达莉娅(Dalija Prasnikar)

据我所知,由于缺少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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Windows 8应用Java编写的Windows桌面应用程序的认证

可以在桌面应用程序中使用EJB 3.1吗?

Apache Cordova可以编译到旧版Windows桌面应用程序(非都市版)吗?

在32位应用程序中使用64位整数可以吗?

.NET对WSAStartup的使用对64位应用程序安全吗?

我可以在Objective C中将泛型用于针对iOS 8的应用程序吗?

我可以使用Node.js创建本机Windows桌面应用程序吗

我可以在Java 8上运行Grails 2.2.5应用程序吗?

您可以在64位安装中运行32位Cygwin应用程序吗?

我可以为Laravel 8应用程序使用LaravelCollective / html吗?

Windows 7所有者可以开发Windows Phone 8应用程序吗?

为什么Windows 7会在Program Files(x86)文件夹中安装64位应用程序?我可以改变行为吗?

检查Windows 8上的桌面应用程序是x86还是x64

在哪里可以找到Windows 8(.1)应用程序的更新历史记录?

Windows 8应用程序优于桌面程序的优势

我可以在Microsoft Visual Studio Express 2013 Windows 8中制作Windows窗体应用程序吗?

我可以在32位Linux中运行64位应用程序吗?

64位内核上的32位应用程序可以使用所有内存吗?

64位软件/应用程序比32位软件/应用程序需要更多的RAM吗?

我可以将Windows存储应用程序C#代码(命名空间)用于桌面应用程序吗?

您可以在Windows 7 PC上开发Windows 8应用程序并在Windows 8设备上进行远程调试吗?

Windows Phone 8:我可以在应用程序中使用gmail吗

完成Windows Phone 8应用程序-与WP7不同吗?

我可以将我的应用程序从Windows Phone 8上传到Windows 8吗?

我仍然可以上传不支持iOS8 +的应用程序吗?

Windows 8的邮件应用程序不支持IMAP帐户的TLS / STARTTLS吗?

Windows 8 / 8.1应用程序可以在启动时启动吗

是否可以在Ubuntu中运行Windows 8应用程序?

我可以使用Windows 10开发Windows 7桌面应用程序吗?