Permet de décorer les API Windows.
[[https://github.com/microsoft/detours|Site GitHub]] {{ :lib:detours:detours-2020-12-09.zip |Archive du 09/12/2019 le 07/02/2020}}
===Compilation===
Se compile avec ''nmake.exe'' de Visual Studio.
J'ai dû ajouter au ''CFLAGS'' du fichier ''src/Makefile''
/I "C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\um" /I "C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\shared" /I "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.16.27023\include" /I "C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\ucrt"
===Exemple===
Exemple pris sur le Wiki du site GitHub.
#include
#include
// Target pointer for the uninstrumented Sleep API.
//
static VOID(WINAPI * TrueSleep)(DWORD dwMilliseconds) = Sleep;
// Detour function that replaces the Sleep API.
//
VOID WINAPI TimedSleep(DWORD dwMilliseconds)
{
// Save the before and after times around calling the Sleep API.
DWORD dwBeg = GetTickCount();
TrueSleep(dwMilliseconds);
DWORD dwEnd = GetTickCount();
OutputDebugStringW(L"My output string.\n");
}
int main()
{
if (DetourIsHelperProcess())
{
return TRUE;
}
DetourRestoreAfterWith();
DetourTransactionBegin();
DetourUpdateThread(GetCurrentThread());
DetourAttach(&(PVOID&)TrueSleep, TimedSleep);
DetourTransactionCommit();
Sleep(100);
Sleep(100);
Sleep(100);
DetourTransactionBegin();
DetourUpdateThread(GetCurrentThread());
DetourDetach(&(PVOID&)TrueSleep, TimedSleep);
DetourTransactionCommit();
return 0;
}
Sortie dans la console :
My output string.
My output string.
My output string.