Mar*_*ryl 12 delphi c++builder seh aslr windows-8
对于Windows 8应用程序认证,有(以及其他)这些要求:
/SafeSEH标志编译您的应用程序,以确保安全的异常处理/NXCOMPAT标志编译您的应用程序以防止数据执行/DYNAMICBASE地址空间布局随机化(ASLR)标志进行编译我无法在C++ Builder XE中找到如何启用其中任何一个.
对于/NXCOMPAT和/DYNAMICBASE,可以使用editbin.exeVS或peflags.exeCygwin.虽然我对可能的副作用更有信心,但如果有本地方式来启用这些副作用.
无论如何,我完全不知所措/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 的堆栈中,只是等待缓冲区溢出将任何随机地址放在那里执行)
| 归档时间: |
|
| 查看次数: |
1431 次 |
| 最近记录: |