【问题标题】:Causing a deliberate DEP error导致故意的 DEP 错误
【发布时间】:2014-11-16 02:24:18
【问题描述】:

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

这是专门针对 XP SP3 机器的。我希望它在我运行脚本或小程序时显示 XP DEP 错误框。

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

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

【问题讨论】:

  • 这应该很简单..只需将一个页面分配为不可执行,向不可执行页面写入一些内容,然后尝试执行它。
  • 这是我以前做过的任何事情的方式。我将如何将特定内存标记为非执行?

标签: windows-xp dep


【解决方案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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-27
    • 1970-01-01
    • 1970-01-01
    • 2016-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多