From 18aa2a79c0f1ca7f99294a5760f769e566b778d0 Mon Sep 17 00:00:00 2001 From: Boris Gjenero Date: Mon, 20 Oct 2014 11:46:53 -0400 Subject: [PATCH] Fixes to make Mhook_Unhook() work. This fixes ListRemove() when deleting the last trampoline in a list, and fixes TrampolineGet() so it can find trampolines. --- mhook-lib/mhook.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/mhook-lib/mhook.cpp b/mhook-lib/mhook.cpp index 3380dce..a347633 100644 --- a/mhook-lib/mhook.cpp +++ b/mhook-lib/mhook.cpp @@ -183,7 +183,9 @@ static VOID ListRemove(MHOOKS_TRAMPOLINE** pListHead, MHOOKS_TRAMPOLINE* pNode) if ((*pListHead) == pNode) { (*pListHead) = pNode->pNextTrampoline; - assert((*pListHead)->pPrevTrampoline == NULL); + if (*pListHead != NULL) { + assert((*pListHead)->pPrevTrampoline == NULL); + } } pNode->pPrevTrampoline = NULL; @@ -441,7 +443,7 @@ static MHOOKS_TRAMPOLINE* TrampolineGet(PBYTE pHookedFunction) { MHOOKS_TRAMPOLINE* pCurrent = g_pHooks; while (pCurrent) { - if (pCurrent->pHookFunction == pHookedFunction) { + if ((PBYTE)&(pCurrent->codeTrampoline) == pHookedFunction) { return pCurrent; }