-
-
[求助]关于dep的ExecuteDisable标志
-
发表于: 2011-4-19 17:44 3190
-
在vs08编译选项中设置dep后,
#include<windows.h>
void main()
{
char s[]="\x90\x90\x90\xc3";
DWORD a;
//VirtualProtect(s,6,PAGE_EXECUTE_READWRITE,&a);
((void (__stdcall*)())&s[0])();
}
像这样的代码确实被阻止了, 但当我用windbg open该exe文件时, 查看KPROCESS结构时,
ExecuteDisable和 ExecuteEnable 始终都为0(启用dep 和禁用dep都一样)
这是为什么? 不是说启用或禁用dep下面的两位标志必有一位为1吗?
+0x06c Flags : _KEXECUTE_OPTIONS
+0x000 ExecuteDisable : 0y0
+0x000 ExecuteEnable : 0y0
+0x000 DisableThunkEmulation : 0y1
+0x000 Permanent : 0y0
+0x000 ExecuteDispatchEnable : 0y0
+0x000 ImageDispatchEnable : 0y0
+0x000 DisableExceptionChainValidation : 0y1
+0x000 Spare : 0y0
+0x000 ExecuteOptions : 0x44 'D'
+0x06d Unused1 : 0x4f 'O'
+0x06e IopmOffset : 0x2053
+0x070 Unused4 : 0x65646f6d
#include<windows.h>
void main()
{
char s[]="\x90\x90\x90\xc3";
DWORD a;
//VirtualProtect(s,6,PAGE_EXECUTE_READWRITE,&a);
((void (__stdcall*)())&s[0])();
}
像这样的代码确实被阻止了, 但当我用windbg open该exe文件时, 查看KPROCESS结构时,
ExecuteDisable和 ExecuteEnable 始终都为0(启用dep 和禁用dep都一样)
这是为什么? 不是说启用或禁用dep下面的两位标志必有一位为1吗?
+0x06c Flags : _KEXECUTE_OPTIONS
+0x000 ExecuteDisable : 0y0
+0x000 ExecuteEnable : 0y0
+0x000 DisableThunkEmulation : 0y1
+0x000 Permanent : 0y0
+0x000 ExecuteDispatchEnable : 0y0
+0x000 ImageDispatchEnable : 0y0
+0x000 DisableExceptionChainValidation : 0y1
+0x000 Spare : 0y0
+0x000 ExecuteOptions : 0x44 'D'
+0x06d Unused1 : 0x4f 'O'
+0x06e IopmOffset : 0x2053
+0x070 Unused4 : 0x65646f6d
赞赏
他的文章
看原图
赞赏
雪币:
留言: