diff --git a/wufuc/core.h b/wufuc/core.h index 678e9fd..b0d8dea 100644 --- a/wufuc/core.h +++ b/wufuc/core.h @@ -1,7 +1,7 @@ #pragma once DWORD WINAPI NewThreadProc(LPVOID lpParam); -BOOL PatchWUAgentHMODULE(HMODULE hModule); +BOOL PatchWU(HMODULE hModule); HMODULE WINAPI _LoadLibraryExA( _In_ LPCSTR lpFileName, diff --git a/wufuc/service.c b/wufuc/service.c index f5f8904..5ac84cc 100644 --- a/wufuc/service.c +++ b/wufuc/service.c @@ -5,6 +5,9 @@ #include "shellapihelper.h" #include "service.h" +static CHAR wuauservdllA[MAX_PATH]; +static WCHAR wuauservdllW[MAX_PATH]; + BOOL get_svcdllA(LPCSTR lpServiceName, LPSTR lpServiceDll, DWORD dwSize) { CHAR lpSubKey[257]; sprintf_s(lpSubKey, _countof(lpSubKey), "SYSTEM\\CurrentControlSet\\services\\%s\\Parameters", lpServiceName); @@ -27,6 +30,20 @@ BOOL get_svcdllW(LPCWSTR lpServiceName, LPWSTR lpServiceDll, DWORD dwSize) { return TRUE; } +LPSTR get_wuauservdllA(void) { + if (wuauservdllA[0] == '\0') { + get_svcdllA("wuauserv", wuauservdllA, _countof(wuauservdllA)); + } + return wuauservdllA; +} + +LPWSTR get_wuauservdllW(void) { + if (wuauservdllW[0] == L'\0') { + get_svcdllW(L"wuauserv", wuauservdllW, _countof(wuauservdllW)); + } + return wuauservdllW; +} + BOOL get_svcpid(SC_HANDLE hSCManager, LPCTSTR lpServiceName, DWORD *lpdwProcessId) { SC_HANDLE hService = OpenService(hSCManager, lpServiceName, SERVICE_QUERY_STATUS); if (!hService) { diff --git a/wufuc/service.h b/wufuc/service.h index 70d1d64..df3f310 100644 --- a/wufuc/service.h +++ b/wufuc/service.h @@ -6,9 +6,13 @@ BOOL get_svcpid(SC_HANDLE hSCManager, LPCTSTR lpServiceName, DWORD *lpdwProcessI BOOL get_svcgname(SC_HANDLE hSCManager, LPCTSTR lpServiceName, LPTSTR lpGroupName, SIZE_T dwSize); BOOL get_svcpath(SC_HANDLE hSCManager, LPCTSTR lpServiceName, LPTSTR lpBinaryPathName, SIZE_T dwSize); BOOL get_svcgpid(SC_HANDLE hSCManager, LPTSTR lpServiceGroupName, DWORD *lpdwProcessId); +LPSTR get_wuauservdllA(void); +LPWSTR get_wuauservdllW(void); #ifdef UNICODE #define get_svcdll get_svcdllW +#define get_wuauservdll get_wuauservdllW #else #define get_svcdll get_svcdllA +#define get_wuauservdll get_wuauservdllA #endif