ччбчлчлчъ ччччшчьпьппзвжв
Потрачен
- 556
- 271
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
C++:
#include <Windows.h>
#include <detours/detours.h>
#include <iostream>
static HMODULE(WINAPI* TrueLoadLibrary)(LPCWSTR lpLibFileName) = LoadLibraryW;
HMODULE WINAPI DetouredLoadLibrary(LPCWSTR lpLibFileName)
{
HMODULE res = TrueLoadLibrary(lpLibFileName);
MessageBoxW(NULL, lpLibFileName, L"Detoured!", MB_OK | MB_ICONEXCLAMATION);
return res;
}
void SetGlobalHook()
{
// Получение адреса оригинальной функции LoadLibraryW из kernel32.dll
TrueLoadLibrary = reinterpret_cast<HMODULE(WINAPI*)(LPCWSTR)>(GetProcAddress(GetModuleHandle(TEXT("kernel32.dll")), "LoadLibraryW"));
// Установка хука
DetourTransactionBegin();
DetourUpdateThread(GetCurrentThread());
DetourAttach(&(PVOID&)TrueLoadLibrary, DetouredLoadLibrary);
DetourTransactionCommit();
}
// Функция для удаления глобального хука
void RemoveGlobalHook()
{
// Удаление хука
DetourTransactionBegin();
DetourUpdateThread(GetCurrentThread());
DetourDetach(&(PVOID&)TrueLoadLibrary, DetouredLoadLibrary);
DetourTransactionCommit();
}
int main()
{
// Установка глобального хука
SetGlobalHook();
// Ждем нажатия клавиши перед удалением хука
std::cout << "Press any key to remove the hook..." << std::endl;
std::cin.get();
// Удаление глобального хука
RemoveGlobalHook();
return 0;
}
C++:
TrueLoadLibrary = reinterpret_cast<HMODULE(WINAPI*)(LPCWSTR)>(GetProcAddress(GetModuleHandle(TEXT("kernel32.dll")), "LoadLibraryW"));