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

cmds.addr_exitthread =

(DWORD)GetProcAddress(GetModuleHandle("kernel32.dll"),"ExitThread");

if(strlen(lpszDllName)>99)

{

MessageBox(NULL, "Dll Name too long", "Error!", 0);

return FALSE;

}

strcpy((char*)cmds.libraryname, lpszDllName );

/*После инициализации cmds в мнемонике ассемблера выглядит следующим

образом:

push adr_library_name ;аргументф-ции loadlibrary

call dword ptr [loadlibrary_adr] ; вызвать LoadLibrary

push exit_thread_arg ;аргументдля ExitThread

call dword ptr [exit_thread_adr] ;вызвать ExitThread

*/

//записать машинный код по зарезервированному адресу

WriteProcessMemory(hProcess, p_code, &cmds, sizeof(cmds), &wr);

//выполнитьмашинныйкод

HANDLE z = CreateRemoteThread(hProcess, NULL, 0,

(unsigned long (__stdcall *)(void *))p_code, 0, 0, &id);

//ожидать завершения удаленного потока

WaitForSingleObject(z, INFINITE);

//освободить память

VirtualFreeEx(hProcess, (void*)p_code, sizeof(cmds), MEM_RELEASE);

return TRUE;

}

Внедрение 2

Второй способ внедрения исполняемого кода (через хуки) наиболее прост в использовании. Он основан на технологии хуков, а именно: если установить хук на поток чужого процесса, то, как только поток получит сообщение, соответствующее заданному типу хука, система автоматически подключит DLL c хуком к данному процессу. Недостатком данного способа в том, что нельзя внедрить DLL в процесс, не имеющий очереди сообщений. Данная DLL будет присоединена к чужому процессу лишь до тех пор, пока запущена программа, установившая хук. Как только вы завершите эту программу, dll автоматически будет отключена. Первый способ лишен таких недостатков.

С другой стороны, первый способ будет работать лишь в WinNT, по причине использования функции VirtualAllocEx, которая резервирует память в заданном (отличном от того, в котором происходит вызов этой функции) процессе. Теоретически, данную проблему можно обойти, если писать код в некоторую часть отображения exe-файла чужого процесса, например в заголовок DOS, который после загрузки не используется. Но ОС не всегда позволяет писать в эту область памяти, даже если попытаться изменить разрешения при помощи VirtualProtextEx.

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