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中的堆栈中存在异常处理程序地址,只是等待缓冲区溢出将任何随机地址放在那里执行)

相关文章

 从网上看到《Delphi API HOOK完全说明》这篇文章,基本上都...
  从网上看到《Delphi API HOOK完全说明》这篇文章,基本上...
ffmpeg 是一套强大的开源的多媒体库 一般都是用 c/c+&#x...
32位CPU所含有的寄存器有:4个数据寄存器(EAX、EBX、ECX和ED...
1 mov dst, src dst是目的操作数,src是源操作数,指令实现的...