Skip to content

Commit 33f6a5d

Browse files
committed
Added VxKex 1.1.2.1428 original source code
1 parent 650d7fa commit 33f6a5d

File tree

116 files changed

+1370
-379
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

116 files changed

+1370
-379
lines changed

.github/FUNDING.yml

Lines changed: 0 additions & 14 deletions
This file was deleted.

00-Common Headers/KexComm.h

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,41 @@
219219
# define PopulationCount16 __popcnt16
220220
# define PopulationCount __popcnt
221221
# define PopulationCount64 __popcnt64
222+
223+
# define InterlockedIncrement _InterlockedIncrement
224+
# define InterlockedIncrement16 _InterlockedIncrement16
225+
# define InterlockedIncrement64 _InterlockedIncrement64
226+
227+
# define InterlockedDecrement _InterlockedDecrement
228+
# define InterlockedDecrement16 _InterlockedDecrement16
229+
# define InterlockedDecrement64 _InterlockedDecrement64
230+
231+
# define InterlockedAnd _InterlockedAnd
232+
# define InterlockedAnd8 _InterlockedAnd8
233+
# define InterlockedAnd16 _InterlockedAnd16
234+
# define InterlockedAnd64 _InterlockedAnd64
235+
236+
# define InterlockedOr _InterlockedOr
237+
# define InterlockedOr8 _InterlockedOr8
238+
# define InterlockedOr16 _InterlockedOr16
239+
# define InterlockedOr64 _InterlockedOr64
240+
241+
# define InterlockedXor _InterlockedXor
242+
# define InterlockedXor8 _InterlockedXor8
243+
# define InterlockedXor16 _InterlockedXor16
244+
# define InterlockedXor64 _InterlockedXor64
245+
246+
# define InterlockedCompareExchange _InterlockedCompareExchange
247+
# define InterlockedCompareExchange8 _InterlockedCompareExchange8
248+
# define InterlockedCompareExchange16 _InterlockedCompareExchange16
249+
# define InterlockedCompareExchange64 _InterlockedCompareExchange64
250+
251+
# undef InterlockedCompareExchangePointer
252+
# ifdef _M_X64
253+
# define InterlockedCompareExchangePointer(PointerToPointer, Pointer, Compare) ((PVOID) _InterlockedCompareExchange64((LONGLONG VOLATILE *) (PointerToPointer), (LONGLONG) (Pointer), (LONGLONG) Compare))
254+
# else
255+
# define InterlockedCompareExchangePointer(PointerToPointer, Pointer, Compare) ((PVOID) _InterlockedCompareExchange((LONG VOLATILE *) (PointerToPointer), (LONG) (Pointer), (LONG) Compare))
256+
# endif
222257
#pragma endregion
223258

224259
#pragma region Convenience Macros

00-Common Headers/KexDll.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -303,6 +303,7 @@ typedef struct _KEX_PROCESS_DATA {
303303
PVOID BaseDllBase; // Kernel32 base address
304304
HANDLE BaseNamedObjects; // object directory handle
305305
HANDLE UntrustedNamedObjects;
306+
HANDLE KsecDD; // handle to \Device\KsecDD
306307
} TYPEDEF_TYPE_NAME(KEX_PROCESS_DATA);
307308

308309
#pragma endregion
@@ -467,6 +468,10 @@ KEXAPI NTSTATUS NTAPI KexRtlCreateUntrustedDirectoryObject(
467468
IN ACCESS_MASK DesiredAccess,
468469
IN POBJECT_ATTRIBUTES ObjectAttributes);
469470

471+
KEXAPI NTSTATUS NTAPI KexRtlGenerateRandomData(
472+
OUT PVOID RandomBuffer,
473+
IN ULONG NumberOfBytesToGenerate);
474+
470475
#ifdef KEX_ARCH_X64
471476
# define KexRtlCurrentProcessBitness() (64)
472477
#else

00-Common Headers/KxBase.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -555,6 +555,14 @@ typedef enum _APP_POLICY_THREAD_INITIALIZATION_TYPE {
555555
AppPolicyThreadInitializationType_InitializeWinRT
556556
} TYPEDEF_TYPE_NAME(APP_POLICY_THREAD_INITIALIZATION_TYPE);
557557

