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);