DEP有时会保护了某些操作, 当进行某些类hack操作的代码时会报错!-_-
用 SetProcessDEPPolicy 可以覆盖系统的DEP设置, but似乎只限2008, xp sp3似乎也支持(待测)
hk := GetModuleHandle('Kernel32.dll');
if hk INVALID_HANDLE_VALUE then begin
@GetSystemDEPPolicy := GetProcAddress(hK, 'GetSystemDEPPolicy');
if @GetSystemDEPPolicy nil then begin
policy := GetSystemDEPPolicy();
if (policy = 1) or (policy = 3) then begin
@SetProcessDEPPolicy := GetProcAddress(hK, 'SetProcessDEPPolicy');
if @SetProcessDEPPolicy nil then begin
SetProcessDEPPolicy(0);
end;
end;
end;
end;
后来在chromium上找个到DEP相关的有意思的东西, 借来用了一下, 测试可用
{
设置进程的DEP, 参考google浏览器代码, 改写为delphi实现
http://src.chromium.org/viewvc/chrome/trunk/src/sandbox/src/dep.cc?view=markup
}
unit uDep;
interface
uses
Windows;
type
DepEnforcement = (
// DEP is completely disabled.
DEP_DISABLED,
// DEP is permanently enforced.
DEP_ENABLED,
// DEP with support for ATL7 thunking is permanently enforced.
DEP_ENABLED_ATL7_COMPAT
);
function SetCurrentProcessDEP(enforcement: DepEnforcement): Boolean;
implementation
const
PROCESS_DEP_ENABLE:DWORD = $00000001;
PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION:DWORD = $00000002;
MEM_EXECUTE_OPTION_ENABLE:DWORD = 1;
MEM_EXECUTE_OPTION_DISABLE:DWORD = 2;
MEM_EXECUTE_OPTION_ATL7_THUNK_EMULATION:DWORD = 4;
MEM_EXECUTE_OPTION_PERMANENT:DWORD = 8;
type
PROCESS_INFORMATION_CLASS = (ProcessExecuteFlags = $22);
FnSetProcessDEPPolicy = function(dwFlags: DWORD): Boolean; WINAPI;
FnNtSetInformationProcess = function(
ProcessHandle: THANDLE;
ProcessInformationClass: PROCESS_INFORMATION_CLASS;
ProcessInformation: Pointer;
ProcessInformationLength: LongWord): HResult;WINAPI;
function SetCurrentProcessDEP(enforcement: DepEnforcement): Boolean;
var
SetProcessDEPPolicy: FnSetProcessDEPPolicy;
NtSetInformationProcess: FnNtSetInformationProcess;
hk: HMODULE;
dep_flags: DWORD;
hr: HRESULT;
begin
Result := False;
hk := GetModuleHandle('Kernel32.dll');
if hk <> INVALID_HANDLE_VALUE then begin
@SetProcessDEPPolicy := GetProcAddress(hK, 'SetProcessDEPPolicy');
if @SetProcessDEPPolicy <> nil then begin
case enforcement of
DEP_DISABLED: dep_flags := 0;
DEP_ENABLED: dep_flags := PROCESS_DEP_ENABLE or
PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION;
DEP_ENABLED_ATL7_COMPAT: dep_flags := PROCESS_DEP_ENABLE;
else Exit;
end;
Result := SetProcessDEPPolicy(dep_flags);
end;
end;
if Result = True then Exit;
hk := GetModuleHandle('ntdll.dll');
if hk <> INVALID_HANDLE_VALUE then begin
@NtSetInformationProcess := GetProcAddress(hK, 'NtSetInformationProcess');
if @NtSetInformationProcess <> nil then begin
case enforcement of
DEP_DISABLED: dep_flags := MEM_EXECUTE_OPTION_DISABLE;
DEP_ENABLED: dep_flags := MEM_EXECUTE_OPTION_PERMANENT or
MEM_EXECUTE_OPTION_ENABLE;
DEP_ENABLED_ATL7_COMPAT: dep_flags := MEM_EXECUTE_OPTION_PERMANENT or
MEM_EXECUTE_OPTION_ENABLE or
MEM_EXECUTE_OPTION_ATL7_THUNK_EMULATION;
else Exit;
end;
hr := NtSetInformationProcess(GetCurrentProcess(),
ProcessExecuteFlags,
@dep_flags,
sizeof(dep_flags));
if hr = S_OK then Result := True
else Result := False;
end;
end;
end;
initialization
SetCurrentProcessDEP(DEP_DISABLED);
end.
分享到:
相关推荐
【戴尔公司2008年XP系统的OEM镜像】是专为戴尔计算机设计的操作系统版本,它基于微软的Windows XP Professional Service Pack 3(SP3)。XP SP3是Windows XP的最后一个重大更新,包含了自SP2发布以来的所有安全更新...
标题 "解决Delphi7数据执行保护" 涉及到的是在使用Delphi 7开发应用程序时遇到的一个常见问题,即Windows操作系统的数据执行保护(DEP,Data Execution Prevention)策略导致程序运行异常。DEP是一种安全特性,旨在...
ECharts是一款基于JavaScript的数据可视化库,它由百度公司开发,被广泛应用于Web应用程序中,用于创建交互式的图表和图形。ECharts的特点在于其丰富的图表类型、良好的可定制性以及对大数据的良好支持。...
数据结构应包含`dep_id`、`dep_name`、`master_name`和`slogan`字段。如果成功,会返回新创建的学院信息;如果ID已存在,会返回错误信息;若JSON格式有误,会返回400状态码。 三、更新功能 3.1 学院-更新:PUT请求...
当IE8浏览器在运行过程中遇到DEP警告,提示“为了帮助保护您的计算机,Windows已经关闭了此程序”,这通常意味着DEP认为IE8中的某些进程可能包含潜在的恶意活动或存在安全隐患,从而自动关闭了浏览器。这种情况可能...
<script type="text/javascript...--百度申请开发码--> <script type="text/javascript" src="/js/echarts/js/echarts.min.js"></script> <script type="text/javascript" src="/js/echarts/js/bmap.min.js"></script>
mscomm32.ocx MSCOMM32.oca MSCOMM32.DEP MSCOMM.SRG 将这几个文件拷贝到一个固定的目录下然后注册就可以在MFC里正常使用串口控件了。 注册:开始->运行 输入Regsvr32 "C:\WINDOWS\system32\MSCOMM32.OCX" 根据自己...
在使用Delphi 7开发应用程序时,有时会遇到一个常见的问题,即在尝试调用Web Service时,程序因为Windows的数据执行保护(Data Execution Prevention, DEP)机制而失败。DEP是Windows操作系统为了提高系统安全性而...
在开发一个网页设计课程考试软件的过程中,发现仅用文字描述题目要求难以表述清楚,应该提供一个网页样例,要求只能看到网页效果而无法看到网页源码。介绍了内存中载入网页的方法,通过ActiveX技术将其应用于HTML...
EAS中DEP的一些解决方案,含DEP脚本(供应链) EAS(Enterprise Application System,企业应用系统)是基于SAP ERP的应用系统,它提供了强大的业务流程管理和自动化工具。DEP(Data Exchange Platform,数据交换...
压缩包里面包含了mscomm需要安装的3个文件,包含了mscomm.reg和mscomm32.dep、mscomm32.ocx,还附上了mscomm在delphi xe2中的安装说明,和程序在非开发的电脑上使用时出错的解决办法,另:有一份测试用的源码,网上...
或者是DEP(Delphi Expert)文件,提供了项目的一些额外设置和扩展。 为了集成这套源码到开源的DIOPC(Direct Internet Object Persistence Component)库,开发者需要理解DIOPC的设计理念和架构,并将MQTT的实现与...
Go-Dep是Go语言开发中的一个关键工具,它在Go生态系统中扮演了依赖管理的角色,帮助开发者有效地管理和控制他们的项目依赖。Dep项目旨在解决Go语言早期版本中对库和依赖包管理的不足,使得开发过程更加有序和可预测...
金蝶EAS DEP脚本汇总 在金蝶EAS系统中,DEP脚本是一种基于JavaScript语法的脚本语言,用于扩展系统的功能。下面是DEP脚本的详细知识点: 一、基本概念 DEP脚本是一种基于JavaScript语法的脚本语言,用于扩展金蝶...
因此,我们需要手动调整DEP设置以允许Delphi32.exe运行。 根据提供的步骤,我们可以这样做: 1. 首先,右键点击桌面上的“此电脑”图标,选择“属性”进入“系统”设置。 2. 在系统窗口中,选择左侧的“高级系统...
mscomm32.ocx MSCOMM32.oca MSCOMM32.DEP MSCOMM.SRG。 将这几个文件拷贝到一个固定的目录下然后注册就可以在MFC里正常使用串口控件了。 注册:开始->运行 输入Regsvr32 "C:\WINDOWS\system32\MSCOMM32.OCX" 根据...
这个技术在2004年首次引入Windows XP SP2,并随后在各个版本的Windows中得到增强。DEP_hook(防杀进程DLL)则是一种反逆向工程的技术,黑客或恶意软件开发者可能会用它来逃避DEP的保护,以绕过杀毒软件的检测。 DEP...
DEP(Data Execution Prevention,数据执行防护)是Windows操作系统中的一种安全特性,旨在防止恶意代码在内存中的非执行区域执行,从而阻止某些类型的攻击。这个"DEP添加工具"显然是一个辅助程序,用于帮助用户方便...