Embarcadero Builder C++ XE5 数据执行保护编译器
Embarcadero Builder C++ XE5 data execution prevention compiler
希望这不是一个明显的问题。 由于 Windows 2008 R2 服务器上的 32 位 exe 中缺少数据执行保护 (DEP) 支持,我最近运行了异常。 将 exe 添加到 DEP 排除列表,解决了该问题作为解决方法。
我想在支持 DEP 的情况下进行编译,但找不到有关如何在 Builder XE5 c++ 中执行此操作的任何指示。 这可能吗? 我为德尔福找到了一些模糊的建议,但没有明确的建议。
有什么想法吗?
AFAIK,C++Builder没有Delphi相同的DEP选项。 你将不得不
-
使用外部 PE 编辑器修改已编译的 EXE 文件的 PE 标志。
-
在运行时调用
SetProcessDEPPolicy()
,例如在main()
/Winmain()
函数的顶部:void EnableDEP() { const DWORD PROCESS_DEP_ENABLE = 0x00000001; typedef BOOL WINAPI (*LP_SPDEPP)(DWORD); LP_SPDEPP SetProcessDEPPolicy = (LP_SPDEPP) GetProcAddress(GetModuleHandle(TEXT("kernel32")), "SetProcessDEPPolicy"); if (SetProcessDEPPolicy != NULL) SetProcessDEPPolicy(PROCESS_DEP_ENABLE); } int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { EnableDEP(); ... }
相关文章:
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- C++,系统无法执行指定的程序
- 使用C++中的模板和运算符重载执行矩阵运算
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 有充分的理由在h文件中使用include保护而不是cpp文件吗
- 执行函数时导致崩溃的变量
- 为什么在保护模式下继承升级不起作用
- 无论条件是否为true,if总是在c++中执行
- 当函数模板参数是具有默认参数的类模板时,函数模板参数的推导如何执行
- 访问被拒绝后,c++中的故障保护代码
- 在C++中对T*类型执行std::move的意外行为
- C++:无法访问声明的受保护成员
- 使用QProcess执行命令,并将结果存储在QStringList中
- 如何在没有信号的情况下从C++执行QML插槽
- Embarcadero Builder C++ XE5 数据执行保护编译器
- 包装和保护可执行文件
- 执行operator new的任何实现都返回指向大小为零的数组的保护页的指针
- 保护可执行文件不受逆向工程的影响
- 添加C++前缀是否"const"硬件级别执行任何不同操作,或者只是对编码人员的保护?
- 告诉子类对超类的受保护变量执行某些操作是否是一种好的做法(也许是一些已知的设计模式?)?