Реферат: Методы перехвата 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
|