SIERRA is a low-level C hooking, hook-evasion & IAT virtualization API
Generally hooks are patched or destroyed, which creates instability and introduces detection vectors, instead Sierra proxies functions or performs a "step-over".
"Popular hooking API's/Fw's are easily signatured, Detours, Minhook, ...”
Sierra is a smaller rewrite of the concepts seen in Detours/Minhook but with an emphasis on security & stealth in heavily guarded enviroments
- No disassembly libraries or VEH traps.
- No
VirtualProtectloops. - No static stubs.
- No IAT noise. No loader friction.
- No
.textbloat - Hard-to-sig
The following symbols are exposed by sierra.h:
// Function resolution (IAT Virtualization, IAT evasion)
void* SRGetModuleBase(const wchar_t* moduleName);
void* SRGetProcedureAddrForCaller(const void* base, const char* funcName, DWORD flags);
// Hook Installation
BOOL SRSetHook(const wchar_t* moduleName, const char* funcName, SIERRA_CALLBACK callback, DWORD flags);
// Hook Context
typedef struct _SIERRA_HOOK_CTX {
void* HookedFunc;
void* CleanProxy;
const void* ModuleBase;
} SIERRA_HOOK_CTX;See USAGE.md for detailed examples.
All code is exported through sierra.h.
You must compile sierra.c into your project.
Creative Commons Attribution-NonCommercial 4.0 International (CC BY-NC 4.0)