EASYHOOK_NT_EXPORT LhBarrierGetCallingModule(MODULE_INFORMATION* OutModule) { /* Description: The given storage will receive the calling unmanaged module. Returns: STATUS_NOT_FOUND No matching module could be found. */ NTSTATUS NtStatus; UCHAR* ReturnAddress; FORCE(LhBarrierGetReturnAddress((PVOID*)&ReturnAddress)); FORCE(LhBarrierPointerToModule(ReturnAddress, OutModule)); RETURN; THROW_OUTRO: FINALLY_OUTRO: return NtStatus; }
BOOL WINAPI MessageBeepHook(__in UINT uType) { /* Test barrier methods... */ PVOID CallStack[64]; MODULE_INFORMATION Mod; ULONG MethodCount; LhUpdateModuleInformation(); LhEnumModules((HMODULE*)CallStack, 64, &MethodCount); for(ULONG i = 0; i < MethodCount; i++) { LhBarrierPointerToModule(CallStack[i], &Mod); } LhBarrierCallStackTrace(CallStack, 64, &MethodCount); LhBarrierGetCallingModule(&Mod); return TRUE; }