void LSP_InitializeHooks() { HWND shellWindow = GetShellWindow(); GetWindowThreadProcessId(shellWindow, &explorerPid); MH_CreateHookApi(L"kernelbase.dll", "RegOpenKeyExA", ProcessLSPRegOpenKeyExA, (void**)&g_origRegOpenKeyExA); if (CoreIsDebuggerPresent()) { MH_CreateHookApi(L"ntdll.dll", "NtQueryInformationProcess", NtQueryInformationProcessHook, (void**)&origQIP); MH_CreateHookApi(L"ntdll.dll", "NtClose", NtCloseHook, (void**)&origClose); } MH_EnableHook(MH_ALL_HOOKS); }
BOOL APIENTRY DllMain(HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) { #if defined(_WIN64) const char* pBitDepth = "64"; #else const char* pBitDepth = "32"; #endif switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: GetModuleFileName((HMODULE)hModule, revModuleName, MAX_PATH); swprintf(ovrModuleName, MAX_PATH, L"LibOVRRT%hs_%d.dll", pBitDepth, OVR_MAJOR_VERSION); MH_Initialize(); MH_CreateHook(LoadLibraryW, HookLoadLibrary, (PVOID*)&TrueLoadLibrary); MH_CreateHook(OpenEventW, HookOpenEvent, (PVOID*)&TrueOpenEvent); MH_CreateHookApi(L"dxgi.dll", "CreateDXGIFactory", HookDXGIFactory, (PVOID*)&DXGIFactory); MH_EnableHook(MH_ALL_HOOKS); break; case DLL_PROCESS_DETACH: MH_Uninitialize(); break; default: break; } return TRUE; }
inline MH_STATUS MH_CreateHookApiEx( LPCWSTR pszModule, LPCSTR pszProcName, LPVOID pDetour, T** ppOriginal) { return MH_CreateHookApi( pszModule, pszProcName, pDetour, reinterpret_cast<LPVOID*>(ppOriginal)); }