0

要するに、私がやりたいことは、自由にデータ実行防止 (DEP) エラーを引き起こすことができるようにすることです。

これは特に XP SP3 マシンに当てはまります。スクリプトまたは小さなプログラムを実行すると、XP DEP エラー ボックスが表示されるようにしたいと考えています。

それを行う最も簡単な方法は、ある種のスクリプトまたはプログラムを使用することだと考えるのは正しいでしょうか? バッファ オーバーフロー攻撃を防ぐために DEP が使用されていることは知っていますが、悪意のあるコードが使用される危険を冒したくありません。

誰かが私を正しい方向に導くために何か提案できますか?

4

1 に答える 1

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;
}
于 2014-07-08T15:42:17.677 に答える