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

Записать внедряемый код в эту память (WriteProcessMemory).

Исполнить его(CreateRemoteThread).

Внедряемый машинный код должен (по нашему сценарию) произвести такие действия:

call LoadLibrary – вызвать функцию LoadLibrary из kernel32.dll для загрузки присоединяемой библиотеки (одной из разбиравшихся выше).

Call ExitThread – вызвать функцию ExitThread из kernel32.dll для корректного завершения данного потока.

В WinNT стартовый адрес отображения системных DLL (user32, kernel32 и т. д.) один и тот же для всех приложений. Это означает, что адрес некоторой функции из системной DLL в одном приложении будет актуален и в другом приложении. То есть точки входа функций системных DLL всегда одни и те же.

Ниже приведен пример процедуры, внедряющей dll с заданным именем в процесс с заданным PID (идентификатором процесса) (их можно наблюдать в закладке «процессы» диспетчера задач или получить с помощью стандартных API-функций).

//структура описывает поля, в которых содержится код внедрения

struct INJECTORCODE

{

BYTE instr_push_loadlibrary_arg; //инструкция push

DWORD loadlibrary_arg; //аргумент push

WORD instr_call_loadlibrary; //инструкция call []

DWORD adr_from_call_loadlibrary;

BYTE instr_push_exitthread_arg;

DWORD exitthread_arg;

WORD instr_call_exitthread;

DWORD adr_from_call_exitthread;

DWORD addr_loadlibrary;

DWORD addr_exitthread; //адресфункции ExitTHread

BYTE libraryname[100]; //имя и путь к загружаемой библиотеке

};

BOOL InjectDll(DWORD pid, char *lpszDllName)

{

HANDLE hProcess;

BYTE *p_code;

INJECTORCODE cmds;

DWORD wr, id;

//открытьпроцессснужнымдоступом

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