首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >导致故意的DEP错误

导致故意的DEP错误
EN

Stack Overflow用户
提问于 2014-01-22 01:51:00
回答 1查看 58关注 0票数 0

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

这特别适用于XP SP3计算机。我喜欢它,这样当我运行脚本或小程序时,它会弹出XP DEP错误框。

我认为最简单的方法是使用某种脚本或程序,这样做对吗?我知道DEP是用来防止缓冲区溢出攻击的,但我不想冒任何恶意代码被使用的风险。

有没有人能给我一些建议,让我走上正确的路线?

EN

回答 1

Stack Overflow用户

发布于 2014-07-08 23:42:18

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

代码语言:javascript
复制
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;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21265544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档