微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

delphi – 在C Builder中启用安全异常处理

对于 Windows 8应用程序认证,有(以及其他)这些要求:

> 3.2您的应用程序必须使用/ SafeSEH标志进行编译,以确保安全的异常处理
> 3.3您的应用程序必须使用/ NXCOMPAT标志进行编译,以防止数据执行
> 3.4您的应用程序必须使用/ DYNAMICBASE标志进行编译,用于地址空间布局随机化(ASLR)

我不知道如何在C Builder XE中启用其中的任何一个.

对于/ NXCOMPAT和/ DYNAMICBASE,可以使用VS中的editbin.exe或来自Cygwin的peflags.exe.虽然我会对可能的副作用感到更有信心,如果有本土的方式来实现这些功能.

无论如何,我完全失去了/ SafeSEH.

解决方法

首先,/ SafeSEH仅适用于x86,而不适用于x64或ARM.它需要您的编译器生成额外的表,指示由于安全原因被认为是有效的异常处理程序的函数地址.你可以自己做一个很小的机会,但是你需要看看你编译的汇编代码中的fs:0异常处理链,并枚举在该链上被推送的所有地址,然后在这里描述如下: http://msdn.microsoft.com/en-us/library/9a89h429(v=VS.80).aspx .你的代码实际上并没有任何处理程序,而且它们都在C Builder的运行时间(可能使得运行时是一个单独的DLL)变得容易一些.

您应该尝试说服C Builder更新其编译器以支持SafeSEH.自从XP SP2以来,Windows平台已经存在,并插入了一个非常糟糕的安全漏洞(x86中的堆栈中存在异常处理程序地址,只是等待缓冲区溢出将任何随机地址放在那里执行)

原文地址:https://www.jb51.cc/delphi/102548.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