diff --git a/VX-API/CreateFileFromDsCopyFromSharedFile.cpp b/VX-API/CreateFileFromDsCopyFromSharedFile.cpp index 2c2a0b9..c2f63b4 100644 --- a/VX-API/CreateFileFromDsCopyFromSharedFile.cpp +++ b/VX-API/CreateFileFromDsCopyFromSharedFile.cpp @@ -62,7 +62,7 @@ BOOL CreateFileFromDsCopyFromSharedFileW(PWCHAR NewFileName, PWCHAR FileToClone) EXIT_ROUTINE: if (!bFlag) - dwError = GetLastErrorEx(); + dwError = GetLastErrorFromTeb(); if (SidString) HeapFree(GetProcessHeapEx(), HEAP_ZERO_MEMORY, SidString); @@ -144,7 +144,7 @@ BOOL CreateFileFromDsCopyFromSharedFileA(PCHAR NewFileName, PCHAR FileToClone) EXIT_ROUTINE: if (!bFlag) - dwError = GetLastErrorEx(); + dwError = GetLastErrorFromTeb(); if (SidString) HeapFree(GetProcessHeapEx(), HEAP_ZERO_MEMORY, SidString); diff --git a/VX-API/CreateProcessFromIShellDispatchInvoke.cpp b/VX-API/CreateProcessFromIShellDispatchInvoke.cpp index 7301935..24802f0 100644 --- a/VX-API/CreateProcessFromIShellDispatchInvoke.cpp +++ b/VX-API/CreateProcessFromIShellDispatchInvoke.cpp @@ -18,7 +18,7 @@ DWORD CreateProcessFromIShellDispatchInvokeW(_In_ PWCHAR BinaryPath) hModule = LoadLibraryW(L"Shell32.dll"); if (hModule == NULL) - return GetLastErrorEx(); + return GetLastErrorFromTeb(); DllGetClassObject = (DLLGETCLASSOBJECT)GetProcAddressA((DWORD64)hModule, "DllGetClassObject"); if (DllGetClassObject == NULL) @@ -91,7 +91,7 @@ DWORD CreateProcessFromIShellDispatchInvokeA(_In_ PCHAR BinaryPath) hModule = LoadLibraryW(L"Shell32.dll"); if (hModule == NULL) - return GetLastErrorEx(); + return GetLastErrorFromTeb(); DllGetClassObject = (DLLGETCLASSOBJECT)GetProcAddressA((DWORD64)hModule, "DllGetClassObject"); if (DllGetClassObject == NULL) diff --git a/VX-API/CreateProcessViaNtCreateUserProcess.cpp b/VX-API/CreateProcessViaNtCreateUserProcess.cpp index e3a5fdc..1a613cc 100644 --- a/VX-API/CreateProcessViaNtCreateUserProcess.cpp +++ b/VX-API/CreateProcessViaNtCreateUserProcess.cpp @@ -176,19 +176,19 @@ DWORD CreateProcessViaNtCreateUserProcessA(PCHAR BinaryPath) hModule = GetModuleHandleEx2W(L"ntdll.dll"); if (hModule == NULL) - return GetLastErrorEx(); + return GetLastErrorFromTeb(); NtCreateUserProcess = (NTCREATEUSERPROCESS)GetProcAddressA((DWORD64)hModule, "NtCreateUserProcess"); if (NtCreateUserProcess == NULL) - return GetLastErrorEx(); + return GetLastErrorFromTeb(); RtlCreateProcessParametersEx = (RTLCREATEPROCESSPARAMETERSEX)GetProcAddressA((DWORD64)hModule, "RtlCreateProcessParametersEx"); if (RtlCreateProcessParametersEx == NULL) - return GetLastErrorEx(); + return GetLastErrorFromTeb(); RtlDestroyProcessParameters = (RTLDESTROYPROCESSPARAMETERS)GetProcAddressA((DWORD64)hModule, "RtlDestroyProcessParameters"); if (RtlDestroyProcessParameters == NULL) - return GetLastErrorEx(); + return GetLastErrorFromTeb(); CharStringToWCharString(wBinaryPath, BinaryPath, StringLengthA(BinaryPath)); StringCopyW(MsDosFullPath, (PWCHAR)L"\\??\\"); @@ -197,7 +197,7 @@ DWORD CreateProcessViaNtCreateUserProcessA(PCHAR BinaryPath) RtlInitUnicodeString(&NtImagePath, MsDosFullPath); if (RtlCreateProcessParametersEx(&ProcessParameters, &NtImagePath, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, RTL_USER_PROCESS_PARAMETERS_NORMALIZED) != ERROR_SUCCESS) - return GetLastErrorEx(); + return GetLastErrorFromTeb(); AttributeList = (PPS_ATTRIBUTE_LIST)HeapAlloc(GetProcessHeapEx(), HEAP_ZERO_MEMORY, sizeof(PS_ATTRIBUTE)); if (AttributeList) @@ -208,7 +208,7 @@ DWORD CreateProcessViaNtCreateUserProcessA(PCHAR BinaryPath) AttributeList->Attributes[0].Value = (ULONG_PTR)NtImagePath.Buffer; if (NtCreateUserProcess(&hHandle, &hThread, PROCESS_ALL_ACCESS, THREAD_ALL_ACCESS, NULL, NULL, NULL, NULL, ProcessParameters, &CreateInfo, AttributeList) != ERROR_SUCCESS) - dwError = GetLastErrorEx(); //? + dwError = GetLastErrorFromTeb(); //? } if (AttributeList) @@ -270,19 +270,19 @@ DWORD CreateProcessViaNtCreateUserProcessW(PWCHAR BinaryPath) hModule = GetModuleHandleEx2W(L"ntdll.dll"); if (hModule == NULL) - return GetLastErrorEx(); + return GetLastErrorFromTeb(); NtCreateUserProcess = (NTCREATEUSERPROCESS)GetProcAddressA((DWORD64)hModule, "NtCreateUserProcess"); if (NtCreateUserProcess == NULL) - return GetLastErrorEx(); + return GetLastErrorFromTeb(); RtlCreateProcessParametersEx = (RTLCREATEPROCESSPARAMETERSEX)GetProcAddressA((DWORD64)hModule, "RtlCreateProcessParametersEx"); if (RtlCreateProcessParametersEx == NULL) - return GetLastErrorEx(); + return GetLastErrorFromTeb(); RtlDestroyProcessParameters = (RTLDESTROYPROCESSPARAMETERS)GetProcAddressA((DWORD64)hModule, "RtlDestroyProcessParameters"); if (RtlDestroyProcessParameters == NULL) - return GetLastErrorEx(); + return GetLastErrorFromTeb(); StringCopyW(MsDosFullPath, (PWCHAR)L"\\??\\"); StringConcatW(MsDosFullPath, BinaryPath); @@ -290,7 +290,7 @@ DWORD CreateProcessViaNtCreateUserProcessW(PWCHAR BinaryPath) RtlInitUnicodeString(&NtImagePath, MsDosFullPath); if (RtlCreateProcessParametersEx(&ProcessParameters, &NtImagePath, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, RTL_USER_PROCESS_PARAMETERS_NORMALIZED) != ERROR_SUCCESS) - return GetLastErrorEx(); + return GetLastErrorFromTeb(); AttributeList = (PPS_ATTRIBUTE_LIST)HeapAlloc(GetProcessHeapEx(), HEAP_ZERO_MEMORY, sizeof(PS_ATTRIBUTE)); if (AttributeList) @@ -301,7 +301,7 @@ DWORD CreateProcessViaNtCreateUserProcessW(PWCHAR BinaryPath) AttributeList->Attributes[0].Value = (ULONG_PTR)NtImagePath.Buffer; if (NtCreateUserProcess(&hHandle, &hThread, PROCESS_ALL_ACCESS, THREAD_ALL_ACCESS, NULL, NULL, NULL, NULL, ProcessParameters, &CreateInfo, AttributeList) != ERROR_SUCCESS) - dwError = GetLastErrorEx(); //? + dwError = GetLastErrorFromTeb(); //? } if (AttributeList) diff --git a/VX-API/CreateProcessWithCfGuard.cpp b/VX-API/CreateProcessWithCfGuard.cpp index 505e926..411c111 100644 --- a/VX-API/CreateProcessWithCfGuard.cpp +++ b/VX-API/CreateProcessWithCfGuard.cpp @@ -22,7 +22,7 @@ BOOL UnusedSubroutineInitializeProcThreadAttributeList(LPPROC_THREAD_ATTRIBUTE_L if (dwFlags || (dwAttributeCount > 0x1B)) { - SetLastErrorEx(ERROR_INVALID_PARAMETER); + SetLastErrorInTeb(ERROR_INVALID_PARAMETER); return bFlag; } @@ -37,7 +37,7 @@ BOOL UnusedSubroutineInitializeProcThreadAttributeList(LPPROC_THREAD_ATTRIBUTE_L bFlag = TRUE; } else - SetLastErrorEx(ERROR_INSUFFICIENT_BUFFER); + SetLastErrorInTeb(ERROR_INSUFFICIENT_BUFFER); *lpSize = dwSize; return bFlag; diff --git a/VX-API/CreatePseudoRandomInteger.cpp b/VX-API/CreatePseudoRandomInteger.cpp index 898ef33..7f34e63 100644 --- a/VX-API/CreatePseudoRandomInteger.cpp +++ b/VX-API/CreatePseudoRandomInteger.cpp @@ -5,7 +5,7 @@ INT PseudoRandomIntegerSubroutine(PULONG Context) return ((*Context = *Context * 1103515245 + 12345) % ((ULONG)RAND_MAX + 1)); } -INT CreatePseudoRandomInteger(ULONG Seed) +INT CreatePseudoRandomInteger(_In_ ULONG Seed) { return (PseudoRandomIntegerSubroutine(&Seed)); } \ No newline at end of file diff --git a/VX-API/CreatePseudoRandomString.cpp b/VX-API/CreatePseudoRandomString.cpp index ac62b17..7f36c1e 100644 --- a/VX-API/CreatePseudoRandomString.cpp +++ b/VX-API/CreatePseudoRandomString.cpp @@ -1,11 +1,11 @@ #include "Win32Helper.h" -PWCHAR CreatePseudoRandomStringW(SIZE_T dwLength, ULONG Seed) +PWCHAR CreatePseudoRandomStringW(_In_ SIZE_T dwLength, _In_ ULONG Seed) { WCHAR DataSet[] = L"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; PWCHAR String = NULL; - String = (PWCHAR)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, (sizeof(WCHAR) * (dwLength + 1))); + String = (PWCHAR)HeapAlloc(GetProcessHeapEx(), HEAP_ZERO_MEMORY, (sizeof(WCHAR) * (dwLength + 1))); if (String == NULL) return NULL; @@ -26,12 +26,12 @@ PWCHAR CreatePseudoRandomStringW(SIZE_T dwLength, ULONG Seed) return String; } -PCHAR CreatePseudoRandomStringA(SIZE_T dwLength, ULONG Seed) +PCHAR CreatePseudoRandomStringA(_In_ SIZE_T dwLength, _In_ ULONG Seed) { CHAR DataSet[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; PCHAR String = NULL; - String = (PCHAR)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, (sizeof(CHAR) * (dwLength + 1))); + String = (PCHAR)HeapAlloc(GetProcessHeapEx(), HEAP_ZERO_MEMORY, (sizeof(CHAR) * (dwLength + 1))); if (String == NULL) return NULL; diff --git a/VX-API/DelayedExecutionExecuteOnDisplayOff.cpp b/VX-API/DelayedExecutionExecuteOnDisplayOff.cpp index 6e8a0b7..541fa7f 100644 --- a/VX-API/DelayedExecutionExecuteOnDisplayOff.cpp +++ b/VX-API/DelayedExecutionExecuteOnDisplayOff.cpp @@ -73,7 +73,7 @@ BOOL DelayedExecutionExecuteOnDisplayOff(VOID) FAILURE: - dwError = GetLastError(); + dwError = GetLastErrorFromTeb(); if (hNotificationRegister) _PowerSettingUnregisterNotification(hNotificationRegister); diff --git a/VX-API/GetCurrentUserSid.cpp b/VX-API/GetCurrentUserSid.cpp index 3508901..ee40e6c 100644 --- a/VX-API/GetCurrentUserSid.cpp +++ b/VX-API/GetCurrentUserSid.cpp @@ -71,7 +71,7 @@ LPWSTR GetCurrentUserSidW(HANDLE hToken, BOOL DisposeProcessHandle) EXIT_ROUTINE: if (!bFlag) - dwError = GetLastErrorEx(); + dwError = GetLastErrorFromTeb(); if (TokenGroup) HeapFree(GetProcessHeapEx(), HEAP_ZERO_MEMORY, TokenGroup); @@ -152,7 +152,7 @@ LPSTR GetCurrentUserSidA(HANDLE hToken, BOOL DisposeProcessHandle) EXIT_ROUTINE: if (!bFlag) - dwError = GetLastErrorEx(); + dwError = GetLastErrorFromTeb(); if (TokenGroup) HeapFree(GetProcessHeapEx(), HEAP_ZERO_MEMORY, TokenGroup); diff --git a/VX-API/GetLastErrorEx.cpp b/VX-API/GetLastErrorFromTeb.cpp similarity index 66% rename from VX-API/GetLastErrorEx.cpp rename to VX-API/GetLastErrorFromTeb.cpp index d719a3d..b701430 100644 --- a/VX-API/GetLastErrorEx.cpp +++ b/VX-API/GetLastErrorFromTeb.cpp @@ -1,6 +1,6 @@ #include "Win32Helper.h" -DWORD GetLastErrorEx(VOID) +DWORD GetLastErrorFromTeb(VOID) { return GetTeb()->LastErrorValue; } \ No newline at end of file diff --git a/VX-API/GetPeb.cpp b/VX-API/GetPeb.cpp index fe4af01..3e72dba 100644 --- a/VX-API/GetPeb.cpp +++ b/VX-API/GetPeb.cpp @@ -9,7 +9,7 @@ PPEB GetPeb(VOID) #endif } -PPEB GetPebEx(VOID) +PPEB GetPebFromTeb(VOID) { PTEB Teb; #if defined(_WIN64) diff --git a/VX-API/HashFileByMsiFileHashTable.cpp b/VX-API/HashFileByMsiFileHashTable.cpp index c9033bd..fb2525f 100644 --- a/VX-API/HashFileByMsiFileHashTable.cpp +++ b/VX-API/HashFileByMsiFileHashTable.cpp @@ -1,7 +1,7 @@ #include "Win32Helper.h" //NOTE: PULONG must be pointed to an array of ULONG integers e.g. ULONG FileHash[4] = { 0 }; -BOOL HashFileByMsiFileHashTableW(PWCHAR Path, PULONG FileHash) +BOOL HashFileByMsiFileHashTableW(_In_ PWCHAR Path, _Inout_ PULONG FileHash) { typedef struct _MSIFILEHASHINFO { ULONG dwFileHashInfoSize; @@ -44,7 +44,7 @@ EXIT_ROUTINE: return bFlag; } -BOOL HashFileByMsiFileHashTableA(PCHAR Path, PULONG FileHash) +BOOL HashFileByMsiFileHashTableA(_In_ PCHAR Path, _Inout_ PULONG FileHash) { typedef struct _MSIFILEHASHINFO { ULONG dwFileHashInfoSize; diff --git a/VX-API/HashStringDjb2.cpp b/VX-API/HashStringDjb2.cpp index 58660cd..d551880 100644 --- a/VX-API/HashStringDjb2.cpp +++ b/VX-API/HashStringDjb2.cpp @@ -1,6 +1,6 @@ #include "Win32Helper.h" -DWORD HashStringDjb2A(PCHAR String) +DWORD HashStringDjb2A(_In_ PCHAR String) { ULONG Hash = 5381; INT c; @@ -11,7 +11,7 @@ DWORD HashStringDjb2A(PCHAR String) return Hash; } -DWORD HashStringDjb2W(PWCHAR String) +DWORD HashStringDjb2W(_In_ PWCHAR String) { ULONG Hash = 5381; INT c; diff --git a/VX-API/HashStringFowlerNollVoVariant1a.cpp b/VX-API/HashStringFowlerNollVoVariant1a.cpp index 08b5558..3cbbbaa 100644 --- a/VX-API/HashStringFowlerNollVoVariant1a.cpp +++ b/VX-API/HashStringFowlerNollVoVariant1a.cpp @@ -1,6 +1,6 @@ #include "Win32Helper.h" -ULONG HashStringFowlerNollVoVariant1aA(PCHAR String) +ULONG HashStringFowlerNollVoVariant1aA(_In_ PCHAR String) { ULONG Hash = 0x811c9dc5; @@ -13,7 +13,7 @@ ULONG HashStringFowlerNollVoVariant1aA(PCHAR String) return Hash; } -ULONG HashStringFowlerNollVoVariant1aW(PWCHAR String) +ULONG HashStringFowlerNollVoVariant1aW(_In_ PWCHAR String) { ULONG Hash = 0x811c9dc5; diff --git a/VX-API/HashStringJenkinsOneAtATime32Bit.cpp b/VX-API/HashStringJenkinsOneAtATime32Bit.cpp index a1728ac..b64ac23 100644 --- a/VX-API/HashStringJenkinsOneAtATime32Bit.cpp +++ b/VX-API/HashStringJenkinsOneAtATime32Bit.cpp @@ -1,6 +1,6 @@ #include "Win32Helper.h" -UINT32 HashStringJenkinsOneAtATime32BitA(PCHAR String) +UINT32 HashStringJenkinsOneAtATime32BitA(_In_ PCHAR String) { SIZE_T Index = 0; UINT32 Hash = 0; @@ -20,7 +20,7 @@ UINT32 HashStringJenkinsOneAtATime32BitA(PCHAR String) return Hash; } -UINT32 HashStringJenkinsOneAtATime32BitW(PWCHAR String) +UINT32 HashStringJenkinsOneAtATime32BitW(_In_ PWCHAR String) { SIZE_T Index = 0; UINT32 Hash = 0; diff --git a/VX-API/HashStringLoseLose.cpp b/VX-API/HashStringLoseLose.cpp index 5a9e141..f14157a 100644 --- a/VX-API/HashStringLoseLose.cpp +++ b/VX-API/HashStringLoseLose.cpp @@ -1,6 +1,6 @@ #include "Win32Helper.h" -DWORD HashStringLoseLoseA(PCHAR String) +DWORD HashStringLoseLoseA(_In_ PCHAR String) { ULONG Hash = 0; INT c; @@ -11,7 +11,7 @@ DWORD HashStringLoseLoseA(PCHAR String) return Hash; } -DWORD HashStringLoseLoseW(PWCHAR String) +DWORD HashStringLoseLoseW(_In_ PWCHAR String) { ULONG Hash = 0; INT c; diff --git a/VX-API/HashStringRotr32.cpp b/VX-API/HashStringRotr32.cpp index f47fe5d..fb04578 100644 --- a/VX-API/HashStringRotr32.cpp +++ b/VX-API/HashStringRotr32.cpp @@ -10,7 +10,7 @@ UINT32 HashStringRotr32SubA(UINT32 Value, UINT Count) #pragma warning( pop ) } -INT HashStringRotr32A(PCHAR String) +INT HashStringRotr32A(_In_ PCHAR String) { INT Value = 0; @@ -30,7 +30,7 @@ UINT32 HashStringRotr32SubW(UINT32 Value, UINT Count) #pragma warning( pop ) } -INT HashStringRotr32W(PWCHAR String) +INT HashStringRotr32W(_In_ PWCHAR String) { INT Value = 0; diff --git a/VX-API/HashStringSdbm.cpp b/VX-API/HashStringSdbm.cpp index b3d56c5..db0bbc4 100644 --- a/VX-API/HashStringSdbm.cpp +++ b/VX-API/HashStringSdbm.cpp @@ -1,6 +1,6 @@ #include "Win32Helper.h" -DWORD HashStringSdbmA(PCHAR String) +DWORD HashStringSdbmA(_In_ PCHAR String) { ULONG Hash = 0; INT c; @@ -11,7 +11,7 @@ DWORD HashStringSdbmA(PCHAR String) return Hash; } -DWORD HashStringSdbmW(PWCHAR String) +DWORD HashStringSdbmW(_In_ PWCHAR String) { ULONG Hash = 0; INT c; diff --git a/VX-API/HashStringSuperFastHash.cpp b/VX-API/HashStringSuperFastHash.cpp index 968bbfc..d74571e 100644 --- a/VX-API/HashStringSuperFastHash.cpp +++ b/VX-API/HashStringSuperFastHash.cpp @@ -1,6 +1,6 @@ #include "Win32Helper.h" -UINT32 HashStringSuperFastHashA(PCHAR String) +UINT32 HashStringSuperFastHashA(_In_ PCHAR String) { INT Length = (INT)StringLengthA(String); UINT32 Hash = Length; @@ -56,7 +56,7 @@ UINT32 HashStringSuperFastHashA(PCHAR String) return Hash; } -UINT32 HashStringSuperFastHashW(PWCHAR String) +UINT32 HashStringSuperFastHashW(_In_ PWCHAR String) { INT Length = (INT)StringLengthW(String); UINT32 Hash = Length; diff --git a/VX-API/HashStringUnknownGenericHash1.cpp b/VX-API/HashStringUnknownGenericHash1.cpp index bce09bd..a2d8868 100644 --- a/VX-API/HashStringUnknownGenericHash1.cpp +++ b/VX-API/HashStringUnknownGenericHash1.cpp @@ -1,6 +1,6 @@ #include "Win32Helper.h" -INT HashStringUnknownGenericHash1A(PCHAR String) +INT HashStringUnknownGenericHash1A(_In_ PCHAR String) { PCHAR Pointer; INT Generic; @@ -20,7 +20,7 @@ INT HashStringUnknownGenericHash1A(PCHAR String) return Hash; } -INT HashStringUnknownGenericHash1W(PWCHAR String) +INT HashStringUnknownGenericHash1W(_In_ PWCHAR String) { PWCHAR Pointer; INT Generic; diff --git a/VX-API/IsProcessRunningAsAdmin.cpp b/VX-API/IsProcessRunningAsAdmin.cpp index d917c7e..58d967f 100644 --- a/VX-API/IsProcessRunningAsAdmin.cpp +++ b/VX-API/IsProcessRunningAsAdmin.cpp @@ -18,7 +18,7 @@ BOOL IsProcessRunningAsAdmin(VOID) EXIT_ROUTINE: if (!bFlag) - SetLastErrorEx(ERROR_ACCESS_DENIED); + SetLastErrorInTeb(ERROR_ACCESS_DENIED); if (hToken) CloseHandle(hToken); diff --git a/VX-API/MasqueradePebAsExplorerEx.cpp b/VX-API/MasqueradePebAsExplorer.cpp similarity index 97% rename from VX-API/MasqueradePebAsExplorerEx.cpp rename to VX-API/MasqueradePebAsExplorer.cpp index a6b990b..f647995 100644 --- a/VX-API/MasqueradePebAsExplorerEx.cpp +++ b/VX-API/MasqueradePebAsExplorer.cpp @@ -1,6 +1,6 @@ #include "Win32Helper.h" -BOOL MasqueradePebAsExplorerEx(VOID) +BOOL MasqueradePebAsExplorer(VOID) { typedef NTSTATUS(NTAPI* RTLENTERCRITICALSECTION)(PRTL_CRITICAL_SECTION CriticalSection); typedef NTSTATUS(NTAPI* RTLLEAVECRITICALSECTION)(PRTL_CRITICAL_SECTION CriticalSection); diff --git a/VX-API/OleGetClipboardData.cpp b/VX-API/OleGetClipboardData.cpp index ec48212..1e8461f 100644 --- a/VX-API/OleGetClipboardData.cpp +++ b/VX-API/OleGetClipboardData.cpp @@ -38,7 +38,7 @@ EXIT_ROUTINE: if (Result != S_OK) dwError = Win32FromHResult(Result); else - dwError = GetLastErrorEx(); + dwError = GetLastErrorFromTeb(); } #pragma warning( push ) @@ -92,7 +92,7 @@ EXIT_ROUTINE: if (Result != S_OK) dwError = Win32FromHResult(Result); else - dwError = GetLastErrorEx(); + dwError = GetLastErrorFromTeb(); } #pragma warning( push ) diff --git a/VX-API/SetLastErrorEx.cpp b/VX-API/SetLastErrorInTeb.cpp similarity index 60% rename from VX-API/SetLastErrorEx.cpp rename to VX-API/SetLastErrorInTeb.cpp index a25d016..9fcbcb6 100644 --- a/VX-API/SetLastErrorEx.cpp +++ b/VX-API/SetLastErrorInTeb.cpp @@ -1,6 +1,6 @@ #include "Win32Helper.h" -VOID SetLastErrorEx(DWORD ErrorCode) +VOID SetLastErrorInTeb(_In_ DWORD ErrorCode) { GetTeb()->LastErrorValue = ErrorCode; } \ No newline at end of file diff --git a/VX-API/SetLastNtStatusEx.cpp b/VX-API/SetLastNtStatusInTeb.cpp similarity index 57% rename from VX-API/SetLastNtStatusEx.cpp rename to VX-API/SetLastNtStatusInTeb.cpp index a5ce333..f6fa3e8 100644 --- a/VX-API/SetLastNtStatusEx.cpp +++ b/VX-API/SetLastNtStatusInTeb.cpp @@ -1,6 +1,6 @@ #include "Win32Helper.h" -VOID SetLastNtStatusEx(NTSTATUS Status) +VOID SetLastNtStatusInTeb(_In_ NTSTATUS Status) { GetTeb()->LastStatusValue = Status; } \ No newline at end of file diff --git a/VX-API/UacBypassFodHelperMethod.cpp b/VX-API/UacBypassFodHelperMethod.cpp index c616546..6c6fb79 100644 --- a/VX-API/UacBypassFodHelperMethod.cpp +++ b/VX-API/UacBypassFodHelperMethod.cpp @@ -40,7 +40,7 @@ BOOL UacBypassFodHelperMethodW(PWCHAR PathToBinaryToExecute, PPROCESS_INFORMATIO if (!RegGetValueW(hkResult, NULL, L"DelegateExecute", RRF_RT_REG_SZ, NULL, pvData, &dwError)) { - if (GetLastErrorEx() == ERROR_FILE_NOT_FOUND) + if (GetLastErrorFromTeb() == ERROR_FILE_NOT_FOUND) { if (!RegSetKeyValueW(hkResult, NULL, L"DelegateExecute", REG_SZ, NULL, 0)) goto EXIT_ROUTINE; @@ -64,7 +64,7 @@ BOOL UacBypassFodHelperMethodW(PWCHAR PathToBinaryToExecute, PPROCESS_INFORMATIO EXIT_ROUTINE: if(!bFlag) - dwError = GetLastErrorEx(); + dwError = GetLastErrorFromTeb(); if (hkResult) RegCloseKey(hkResult); @@ -94,7 +94,7 @@ BOOL UacBypassFodHelperMethodA(PCHAR PathToBinaryToExecute, PPROCESS_INFORMATION if (!RegGetValueA(hkResult, NULL, "DelegateExecute", RRF_RT_REG_SZ, NULL, pvData, &dwError)) { - if (GetLastErrorEx() == ERROR_FILE_NOT_FOUND) + if (GetLastErrorFromTeb() == ERROR_FILE_NOT_FOUND) { if (!RegSetKeyValueA(hkResult, NULL, "DelegateExecute", REG_SZ, NULL, 0)) goto EXIT_ROUTINE; @@ -118,7 +118,7 @@ BOOL UacBypassFodHelperMethodA(PCHAR PathToBinaryToExecute, PPROCESS_INFORMATION EXIT_ROUTINE: if (!bFlag) - dwError = GetLastErrorEx(); + dwError = GetLastErrorFromTeb(); if (hkResult) RegCloseKey(hkResult); diff --git a/VX-API/UrlDownloadToFileSynchronous.cpp b/VX-API/UrlDownloadToFileSynchronous.cpp index aba9d09..8212378 100644 --- a/VX-API/UrlDownloadToFileSynchronous.cpp +++ b/VX-API/UrlDownloadToFileSynchronous.cpp @@ -88,7 +88,7 @@ EXIT_ROUTINE: if (Result != S_OK) dwError = Win32FromHResult(Result); else - dwError = GetLastErrorEx(); + dwError = GetLastErrorFromTeb(); } if (Urlmon) @@ -185,7 +185,7 @@ EXIT_ROUTINE: if (Result != S_OK) dwError = Win32FromHResult(Result); else - dwError = GetLastErrorEx(); + dwError = GetLastErrorFromTeb(); } if (Urlmon) diff --git a/VX-API/VX-API.vcxproj b/VX-API/VX-API.vcxproj index 1b92b92..76f31b3 100644 --- a/VX-API/VX-API.vcxproj +++ b/VX-API/VX-API.vcxproj @@ -158,7 +158,7 @@ - + @@ -195,7 +195,7 @@ - + @@ -205,8 +205,8 @@ - - + + diff --git a/VX-API/VX-API.vcxproj.filters b/VX-API/VX-API.vcxproj.filters index fea2c1e..fe5d061 100644 --- a/VX-API/VX-API.vcxproj.filters +++ b/VX-API/VX-API.vcxproj.filters @@ -111,16 +111,16 @@ Source Files\String Manipulation\String Conversion - + Source Files\Windows API Helper Functions\Error Handling Source Files\Windows API Helper Functions\Error Handling - + Source Files\Windows API Helper Functions\Error Handling - + Source Files\Windows API Helper Functions\Error Handling @@ -294,7 +294,7 @@ Source Files\Windows API Helper Functions\Cryptography Related - + Source Files\Windows API Helper Functions\Evasion diff --git a/VX-API/Win32FromHResult.cpp b/VX-API/Win32FromHResult.cpp index 1423b79..a9d0f10 100644 --- a/VX-API/Win32FromHResult.cpp +++ b/VX-API/Win32FromHResult.cpp @@ -1,6 +1,6 @@ #include "Win32Helper.h" -DWORD Win32FromHResult(HRESULT Result) +DWORD Win32FromHResult(_In_ HRESULT Result) { if ((Result & 0xFFFF0000) == MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, 0)) return HRESULT_CODE(Result); diff --git a/VX-API/Win32Helper.h b/VX-API/Win32Helper.h index 8550734..68fc2ad 100644 --- a/VX-API/Win32Helper.h +++ b/VX-API/Win32Helper.h @@ -10,41 +10,42 @@ #define Get16Bits(d) ((((UINT32)(((CONST UINT8*)(d))[1])) << 8) +(UINT32)(((CONST UINT8*)(d))[0])) //error handling -DWORD GetLastErrorEx(VOID); +DWORD GetLastErrorFromTeb(VOID); NTSTATUS GetLastNtStatusEx(VOID); -VOID SetLastErrorEx(DWORD ErrorCode); -VOID SetLastNtStatusEx(NTSTATUS Status); -DWORD Win32FromHResult(HRESULT Result); +VOID SetLastErrorInTeb(_In_ DWORD ErrorCode); +VOID SetLastNtStatusInTeb(_In_ NTSTATUS Status); +DWORD Win32FromHResult(_In_ HRESULT Result); //cryptography related -DWORD HashStringDjb2A(PCHAR String); -DWORD HashStringDjb2W(PWCHAR String); -ULONG HashStringFowlerNollVoVariant1aA(PCHAR String); -ULONG HashStringFowlerNollVoVariant1aW(PWCHAR String); -UINT32 HashStringJenkinsOneAtATime32BitA(PCHAR String); -UINT32 HashStringJenkinsOneAtATime32BitW(PWCHAR String); -DWORD HashStringLoseLoseA(PCHAR String); -DWORD HashStringLoseLoseW(PWCHAR String); -INT HashStringRotr32A(PCHAR String); -INT HashStringRotr32W(PWCHAR String); -DWORD HashStringSdbmA(PCHAR String); -DWORD HashStringSdbmW(PWCHAR String); -UINT32 HashStringSuperFastHashA(PCHAR String); -UINT32 HashStringSuperFastHashW(PWCHAR String); -INT HashStringUnknownGenericHash1A(PCHAR String); -INT HashStringUnknownGenericHash1W(PWCHAR String); -INT CreatePseudoRandomInteger(ULONG Seed); -PWCHAR CreatePseudoRandomStringW(SIZE_T dwLength, ULONG Seed); -PCHAR CreatePseudoRandomStringA(SIZE_T dwLength, ULONG Seed); -BOOL HashFileByMsiFileHashTableW(PWCHAR Path, PULONG FileHash); -BOOL HashFileByMsiFileHashTableA(PCHAR Path, PULONG FileHash); +DWORD HashStringDjb2A(_In_ PCHAR String); +DWORD HashStringDjb2W(_In_ PWCHAR String); +ULONG HashStringFowlerNollVoVariant1aA(_In_ PCHAR String); +ULONG HashStringFowlerNollVoVariant1aW(_In_ PWCHAR String); +UINT32 HashStringJenkinsOneAtATime32BitA(_In_ PCHAR String); +UINT32 HashStringJenkinsOneAtATime32BitW(_In_ PWCHAR String); +DWORD HashStringLoseLoseA(_In_ PCHAR String); +DWORD HashStringLoseLoseW(_In_ PWCHAR String); +INT HashStringRotr32A(_In_ PCHAR String); +INT HashStringRotr32W(_In_ PWCHAR String); +DWORD HashStringSdbmA(_In_ PCHAR String); +DWORD HashStringSdbmW(_In_ PWCHAR String); +UINT32 HashStringSuperFastHashA(_In_ PCHAR String); +UINT32 HashStringSuperFastHashW(_In_ PWCHAR String); +INT HashStringUnknownGenericHash1A(_In_ PCHAR String); +INT HashStringUnknownGenericHash1W(_In_ PWCHAR String); BOOL CreateMd5HashFromFilePathW(_In_ PWCHAR FilePath, _Inout_ PWCHAR Md5Hash); BOOL CreateMd5HashFromFilePathA(_In_ PCHAR FilePath, _Inout_ PCHAR Md5Hash); +INT CreatePseudoRandomInteger(_In_ ULONG Seed); +PWCHAR CreatePseudoRandomStringW(_In_ SIZE_T dwLength, _In_ ULONG Seed); +PCHAR CreatePseudoRandomStringA(_In_ SIZE_T dwLength, _In_ ULONG Seed); +BOOL HashFileByMsiFileHashTableW(_In_ PWCHAR Path, _Inout_ PULONG FileHash); +BOOL HashFileByMsiFileHashTableA(_In_ PCHAR Path, _Inout_ PULONG FileHash); + //library loading PTEB GetTeb(VOID); PPEB GetPeb(VOID); -PPEB GetPebEx(VOID); +PPEB GetPebFromTeb(VOID); PKUSER_SHARED_DATA GetKUserSharedData(VOID); PRTL_USER_PROCESS_PARAMETERS GetRtlUserProcessParameters(VOID); DWORD64 __stdcall GetProcAddressDjb2(DWORD64 ModuleBase, DWORD64 Hash); @@ -117,7 +118,7 @@ HRESULT CreateProcessFromIHxInteractiveUserW(PWCHAR UriFile); HRESULT CreateProcessFromIHxInteractiveUserA(PCHAR UriFile); HRESULT CreateProcessFromIHxHelpPaneServerW(PWCHAR UriFile); HRESULT CreateProcessFromIHxHelpPaneServerA(PCHAR UriFile); -BOOL MasqueradePebAsExplorerEx(VOID); +BOOL MasqueradePebAsExplorer(VOID); BOOL CreateFileFromDsCopyFromSharedFileW(PWCHAR NewFileName, PWCHAR FileToClone); BOOL CreateFileFromDsCopyFromSharedFileA(PCHAR NewFileName, PCHAR FileToClone); BOOL UacBypassFodHelperMethodA(PCHAR PathToBinaryToExecute, PPROCESS_INFORMATION Pi);