Se da urm. problema:
Code: Select all
EXECUTABIL.EXE--->DLL1.DLL
--->DLL2.DLL
--->DLL3.DLL
In DLL3.DLL:
Code: Select all
include <windows.h>
#include <Shlwapi.h>
#include <Psapi.h>
#include <intrin.h>
#include <winternl.h>
#include "detours\include\detours.h"
#pragma comment(lib, "detours.lib")
void(WINAPI *True_GetSystemTime)(OUT LPSYSTEMTIME lpSystemTime) = GetSystemTime;
void WINAPI HookedGetSystemTime(OUT LPSYSTEMTIME lpSystemTime)
{
//...
True_GetSystemTime(lpSystemTime);
}
extern "C"
{
BOOL WINAPI DllMain(HINSTANCE hInst, DWORD dwReason, LPVOID lpvReserved)
{
switch (dwReason)
{
case DLL_PROCESS_ATTACH: {
DisableThreadLibraryCalls(hInst);
DetourTransactionBegin();
DetourUpdateThread(GetCurrentThread());
DetourAttach(&(PVOID&)True_GetSystemTime, HookedGetSystemTime);
LONG lError = DetourTransactionCommit();
if (lError != NO_ERROR) {
::MessageBox(HWND_DESKTOP, "Failed to CRACK", "ERROR:", MB_OK);
return FALSE;
}
}
break;
case DLL_THREAD_ATTACH:
{
}
break;
case DLL_THREAD_DETACH:
{
}
break;
case DLL_PROCESS_DETACH: {
DetourTransactionBegin();
DetourUpdateThread(GetCurrentThread());
DetourDetach(&(PVOID&)True_GetSystemTime, HookedGetSystemTime);
LONG lError = DetourTransactionCommit();
if (lError != NO_ERROR) {
MessageBox(HWND_DESKTOP, "Failed to remove CRACK", "ERROR:", MB_OK);
return FALSE;
}
}
break;
}
}
}
Cum fac sa filtrez cererile in interiorul HookedGetSystemTime, sau poate nu, astfel incat doar DLL3.DLL sa poata accesa HookedGetSystemTime, celealte cereri catre functia HookedGetSystemTime sa fie respinse?
Multumesc