Причинение преднамеренной ошибки DEP
Короче говоря, я хочу вызвать ошибку предотвращения выполнения данных (DEP) по своему усмотрению.
Это специально на машинах с XP SP3. Мне бы хотелось, чтобы при запуске скрипта или небольшой программы возникало сообщение об ошибке XP DEP.
Буду ли я прав, думая, что самый простой способ сделать это с помощью какого-либо сценария или программы? Я знаю, что 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;
}