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.
分享到:
相关推荐
ECharts 官网之前提供下载的矢量地图数据来自第三方,目前官网暂时停止下载服务,这里还留着一份珍藏的
<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" 根据自己...
通过更新此代码,可以解决Delphi7编译出的程序在调用WebService时总是因windows数据执行保护而失败的问题。
在开发一个网页设计课程考试软件的过程中,发现仅用文字描述题目要求难以表述清楚,应该提供一个网页样例,要求只能看到网页效果而无法看到网页源码。介绍了内存中载入网页的方法,通过ActiveX技术将其应用于HTML...
make config 完后,仍旧是 make dep; make clean。 接下来要 make zlilo 或 make zImage。 然后 make modules ; make modules_install 。完成之后,就编译出一个没有调入多余模块的一个“干净的”内核映像文件了。
mscomm32.ocx MSCOMM32.oca MSCOMM32.DEP MSCOMM.SRG。 将这几个文件拷贝到一个固定的目录下然后注册就可以在MFC里正常使用串口控件了。 注册:开始->运行 输入Regsvr32 "C:\WINDOWS\system32\MSCOMM32.OCX" 根据...
压缩包里面包含了mscomm需要安装的3个文件,包含了mscomm.reg和mscomm32.dep、mscomm32.ocx,还附上了mscomm在delphi xe2中的安装说明,和程序在非开发的电脑上使用时出错的解决办法,另:有一份测试用的源码,网上...
tree[id].dep = dep; // 如果左儿子存在 if (tree[id].left != -1) dfs(tree[id].left, dep + 1); // 如果右儿子存在 if(tree[id].right!=-1) dfs(tree[id].right,dep + 1); } int main() { int i; ...
完美解决方法:IE8 DEP 为了帮助保护您的计算机,windows 已经关闭了此程序 自动关闭 IE8.0
EAS中DEP的一些解决方案,含DEP脚本、BOTP等(供应链部分),
DEP解除与保护详细步骤 可完美解除DEP保护 提升系统性能
Delphi XE2 破解工具 [Delphi_CBuilder_XE2_v16.0.4256.43595_Crack] Version 3: - Fixed bug with IDE error after 1 hour of work - Minor changes Note: Cracked BDS is DEP incompatible, you must add it to...
关闭DEP,驱动强制前面+意外关机等待,支持win10 彻底关闭DEP,驱动强制签名,开启测试模式,关闭非法关机时的开机30秒等待
金蝶DEP开发平台,页面脚本开发语言,方便二次开发加字段
金蝶EAS DEP脚本汇总.
用npm我安装dep 运行npm运行dev JSON模式 // localhost example blogger `http://localhost:3000/WithBlogger/?url=https://prikate09.blogspot.com/2017/10/all-ani-29-oktober-2017-413.html` // onlie mode...
主要涉及金蝶EAS dep二次开发的实战练习,包括:1.dep基础开发(方案,元数据,字段设置,新增字段) 2.dep脚本开发 (控件属性,必录逻辑,监听等) 等,需要的请下载,适合新手
金蝶EAS Dep开发资料,DEP常用脚本集2013,DEP-监听查询调用,动态扩展平台常见问题,动态扩展平台常用脚本集
动态扩展平台 DEP 集成应用指南