递归火山软件开发平台

标题: 求助 易语言转火山代码 禁用DEP数据执行保护 [打印本页]

作者: 2608881662    时间: 2025-4-5 22:22
标题: 求助 易语言转火山代码 禁用DEP数据执行保护
本帖最后由 2608881662 于 2025-4-5 22:24 编辑

火山写的dll回崩溃,StackHash_56f5模块报错
百度查了一下说需要禁用DEP 希望大佬帮忙看看  火山好像没有提供这个api函数
火山的嵌入代码不怎么会用  请大佬帮帮

易语言代码如图

作者: Xelloss0618    时间: 2025-4-5 22:35
摘取自PIV模块

  1. <火山程序 类型 = "通常" 版本 = 1 />

  2. 方法 置进程DEP策略 <公开 静态 类型 = 逻辑型 注释 = "设置32位进程的数据执行保护(DEP)策略,本方法不适用于64位进程(64位进程始终开启DEP且无法禁用)."
  3.         注释 = "如果想获取进程的DEP策略,可调用"进程操作类.取进程DEP策略"." 返回值注释 = "返回是否设置成功,失败一般是因为系统DEP策略的关系." 折叠 @禁止流程检查 = 真>
  4. 参数 DEP设置 <类型 = 整数 注释 = "只能在系统DEP为"选择性启用"和"选择性禁用"时修改DEP策略,系统的DEP策略可通过"取系统DEP策略"获取."
  5.         注释 = "  0 禁用当前进程的DEP;" 注释 = "  1 在当前进程上永久启用DEP,后续将无法在进程的生命周期内禁用DEP;"
  6.         注释 = "  3 当前进程永久启用DEP,并禁用DEP-ATL thunk emulation;">
  7. {
  8.     @ typedef BOOL(WINAPI * Typedef_SetProcessDEPPolicy)(DWORD);
  9.     @ Typedef_SetProcessDEPPolicy pfn = reinterpret_cast<Typedef_SetProcessDEPPolicy>(::GetProcAddress(::GetModuleHandleW(L"Kernel32.dll"), "SetProcessDEPPolicy"));
  10.     @ if (pfn) {
  11.     @     return pfn(static_cast<DWORD>(@<DEP设置>));
  12.     @ }
  13.     @ return FALSE;
  14. }
复制代码

作者: 2608881662    时间: 2025-4-5 22:40
Xelloss0618 发表于 2025-4-5 22:35
摘取自PIV模块

非常感谢




欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/) Powered by Discuz! X3.4