558+
typedef enum _FILE_INFO_BY_NAME_CLASS {
559+
FileStatByNameInfo,
560+
FileStatLxByNameInfo,
561+
FileCaseSensitiveByNameInfo,
562+
FileStatBasicByNameInfo,
563+
MaximumFileInfoByNameClass
564+
} TYPEDEF_TYPE_NAME(FILE_INFO_BY_NAME_CLASS);
565+
558566
#pragma endregion
559567

560568
#if defined(KEX_ENV_WIN32)

00-Common Headers/KxUser.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,18 @@ typedef enum _ORIENTATION_PREFERENCE {
149149
ORIENTATION_PREFERENCE_PORTRAIT_FLIPPED
150150
} TYPEDEF_TYPE_NAME(ORIENTATION_PREFERENCE);
151151

152+
typedef enum _AR_STATE {
153+
AR_ENABLED = 0x0,
154+
AR_DISABLED = 0x1,
155+
AR_SUPPRESSED = 0x2,
156+
AR_REMOTESESSION = 0x4,
157+
AR_MULTIMON = 0x8,
158+
AR_NOSENSOR = 0x10,
159+
AR_NOT_SUPPORTED = 0x20,
160+
AR_DOCKED = 0x40,
161+
AR_LAPTOP = 0x80
162+
} TYPEDEF_TYPE_NAME(AR_STATE);
163+
152164
typedef enum _PROCESS_UICONTEXT {
153165
PROCESS_UICONTEXT_DESKTOP,
154166
PROCESS_UICONTEXT_IMMERSIVE,

00-Common Headers/NtDll.h

Lines changed: 154 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -570,6 +570,76 @@ typedef struct _MEM_ADDRESS_REQUIREMENTS {
570570
#define LDR_GET_DLL_HANDLE_EX_PIN 0x0002 // The DLL will remain loaded until the process exits.
571571
#define LDR_GET_DLL_HANDLE_EX_UNKNOWN 0x0004 // Is valid, but appears to do nothing.
572572

573+
#define SECURITY_LOCAL_ACCOUNT_RID (0x00000071L)
574+
#define SECURITY_LOCAL_ACCOUNT_AND_ADMIN_RID (0x00000072L)
575+
576+
#define SECURITY_APP_PACKAGE_AUTHORITY {0,0,0,0,0,15}
577+
#define SECURITY_APP_PACKAGE_BASE_RID (0x00000002L)
578+
#define SECURITY_BUILTIN_APP_PACKAGE_RID_COUNT (2L)
579+
#define SECURITY_APP_PACKAGE_RID_COUNT (8L)
580+
#define SECURITY_CAPABILITY_BASE_RID (0x00000003L)
581+
#define SECURITY_CAPABILITY_APP_RID (0x000000400)
582+
#define SECURITY_BUILTIN_CAPABILITY_RID_COUNT (2L)
583+
#define SECURITY_CAPABILITY_RID_COUNT (5L)
584+
#define SECURITY_PARENT_PACKAGE_RID_COUNT (SECURITY_APP_PACKAGE_RID_COUNT)
585+
#define SECURITY_CHILD_PACKAGE_RID_COUNT (12L)
586+
587+
#define SECURITY_BUILTIN_PACKAGE_ANY_PACKAGE (0x00000001L)
588+
#define SECURITY_BUILTIN_PACKAGE_ANY_RESTRICTED_PACKAGE (0x00000002L)
589+
590+
#define SECURITY_CAPABILITY_INTERNET_CLIENT (0x00000001L)
591+
#define SECURITY_CAPABILITY_INTERNET_CLIENT_SERVER (0x00000002L)
592+
#define SECURITY_CAPABILITY_PRIVATE_NETWORK_CLIENT_SERVER (0x00000003L)
593+
#define SECURITY_CAPABILITY_PICTURES_LIBRARY (0x00000004L)
594+
#define SECURITY_CAPABILITY_VIDEOS_LIBRARY (0x00000005L)
595+
#define SECURITY_CAPABILITY_MUSIC_LIBRARY (0x00000006L)
596+
#define SECURITY_CAPABILITY_DOCUMENTS_LIBRARY (0x00000007L)
597+
#define SECURITY_CAPABILITY_ENTERPRISE_AUTHENTICATION (0x00000008L)
598+
#define SECURITY_CAPABILITY_SHARED_USER_CERTIFICATES (0x00000009L)
599+
#define SECURITY_CAPABILITY_REMOVABLE_STORAGE (0x0000000AL)
600+
#define SECURITY_CAPABILITY_APPOINTMENTS (0x0000000BL)
601+
#define SECURITY_CAPABILITY_CONTACTS (0x0000000CL)
602+
603+
#define SECURITY_AUTHENTICATION_AUTHORITY {0,0,0,0,0,18}
604+
#define SECURITY_AUTHENTICATION_AUTHORITY_RID_COUNT (1L)
605+
#define SECURITY_AUTHENTICATION_AUTHORITY_ASSERTED_RID (0x00000001L)
606+
#define SECURITY_AUTHENTICATION_SERVICE_ASSERTED_RID (0x00000002L)
607+
#define SECURITY_AUTHENTICATION_FRESH_KEY_AUTH_RID (0x00000003L)
608+
#define SECURITY_AUTHENTICATION_KEY_TRUST_RID (0x00000004L)
609+
#define SECURITY_AUTHENTICATION_KEY_PROPERTY_MFA_RID (0x00000005L)
610+
#define SECURITY_AUTHENTICATION_KEY_PROPERTY_ATTESTATION_RID (0x00000006L)
611+
612+
#define SECURITY_PROCESS_TRUST_AUTHORITY {0,0,0,0,0,19}
613+
#define SECURITY_PROCESS_TRUST_AUTHORITY_RID_COUNT (2L)
614+
#define SECURITY_PROCESS_PROTECTION_TYPE_FULL_RID (0x00000400L)
615+
#define SECURITY_PROCESS_PROTECTION_TYPE_LITE_RID (0x00000200L)
616+
#define SECURITY_PROCESS_PROTECTION_TYPE_NONE_RID (0x00000000L)
617+
#define SECURITY_PROCESS_PROTECTION_LEVEL_WINTCB_RID (0x00002000L)
618+
#define SECURITY_PROCESS_PROTECTION_LEVEL_WINDOWS_RID (0x00001000L)
619+
#define SECURITY_PROCESS_PROTECTION_LEVEL_APP_RID (0x00000800L)
620+
#define SECURITY_PROCESS_PROTECTION_LEVEL_ANTIMALWARE_RID (0x00000600L)
621+
#define SECURITY_PROCESS_PROTECTION_LEVEL_AUTHENTICODE_RID (0x00000400L)
622+
#define SECURITY_PROCESS_PROTECTION_LEVEL_NONE_RID (0x00000000L)
623+
624+
#define DOMAIN_ALIAS_RID_RDS_REMOTE_ACCESS_SERVERS (0x0000023FL)
625+
#define DOMAIN_ALIAS_RID_RDS_ENDPOINT_SERVERS (0x00000240L)
626+
#define DOMAIN_ALIAS_RID_RDS_MANAGEMENT_SERVERS (0x00000241L)
627+
#define DOMAIN_ALIAS_RID_HYPER_V_ADMINS (0x00000242L)
628+
#define DOMAIN_ALIAS_RID_ACCESS_CONTROL_ASSISTANCE_OPS (0x00000243L)
629+
#define DOMAIN_ALIAS_RID_REMOTE_MANAGEMENT_USERS (0x00000244L)
630+
#define DOMAIN_ALIAS_RID_DEFAULT_ACCOUNT (0x00000245L)
631+
#define DOMAIN_ALIAS_RID_STORAGE_REPLICA_ADMINS (0x00000246L)
632+
#define DOMAIN_ALIAS_RID_DEVICE_OWNERS (0x00000247L)
633+
634+
#define DOMAIN_USER_RID_DEFAULT_ACCOUNT (0x000001F7L)
635+
#define DOMAIN_USER_RID_WDAG_ACCOUNT (0x000001F8L)
636+
637+
#define DOMAIN_GROUP_RID_CLONEABLE_CONTROLLERS (0x0000020AL)
638+
#define DOMAIN_GROUP_RID_CDC_RESERVED (0x0000020CL)
639+
#define DOMAIN_GROUP_RID_PROTECTED_USERS (0x0000020DL)
640+
#define DOMAIN_GROUP_RID_KEY_ADMINS (0x0000020EL)
641+
#define DOMAIN_GROUP_RID_ENTERPRISE_KEY_ADMINS (0x0000020FL)
642+
573643
#pragma endregion
574644

575645
#pragma region Data Type Definitions
@@ -1671,6 +1741,7 @@ typedef struct _KUSER_SHARED_DATA {
16711741
KSYSTEM_TIME VOLATILE SystemTime;
16721742
KSYSTEM_TIME VOLATILE TimeZoneBias;
16731743

1744+
// Both are 0x8664 on 64-bit systems.
16741745
USHORT ImageNumberLow;
16751746
USHORT ImageNumberHigh;
16761747

@@ -1696,7 +1767,6 @@ typedef struct _KUSER_SHARED_DATA {
16961767
BOOLEAN ProcessorFeatures[PROCESSOR_FEATURE_MAX];
16971768

16981769
// these two NOT VALID FOR 64BIT since they are ULONGs.
1699-
// They are however valid for wow64 apps.
17001770
ULONG MmHighestUserAddress;
17011771
ULONG MmSystemRangeStart;
17021772

@@ -1773,22 +1843,41 @@ typedef struct _KUSER_SHARED_DATA {
17731843
ULONG CookiePad[1];
17741844

17751845
LONGLONG ConsoleSessionForegroundProcessId;
1846+
1847+
//
1848+
// Wow64SharedInformation used to be a table of function pointers into
1849+
// the WOW64 NTDLL, but with certain Win7 security updates installed,
1850+
// these are zeroed out because they decrease the effectiveness of ASLR.
1851+
//
1852+
// DO NOT USE.
1853+
//
1854+
17761855
ULONG Wow64SharedInformation[0x10];
1856+
17771857
USHORT UserModeGlobalLogger[16];
17781858
ULONG LangGenerationCount;
17791859
ULONGLONG Reserved5;
17801860
ULONGLONG VOLATILE InterruptTimeBias;
17811861
ULONGLONG VOLATILE TscQpcBias;
1862+
1863+
// The number of logical processors. For a 4C8T system, this will be 8.
17821864
ULONG VOLATILE ActiveProcessorCount;
1865+
1866+
// Number of processor groups. Usually it's 1 on consumer systems.
17831867
USHORT VOLATILE ActiveGroupCount;
1868+
17841869
USHORT Reserved4;
17851870
ULONG VOLATILE AitSamplingValue;
17861871
ULONG VOLATILE AppCompatFlag;
17871872

1873+
//
17881874
// The following two members are often set to zero with certain Win7
17891875
// security updates installed, because they decrease the effectiveness
1790-
// of ASLR. Do not use these to obtain the address of NTDLL - they are
1791-
// not reliable.
1876+
// of ASLR.
1877+
//
1878+
// DO NOT USE.
1879+
//
1880+
17921881
ULONGLONG SystemDllNativeRelocation;
17931882
ULONG SystemDllWowRelocation;
17941883

@@ -2790,6 +2879,48 @@ typedef struct _RTL_BITMAP {
27902879
PULONG Buffer;
27912880
} TYPEDEF_TYPE_NAME(RTL_BITMAP);
27922881

2882+
GEN_STD_TYPEDEFS(SID_IDENTIFIER_AUTHORITY);
2883+
2884+
typedef enum _WELL_KNOWN_SID_TYPE {
2885+
WinApplicationPackageAuthoritySid = 83,
2886+
WinBuiltinAnyPackageSid = 84,
2887+
WinCapabilityInternetClientSid = 85,
2888+
WinCapabilityInternetClientServerSid = 86,
2889+
WinCapabilityPrivateNetworkClientServerSid = 87,
2890+
WinCapabilityPicturesLibrarySid = 88,
2891+
WinCapabilityVideosLibrarySid = 89,
2892+
WinCapabilityMusicLibrarySid = 90,
2893+
WinCapabilityDocumentsLibrarySid = 91,
2894+
WinCapabilitySharedUserCertificatesSid = 92,
2895+
WinCapabilityEnterpriseAuthenticationSid = 93,
2896+
WinCapabilityRemovableStorageSid = 94,
2897+
WinBuiltinRDSRemoteAccessServersSid = 95,
2898+
WinBuiltinRDSEndpointServersSid = 96,
2899+
WinBuiltinRDSManagementServersSid = 97,
2900+
WinUserModeDriversSid = 98,
2901+
WinBuiltinHyperVAdminsSid = 99,
2902+
WinAccountCloneableControllersSid = 100,
2903+
WinBuiltinAccessControlAssistanceOperatorsSid = 101,
2904+
WinBuiltinRemoteManagementUsersSid = 102,
2905+
WinAuthenticationAuthorityAssertedSid = 103,
2906+
WinAuthenticationServiceAssertedSid = 104,
2907+
WinLocalAccountSid = 105,
2908+
WinLocalAccountAndAdministratorSid = 106,
2909+
WinAccountProtectedUsersSid = 107,
2910+
WinCapabilityAppointmentsSid = 108,
2911+
WinCapabilityContactsSid = 109,
2912+
WinAccountDefaultSystemManagedSid = 110,
2913+
WinBuiltinDefaultSystemManagedGroupSid = 111,
2914+
WinBuiltinStorageReplicaAdminsSid = 112,
2915+
WinAccountKeyAdminsSid = 113,
2916+
WinAccountEnterpriseKeyAdminsSid = 114,
2917+
WinAuthenticationKeyTrustSid = 115,
2918+
WinAuthenticationKeyPropertyMFASid = 116,
2919+
WinAuthenticationKeyPropertyAttestationSid = 117,
2920+
WinAuthenticationFreshKeyAuthSid = 118,
2921+
WinBuiltinDeviceOwnersSid = 119,
2922+
} TYPEDEF_TYPE_NAME(WELL_KNOWN_SID_TYPE);
2923+
27932924
#pragma endregion
27942925

27952926
STATIC PKUSER_SHARED_DATA SharedUserData = (PKUSER_SHARED_DATA) 0x7FFE0000;
@@ -4272,6 +4403,26 @@ NTSYSAPI NTSTATUS NTAPI RtlSetSaclSecurityDescriptor(
42724403
IN PACL Sacl OPTIONAL,
42734404
IN BOOLEAN SaclDefaulted);
42744405

4406+
NTSYSAPI BOOLEAN NTAPI RtlValidSid(
4407+
IN PSID Sid);
4408+
4409+
NTSYSAPI PULONG NTAPI RtlSubAuthoritySid(
4410+
IN PSID Sid,
4411+
IN ULONG SubAuthority);
4412+
4413+
NTSYSAPI PUCHAR NTAPI RtlSubAuthorityCountSid(
4414+
IN PSID Sid);
4415+
4416+
NTSYSAPI NTSTATUS NTAPI RtlInitializeSid(
4417+
IN PSID Sid,
4418+
IN PCSID_IDENTIFIER_AUTHORITY IdentifierAuthority,
4419+
IN UCHAR SubAuthorityCount);
4420+
4421+
NTSYSAPI NTSTATUS NTAPI RtlCopySid(
4422+
IN ULONG DestinationSidLength,
4423+
OUT PSID DestinationSid,
4424+
IN PSID SourceSid);
4425+
42754426
#ifdef _M_X64
42764427
NTSYSAPI BOOLEAN NTAPI RtlAddFunctionTable(
42774428
IN PRUNTIME_FUNCTION FunctionTable,

00-Common Headers/vautogen.h

-2 Bytes
Binary file not shown.
229 Bytes
Binary file not shown.

00-Documentation/Changelog.txt

916 Bytes
Binary file not shown.
-33.5 KB
Binary file not shown.

0 commit comments

Comments
 (0)