Реферат: Методы перехвата API-вызовов в Win32

DETOUR_TRAMPOLINE(VOID WINAPI SleepTrampoline(DWORD), Sleep);

VOID WINAPI SleepDetour(DWORD dw) //Это – функция-перехватчик

{

//В этом примере она ничего не делает, просто вызывает оригинальную функцию

return SleepTrampoline(dw);

}

void main(void)

{

//Здесьосуществляетсяперехват

DetourFunctionWithTrampoline((PBYTE)SleepTrampoline, (PBYTE)SleepDetour);

//...

//Аздесьснимается

DetourRemoveTrampoline(SleepTrampoline);

}

Динамический перехват используется в случаях, когда целевая функция на этапе сборки недоступна. Реализуется он так:

#include <windows.h>

#include <detours.h> //Подключимбиблиотеку Detours

VOID (*DynamicTrampoline)(VOID) = NULL; //Этобудетфункция-трамплин

VOID DynamicDetour(VOID) //Это – функция-перехватчик

{

//В этом примере она ничего не делает, просто вызывает оригинальную функцию

return DynamicTrampoline();

}

void main(void)

{

//Получимадресцелевойфункции

VOID (*DynamicTarget)(VOID) = SomeFunction;

//Здесьосуществляетсяперехват

DynamicTrampoline=(FUNCPTR)DetourFunction((PBYTE)DynamicTarget, (PBYTE)DynamicDetour);

К-во Просмотров: 352
Бесплатно скачать Реферат: Методы перехвата API-вызовов в Win32