简而言之,我想要做的是能够随意导致数据执行保护(DEP)错误。
这特别适用于XP SP3计算机。我喜欢它,这样当我运行脚本或小程序时,它会弹出XP DEP错误框。
我认为最简单的方法是使用某种脚本或程序,这样做对吗?我知道DEP是用来防止缓冲区溢出攻击的,但我不想冒任何恶意代码被使用的风险。
有没有人能给我一些建议,让我走上正确的路线?
发布于 2014-07-08 23:42:18
最简单的方法是分配不带可执行文件属性的内存,并跳转到分配的地址。这可以用下面的代码来完成。
void Code(){
return;
}
void GenerateDepError(){
// Allocate data area
PVOID pMem = VirtualAlloc( NULL, 0x100,
MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE );
// Copy a function into data area
for( DWORD i = 0; i < 0x100; i++ ){
((char*)pMem)[i] = ((char*)Code)[i];
}
// Consider the memory area as a function.
void (*dep_trigger)() = (void (*)())pMem;
// Invoke the function. This should cause DEP error if DEP is ON.
dep_trigger();
// If it returns without error this message will be displayed.
printf("No error on dep_trigger()\n");
}
int main( int argc, char** argv ){
GenerateDepError();
return 0;
}https://stackoverflow.com/questions/21265544
复制相似问题