Реферат: Перехват API-функций в Windows NT2000XP

Главная функция DLL будет выглядеть следующим образом:

BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call,

LPVOID lpReserved )

{

// Если система подключает DLL к какому-либо процессу,

// она сначала вызовет главную функцию DLL с параметром

// DLL_PROCESS_ATTACH, на что мы сразу вызовем нашу функцию

// InterceptFunctions, которая произведет подмену стандартной API функции

// MessageBoxA нашейфункцией Intercept_MessageBoxA (см. ниже)

if(ul_reason_for_call = = DLL_PROCESS_ATTACH )

{

InterceptFunctions();

}

return TRUE;

}

Функция, которую мы только что вызвали и которая выполняет основную хитрость, перехват API перезаписью начальных байт стандартной функции, выглядит следующим образом:

void InterceptFunctions(void)

{

DWORD op;

//сначала получим абсолютный адрес функции для перехвата

adr_MessageBoxA = (DWORD)GetProcAddress(GetModuleHandle("user32.dll"),

"MessageBoxA");

if(adr_MessageBoxA == 0)

{

MessageBox(NULL, "Can`t get adr_MessageBoxA, "Error!", 0);

return;

}

// Зададим машинный код инструкции перехода, который затем впишем

// в начало полученного адреса:

К-во Просмотров: 414
Бесплатно скачать Реферат: Перехват API-функций в Windows NT2000XP