gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 14:39:05 25 4
gpt4 key购买 nike

对于 Windows 8 应用程序认证,有(除其他外)以下要求:

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

我无法找到如何在 C++Builder XE 中启用其中任何一个。

对于 /NXCOMPAT/DYNAMICBASE,可以使用 VS 中的 editbin.exepeflags.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 - 在 C++ Builder 中启用安全异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11196471/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com