2014-01-21 37 views
0

总之,我想要做的是能够随意导致数据执行保护(DEP)错误。导致故意的DEP错误

这是专门在XP SP3机器上。我喜欢它,所以当我运行一个脚本或小程序时,它会出现XP DEP错误框。

我是否认为用某种脚本或程序最简单的方法是正确的?我知道DEP是用来防止缓冲区溢出攻击,但我宁愿不冒险使用任何 恶意代码。

任何人都可以提出任何建议让我走上正确的路线吗?

+0

这应该是非常简单的..只是分配一个页面作为非可执行文件,写一些东西到不可执行的页面,并尝试执行它。 – vcsjones

+0

这是我以前做过的任何事情的联盟。我会如何将特定内存标记为非可执行文件? – user3220393

回答

1

最简单的方法是分配没有可执行属性的内存并跳转到分配的地址。 这可以用下面的代码完成。

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; 
}