Реферат: Перехват 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
|