From d2eec956f92caee8a5706eb572c1130e9a789893 Mon Sep 17 00:00:00 2001 From: zeffy Date: Tue, 22 Aug 2017 19:06:11 -0700 Subject: [PATCH] ensure memory regions are writeable before patching --- wufuc/hooks.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/wufuc/hooks.c b/wufuc/hooks.c index b93e881..7ab0d90 100644 --- a/wufuc/hooks.c +++ b/wufuc/hooks.c @@ -169,13 +169,19 @@ BOOL PatchWUA(HMODULE hModule) { lpbIsCPUSupportedResult = (LPBOOL)(*(uintptr_t *)(ptr + offset01)); #endif + DWORD flNewProtect = PAGE_READWRITE; + DWORD flOldProtect; if (*lpbFirstRun) { + VirtualProtect(lpbFirstRun, sizeof(BOOL), flNewProtect, &flOldProtect); *lpbFirstRun = FALSE; + VirtualProtect(lpbFirstRun, sizeof(BOOL), flOldProtect, &flNewProtect); trace(L"Patched boolean value #1: %p = %08x", lpbFirstRun, *lpbFirstRun); result = TRUE; } if (!*lpbIsCPUSupportedResult) { + VirtualProtect(lpbIsCPUSupportedResult, sizeof(BOOL), flNewProtect, &flOldProtect); *lpbIsCPUSupportedResult = TRUE; + VirtualProtect(lpbIsCPUSupportedResult, sizeof(BOOL), flOldProtect, &flNewProtect); trace(L"Patched boolean value #2: %p = %08x", lpbIsCPUSupportedResult, *lpbIsCPUSupportedResult); result = TRUE; }