@@ -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
27952926STATIC 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
42764427NTSYSAPI BOOLEAN NTAPI RtlAddFunctionTable (
42774428 IN PRUNTIME_FUNCTION FunctionTable ,
0 commit comments