Add fuller PEB structure + Improved UNICODE_STRING + other define

This commit is contained in:
hakril
2017-12-04 10:01:40 +01:00
parent f03bb89ae6
commit 8f7adb8da1
14 changed files with 1774 additions and 30 deletions
+71 -1
View File
@@ -980,4 +980,74 @@
#define COMPRESSION_FORMAT_XPRESS_HUFF (0x0004)
#define COMPRESSION_ENGINE_STANDARD (0x0000)
#define COMPRESSION_ENGINE_MAXIMUM (0x0100)
#define COMPRESSION_ENGINE_HIBER (0x0200)
#define COMPRESSION_ENGINE_HIBER (0x0200)
#define FILE_DIRECTORY_FILE 0x00000001
#define FILE_WRITE_THROUGH 0x00000002
#define FILE_SEQUENTIAL_ONLY 0x00000004
#define FILE_NO_INTERMEDIATE_BUFFERING 0x00000008
#define FILE_SYNCHRONOUS_IO_ALERT 0x00000010
#define FILE_SYNCHRONOUS_IO_NONALERT 0x00000020
#define FILE_NON_DIRECTORY_FILE 0x00000040
#define FILE_CREATE_TREE_CONNECTION 0x00000080
#define FILE_COMPLETE_IF_OPLOCKED 0x00000100
#define FILE_NO_EA_KNOWLEDGE 0x00000200
#define FILE_OPEN_REMOTE_INSTANCE 0x00000400
#define FILE_RANDOM_ACCESS 0x00000800
#define FILE_DELETE_ON_CLOSE 0x00001000
#define FILE_OPEN_BY_FILE_ID 0x00002000
#define FILE_OPEN_FOR_BACKUP_INTENT 0x00004000
#define FILE_NO_COMPRESSION 0x00008000
#define FILE_OPEN_REQUIRING_OPLOCK 0x00010000
#define FILE_RESERVE_OPFILTER 0x00100000
#define FILE_OPEN_REPARSE_POINT 0x00200000
#define FILE_OPEN_NO_RECALL 0x00400000
#define FILE_OPEN_FOR_FREE_SPACE_QUERY 0x00800000
#define FILE_VALID_OPTION_FLAGS 0x00ffffff
#define FILE_VALID_PIPE_OPTION_FLAGS 0x00000032
#define FILE_VALID_MAILSLOT_OPTION_FLAGS 0x00000032
#define FILE_VALID_SET_FLAGS 0x00000036
#define FILE_SUPERSEDED 0x00000000
#define FILE_OPENED 0x00000001
#define FILE_CREATED 0x00000002
#define FILE_OVERWRITTEN 0x00000003
#define FILE_EXISTS 0x00000004
#define FILE_DOES_NOT_EXIST 0x00000005
#define FILE_READ_DATA ( 0x0001 ) // file & pipe
#define FILE_LIST_DIRECTORY ( 0x0001 ) // directory
#define FILE_WRITE_DATA ( 0x0002 ) // file & pipe
#define FILE_ADD_FILE ( 0x0002 ) // directory
#define FILE_APPEND_DATA ( 0x0004 ) // file
#define FILE_ADD_SUBDIRECTORY ( 0x0004 ) // directory
#define FILE_CREATE_PIPE_INSTANCE ( 0x0004 ) // named pipe
#define FILE_READ_EA ( 0x0008 ) // file & directory
#define FILE_WRITE_EA ( 0x0010 ) // file & directory
#define FILE_EXECUTE ( 0x0020 ) // file
#define FILE_TRAVERSE ( 0x0020 ) // directory
#define FILE_DELETE_CHILD ( 0x0040 ) // directory
#define FILE_READ_ATTRIBUTES ( 0x0080 ) // all
#define FILE_WRITE_ATTRIBUTES ( 0x0100 ) // all
#define FILE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x1FF)
#define FILE_GENERIC_READ (STANDARD_RIGHTS_READ | FILE_READ_DATA | FILE_READ_ATTRIBUTES | FILE_READ_EA | SYNCHRONIZE)
#define FILE_GENERIC_WRITE (STANDARD_RIGHTS_WRITE | FILE_WRITE_DATA | FILE_WRITE_ATTRIBUTES| FILE_WRITE_EA | FILE_APPEND_DATA | SYNCHRONIZE)
#define FILE_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE | FILE_READ_ATTRIBUTES | FILE_EXECUTE | SYNCHRONIZE)
#define API_SET_SCHEMA_VERSION_V2 0x00000002L
#define API_SET_SCHEMA_VERSION_V3 0x00000003L // No offline support.
#define API_SET_SCHEMA_VERSION_V4 0x00000004L
#define API_SET_LOAD_SCHEMA_ORDINAL 1
#define API_SET_LOOKUP_ORDINAL 2
#define API_SET_RELEASE_SCHEMA_ORDINAL 3
#define API_SET_SCHEMA_FLAGS_SEALED 0x00000001L
#define API_SET_SCHEMA_FLAGS_HOST_EXTENSION 0x00000002L
#define API_SET_SCHEMA_ENTRY_FLAGS_SEALED 0x00000001L
#define API_SET_SCHEMA_ENTRY_FLAGS_EXTENSION 0x00000002L
+23
View File
@@ -69,6 +69,13 @@ NTSTATUS WINAPI NtQueryInformationProcess(
_Out_opt_ PULONG ReturnLength
);
NTSTATUS WINAPI NtSetInformationProcess(
_In_ HANDLE ProcessHandle,
_In_ PROCESS_INFORMATION_CLASS ProcessInformationClass,
_In_ PVOID ProcessInformation,
_In_ ULONG ProcessInformationLength
);
NTSTATUS WINAPI NtQueryVirtualMemory(
_In_ HANDLE ProcessHandle,
_In_opt_ PVOID BaseAddress,
@@ -1830,3 +1837,19 @@ NTSTATUS WINAPI NtQueryDirectoryFile(
_In_ BOOLEAN RestartScan
);
BOOLEAN WINAPI RtlDosPathNameToNtPathName_U(
_In_ PCWSTR DosName,
_Out_ PUNICODE_STRING NtName,
_Out_ PCWSTR *PartName,
_Out_ PRTL_RELATIVE_NAME_U RelativeName
);
// NOT EXPORTED !!
NTSTATUS WINAPI ApiSetResolveToHost (
_In_ PVOID Schema,
_In_ PUNICODE_STRING FileNameIn,
_In_opt_ PUNICODE_STRING ParentName,
_Out_ PBOOLEAN Resolved,
_Out_ PUNICODE_STRING HostBinary
);
+184 -7
View File
@@ -67,6 +67,46 @@ typedef struct _RTL_USER_PROCESS_PARAMETERS
} RTL_USER_PROCESS_PARAMETERS, *PRTL_USER_PROCESS_PARAMETERS;
// Thank to:
// https://msdn.microsoft.com/en-us/library/windows/desktop/aa813706(v=vs.85).aspx
// http://blog.rewolf.pl/blog/?p=573
// http://terminus.rewolf.pl/terminus/structures/ntdll/_PEB_combined.html
typedef union _ANON_PEB_SYSTEM_DEPENDENT_02 {
PVOID FastPebLockRoutine;
PVOID SparePtr1;
PVOID AtlThunkSListPtr;
};
typedef union _ANON_PEB_SYSTEM_DEPENDENT_03 {
PVOID FastPebUnlockRoutine;
PVOID SparePtr2;
PVOID IFEOKey;
};
typedef union _ANON_PEB_SYSTEM_DEPENDENT_06 {
PVOID FreeList;
PVOID SparePebPtr0;
PVOID ApiSetMap;
};
typedef union _ANON_PEB_SYSTEM_DEPENDENT_07 {
PVOID ReadOnlySharedMemoryHeap;
PVOID HotpatchInformation;
PVOID SparePvoid0;
};
typedef union _ANON_PEB_UNION_1 {
PVOID KernelCallbackTable;
PVOID UserSharedInfoPtr;
};
typedef union _ANON_PEB_UNION_2 {
PVOID ImageProcessAffinityMask;
PVOID ActiveProcessAffinityMask;
};
typedef struct _PEB {
BYTE Reserved1[2];
@@ -76,12 +116,65 @@ typedef struct _PEB {
PVOID ImageBaseAddress;
PPEB_LDR_DATA Ldr;
PRTL_USER_PROCESS_PARAMETERS ProcessParameters;
BYTE Reserved4[104];
PVOID Reserved5[52];
PPS_POST_PROCESS_INIT_ROUTINE PostProcessInitRoutine;
BYTE Reserved6[128];
PVOID Reserved7[1];
ULONG SessionId;
PVOID SubSystemData;
PVOID ProcessHeap;
PVOID FastPebLock;
_ANON_PEB_SYSTEM_DEPENDENT_02 _SYSTEM_DEPENDENT_02;
_ANON_PEB_SYSTEM_DEPENDENT_03 _SYSTEM_DEPENDENT_03;
PVOID _SYSTEM_DEPENDENT_04;
_ANON_PEB_UNION_1 anon_union_1;
DWORD SystemReserved;
DWORD _SYSTEM_DEPENDENT_05;
_ANON_PEB_SYSTEM_DEPENDENT_06 _SYSTEM_DEPENDENT_06;
PVOID TlsExpansionCounter;
PVOID TlsBitmap;
DWORD TlsBitmapBits[2];
PVOID ReadOnlySharedMemoryBase;
_ANON_PEB_SYSTEM_DEPENDENT_07 _SYSTEM_DEPENDENT_07;
PVOID ReadOnlyStaticServerData;
PVOID AnsiCodePageData;
PVOID OemCodePageData;
PVOID UnicodeCaseTableData;
DWORD NumberOfProcessors;
DWORD NtGlobalFlag;
LARGE_INTEGER CriticalSectionTimeout;
PVOID HeapSegmentReserve;
PVOID HeapSegmentCommit;
PVOID HeapDeCommitTotalFreeThreshold;
PVOID HeapDeCommitFreeBlockThreshold;
DWORD NumberOfHeaps;
DWORD MaximumNumberOfHeaps;
PVOID ProcessHeaps;
PVOID GdiSharedHandleTable;
PVOID ProcessStarterHelper;
PVOID GdiDCAttributeList;
PVOID LoaderLock;
DWORD OSMajorVersion;
DWORD OSMinorVersion;
WORD OSBuildNumber;
WORD OSCSDVersion;
DWORD OSPlatformId;
DWORD ImageSubsystem;
DWORD ImageSubsystemMajorVersion;
PVOID ImageSubsystemMinorVersion;
_ANON_PEB_UNION_2 anon_union_2;
PVOID GdiHandleBuffer[26];
BYTE GdiHandleBuffer2[32];
PVOID PostProcessInitRoutine;
PVOID TlsExpansionBitmap;
DWORD TlsExpansionBitmapBits[32];
PVOID SessionId;
ULARGE_INTEGER AppCompatFlags;
ULARGE_INTEGER AppCompatFlagsUser;
PVOID pShimData;
PVOID AppCompatInfo;
UNICODE_STRING CSDVersion;
PVOID ActivationContextData;
PVOID ProcessAssemblyStorageMap;
PVOID SystemDefaultActivationContextData;
PVOID SystemAssemblyStorageMap;
PVOID MinimumStackCommit;
} PEB, *PPEB;
@@ -316,6 +409,51 @@ typedef enum _SECTION_INHERIT {
ViewUnmap = 2
} SECTION_INHERIT;
typedef enum _PROCESSINFOCLASS {
ProcessBasicInformation,
ProcessQuotaLimits,
ProcessIoCounters,
ProcessVmCounters,
ProcessTimes,
ProcessBasePriority,
ProcessRaisePriority,
ProcessDebugPort,
ProcessExceptionPort,
ProcessAccessToken,
ProcessLdtInformation,
ProcessLdtSize,
ProcessDefaultHardErrorMode,
ProcessIoPortHandlers,
ProcessPooledUsageAndLimits,
ProcessWorkingSetWatch,
ProcessUserModeIOPL,
ProcessEnableAlignmentFaultFixup,
ProcessPriorityClass,
ProcessWx86Information,
ProcessHandleCount,
ProcessAffinityMask,
ProcessPriorityBoost,
ProcessDeviceMap,
ProcessSessionInformation,
ProcessForegroundInformation,
ProcessWow64Information,
ProcessImageFileName,
ProcessLUIDDeviceMapsEnabled,
ProcessBreakOnTermination,
ProcessDebugObjectHandle,
ProcessDebugFlags,
ProcessHandleTracing,
ProcessIoPriority,
ProcessExecuteFlags,
ProcessResourceManagement,
ProcessCookie,
ProcessImageInformation,
ProcessInformation38,
ProcessInformation39,
ProcessInstrumentationCallback,
MaxProcessInfoClass
} PROCESSINFOCLASS, PROCESS_INFORMATION_CLASS;
typedef enum _MEMORY_INFORMATION_CLASS {
MemoryBasicInformation,
MemoryWorkingSetList,
@@ -3135,4 +3273,43 @@ typedef struct _FILE_FS_SECTOR_SIZE_INFORMATION {
ULONG Flags;
ULONG ByteOffsetForSectorAlignment;
ULONG ByteOffsetForPartitionAlignment;
} FILE_FS_SECTOR_SIZE_INFORMATION, *PFILE_FS_SECTOR_SIZE_INFORMATION;
} FILE_FS_SECTOR_SIZE_INFORMATION, *PFILE_FS_SECTOR_SIZE_INFORMATION;
// THX ReactOS
typedef struct _RTLP_CURDIR_REF
{
LONG RefCount;
HANDLE Handle;
} RTLP_CURDIR_REF, *PRTLP_CURDIR_REF;
typedef struct _RTL_RELATIVE_NAME_U
{
UNICODE_STRING RelativeName;
HANDLE ContainingDirectory;
PRTLP_CURDIR_REF CurDirRef;
} RTL_RELATIVE_NAME_U, *PRTL_RELATIVE_NAME_U;
typedef enum _RTL_PATH_TYPE
{
RtlPathTypeUnknown,
RtlPathTypeUncAbsolute,
RtlPathTypeDriveAbsolute,
RtlPathTypeDriveRelative,
RtlPathTypeRooted,
RtlPathTypeRelative,
RtlPathTypeLocalDevice,
RtlPathTypeRootLocalDevice
} RTL_PATH_TYPE;
// Based on Alex Ionescu works on HookingNirvana
// https://github.com/ionescu007/HookingNirvana/blob/master/instrument/main.c
typedef struct _PROCESS_INSTRUMENTATION_CALLBACK_INFORMATION
{
ULONG Version;
ULONG Reserved;
PVOID Callback;
} PROCESS_INSTRUMENTATION_CALLBACK_INFORMATION, *PPROCESS_INSTRUMENTATION_CALLBACK_INFORMATION;
+1 -1
View File
@@ -1 +1 @@
names = ['HINSTANCE', 'HRESULT', 'ATOM', 'BOOL', 'BOOLEAN', 'BYTE', 'COLORREF', 'DOUBLE', 'DWORD', 'FILETIME', 'FLOAT', 'HACCEL', 'HANDLE', 'HBITMAP', ' HBRUSH', 'HCOLORSPACE', 'HDC', 'HDESK', 'HDWP', 'HENHMETAFILE', 'HFONT', 'HGDIOBJ', 'HGLOBAL', 'HHOOK', 'HICON', 'HINSTA NCE', 'HKEY', 'HKL', 'HLOCAL', 'HMENU', 'HMETAFILE', 'HMODULE', 'HMONITOR', 'HPALETTE', 'HPEN', 'HRGN', 'HRSRC', 'HSTR', 'HTASK', 'HWINSTA', 'HWND', 'INT', 'LANGID', 'LARGE_INTEGER', 'LCID', 'LCTYPE', 'LGRPID', 'LONG', 'LPARAM', 'LPCOLESTR' , 'LPCSTR', 'LPCVOID', 'LPCWSTR', 'LPOLESTR', 'LPSTR', 'LPVOID', 'LPWSTR', 'MAX_PATH', 'MSG', 'OLESTR', 'POINT', 'POINTL ', 'RECT', 'RECTL', 'RGB', 'SC_HANDLE', 'SERVICE_STATUS_HANDLE', 'SHORT', 'SIZE', 'SIZEL', 'SMALL_RECT', 'UINT', 'ULARGE _INTEGER', 'ULONG', 'USHORT', 'VARIANT_BOOL', 'WCHAR', 'WIN32_FIND_DATAA', 'WIN32_FIND_DATAW', 'WORD', 'WPARAM', '_COORD ', '_FILETIME', '_LARGE_INTEGER', '_POINTL', '_RECTL', '_SMALL_RECT', '_ULARGE_INTEGER', 'tagMSG', 'tagPOINT', 'tagRECT' , 'tagSIZE']
names = ['HINSTANCE', 'HRESULT', 'ATOM', 'BOOL', 'BOOLEAN', 'BYTE', 'COLORREF', 'DOUBLE', 'DWORD', 'FILETIME', 'FLOAT', 'HACCEL', 'HANDLE', 'HBITMAP', ' HBRUSH', 'HCOLORSPACE', 'HDC', 'HDESK', 'HDWP', 'HENHMETAFILE', 'HFONT', 'HGDIOBJ', 'HGLOBAL', 'HHOOK', 'HICON', 'HINSTA NCE', 'HKEY', 'HKL', 'HLOCAL', 'HMENU', 'HMETAFILE', 'HMODULE', 'HMONITOR', 'HPALETTE', 'HPEN', 'HRGN', 'HRSRC', 'HSTR', 'HTASK', 'HWINSTA', 'HWND', 'INT', 'LANGID', 'LARGE_INTEGER', 'LCID', 'LCTYPE', 'LGRPID', 'LONG', 'LPARAM', 'LPCOLESTR' , 'LPCSTR', 'LPCVOID', 'LPCWSTR', 'LPOLESTR', 'LPSTR', 'LPVOID', 'LPWSTR', 'MAX_PATH', 'MSG', 'OLESTR', 'POINT', 'POINTL ', 'RECT', 'RECTL', 'RGB', 'SC_HANDLE', 'SERVICE_STATUS_HANDLE', 'SHORT', 'SIZE', 'SIZEL', 'SMALL_RECT', 'UINT', 'ULARGE _INTEGER', 'ULONG', 'USHORT', 'VARIANT_BOOL', 'WCHAR', 'WIN32_FIND_DATAA', 'WIN32_FIND_DATAW', 'WORD', 'WPARAM', '_COORD ', '_FILETIME', '_LARGE_INTEGER', '_POINTL', '_RECTL', '_SMALL_RECT', '_ULARGE_INTEGER', "ULARGE_INTEGER", 'tagMSG', 'tagPOINT', 'tagRECT' , 'tagSIZE']
@@ -15,5 +15,10 @@ class _LSA_UNICODE_STRING(INITIAL_LSA_UNICODE_STRING):
size = self.Length / 2
return (ctypes.c_wchar * size).from_address(self.Buffer)[:]
@classmethod
def from_string(cls, s):
utf16_len = len(s) * 2
return cls(utf16_len, utf16_len, ctypes.cast(PWSTR(s), PVOID))
def __repr__(self):
return """<{0} "{1}" at {2}>""".format(type(self).__name__, self.str, hex(id(self)))
+2
View File
@@ -89,6 +89,7 @@ TYPE_EQUIVALENCE = [
('PHKEY', 'POINTER(HKEY)'),
('ACCESS_MASK', 'DWORD'),
('REGSAM', 'ACCESS_MASK'),
('PBOOLEAN', 'POINTER(BOOLEAN)'),
('SECURITY_CONTEXT_TRACKING_MODE', 'BOOLEAN'),
('HCRYPTPROV_OR_NCRYPT_KEY_HANDLE', 'PULONG'),
('HCRYPTPROV_LEGACY', 'PULONG'),
@@ -788,6 +789,7 @@ defs_with_ntstatus.append_input_file(from_here("definitions\\windef_evtlog.txt")
structs = StructGenerator(from_here("definitions\\winstruct.txt"), from_here(r"..\windows\generated_def\\winstructs.py"), dependances=[defs_with_ntstatus])
structs.append_input_file(from_here("definitions\\winstruct_apisetmap.txt"))
structs.append_input_file(from_here("definitions\\display_struct.txt"))
structs.append_input_file(from_here("definitions\\winstruct_bits.txt"))
structs.append_input_file(from_here("definitions\\winstruct_alpc.txt"))
+3
View File
@@ -35,6 +35,9 @@ class WinStructParser(Parser):
return (def_type, def_name, number_rep)
def parse_typedef(self, struct):
if type(self.peek()) == ColonToken: # Just a ; no typedef
self.next_token()
return
sep = CommaToken()
while type(sep) == CommaToken:
add_to_typedef = struct.add_typedef
+12
View File
@@ -59,6 +59,7 @@ class WinStruct(object):
def generate_selfref_ctypes_class(self):
res = ["# Self referencing struct tricks"]
res += ["""class {0}(Structure): pass""".format(self.name)]
# res += [self.generate_anonymous_union()]
res += [self.generate_typedef_ctypes()]
if self.pack:
@@ -72,10 +73,21 @@ class WinStruct(object):
res += ["]"]
return "\n".join(res)
def generate_anonymous_union(self):
annon_fields = [name for (ftype, name, nb_rep) in self.fields if ftype.name.startswith("_ANON_")]
if not annon_fields:
return ""
if len(annon_fields) == 1:
annon_fields_str = '"{0}",'.format(annon_fields[0])
else:
annon_fields_str = ",".join(['"{0}"'.format(name) for name in annon_fields])
return " _anonymous_ = ({0})\n".format(annon_fields_str)
def generate_ctypes_class(self):
res = "class {0}({1}):\n".format(self.name, self.ctypes_type)
if self.pack:
res += " _pack_ = {0}\n".format(self.pack)
res += self.generate_anonymous_union()
res += " _fields_ = [\n"""
+59
View File
@@ -841,6 +841,65 @@ Windef
.. autodata:: COMPRESSION_ENGINE_STANDARD
.. autodata:: COMPRESSION_ENGINE_MAXIMUM
.. autodata:: COMPRESSION_ENGINE_HIBER
.. autodata:: FILE_DIRECTORY_FILE
.. autodata:: FILE_WRITE_THROUGH
.. autodata:: FILE_SEQUENTIAL_ONLY
.. autodata:: FILE_NO_INTERMEDIATE_BUFFERING
.. autodata:: FILE_SYNCHRONOUS_IO_ALERT
.. autodata:: FILE_SYNCHRONOUS_IO_NONALERT
.. autodata:: FILE_NON_DIRECTORY_FILE
.. autodata:: FILE_CREATE_TREE_CONNECTION
.. autodata:: FILE_COMPLETE_IF_OPLOCKED
.. autodata:: FILE_NO_EA_KNOWLEDGE
.. autodata:: FILE_OPEN_REMOTE_INSTANCE
.. autodata:: FILE_RANDOM_ACCESS
.. autodata:: FILE_DELETE_ON_CLOSE
.. autodata:: FILE_OPEN_BY_FILE_ID
.. autodata:: FILE_OPEN_FOR_BACKUP_INTENT
.. autodata:: FILE_NO_COMPRESSION
.. autodata:: FILE_OPEN_REQUIRING_OPLOCK
.. autodata:: FILE_RESERVE_OPFILTER
.. autodata:: FILE_OPEN_REPARSE_POINT
.. autodata:: FILE_OPEN_NO_RECALL
.. autodata:: FILE_OPEN_FOR_FREE_SPACE_QUERY
.. autodata:: FILE_VALID_OPTION_FLAGS
.. autodata:: FILE_VALID_PIPE_OPTION_FLAGS
.. autodata:: FILE_VALID_MAILSLOT_OPTION_FLAGS
.. autodata:: FILE_VALID_SET_FLAGS
.. autodata:: FILE_SUPERSEDED
.. autodata:: FILE_OPENED
.. autodata:: FILE_CREATED
.. autodata:: FILE_OVERWRITTEN
.. autodata:: FILE_EXISTS
.. autodata:: FILE_DOES_NOT_EXIST
.. autodata:: FILE_READ_DATA
.. autodata:: FILE_LIST_DIRECTORY
.. autodata:: FILE_WRITE_DATA
.. autodata:: FILE_ADD_FILE
.. autodata:: FILE_APPEND_DATA
.. autodata:: FILE_ADD_SUBDIRECTORY
.. autodata:: FILE_CREATE_PIPE_INSTANCE
.. autodata:: FILE_READ_EA
.. autodata:: FILE_WRITE_EA
.. autodata:: FILE_EXECUTE
.. autodata:: FILE_TRAVERSE
.. autodata:: FILE_DELETE_CHILD
.. autodata:: FILE_READ_ATTRIBUTES
.. autodata:: FILE_WRITE_ATTRIBUTES
.. autodata:: FILE_ALL_ACCESS
.. autodata:: FILE_GENERIC_READ
.. autodata:: FILE_GENERIC_WRITE
.. autodata:: FILE_GENERIC_EXECUTE
.. autodata:: API_SET_SCHEMA_VERSION_V2
.. autodata:: API_SET_SCHEMA_VERSION_V3
.. autodata:: API_SET_SCHEMA_VERSION_V4
.. autodata:: API_SET_LOAD_SCHEMA_ORDINAL
.. autodata:: API_SET_LOOKUP_ORDINAL
.. autodata:: API_SET_RELEASE_SCHEMA_ORDINAL
.. autodata:: API_SET_SCHEMA_FLAGS_SEALED
.. autodata:: API_SET_SCHEMA_FLAGS_HOST_EXTENSION
.. autodata:: API_SET_SCHEMA_ENTRY_FLAGS_SEALED
.. autodata:: API_SET_SCHEMA_ENTRY_FLAGS_EXTENSION
.. autodata:: CERT_QUERY_OBJECT_FILE
.. autodata:: CERT_QUERY_OBJECT_BLOB
.. autodata:: CERT_QUERY_CONTENT_CERT
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
+59
View File
@@ -897,6 +897,65 @@ COMPRESSION_FORMAT_XPRESS_HUFF = make_flag("COMPRESSION_FORMAT_XPRESS_HUFF", ( 0
COMPRESSION_ENGINE_STANDARD = make_flag("COMPRESSION_ENGINE_STANDARD", ( 0x0000 ))
COMPRESSION_ENGINE_MAXIMUM = make_flag("COMPRESSION_ENGINE_MAXIMUM", ( 0x0100 ))
COMPRESSION_ENGINE_HIBER = make_flag("COMPRESSION_ENGINE_HIBER", ( 0x0200 ))
FILE_DIRECTORY_FILE = make_flag("FILE_DIRECTORY_FILE", 0x00000001)
FILE_WRITE_THROUGH = make_flag("FILE_WRITE_THROUGH", 0x00000002)
FILE_SEQUENTIAL_ONLY = make_flag("FILE_SEQUENTIAL_ONLY", 0x00000004)
FILE_NO_INTERMEDIATE_BUFFERING = make_flag("FILE_NO_INTERMEDIATE_BUFFERING", 0x00000008)
FILE_SYNCHRONOUS_IO_ALERT = make_flag("FILE_SYNCHRONOUS_IO_ALERT", 0x00000010)
FILE_SYNCHRONOUS_IO_NONALERT = make_flag("FILE_SYNCHRONOUS_IO_NONALERT", 0x00000020)
FILE_NON_DIRECTORY_FILE = make_flag("FILE_NON_DIRECTORY_FILE", 0x00000040)
FILE_CREATE_TREE_CONNECTION = make_flag("FILE_CREATE_TREE_CONNECTION", 0x00000080)
FILE_COMPLETE_IF_OPLOCKED = make_flag("FILE_COMPLETE_IF_OPLOCKED", 0x00000100)
FILE_NO_EA_KNOWLEDGE = make_flag("FILE_NO_EA_KNOWLEDGE", 0x00000200)
FILE_OPEN_REMOTE_INSTANCE = make_flag("FILE_OPEN_REMOTE_INSTANCE", 0x00000400)
FILE_RANDOM_ACCESS = make_flag("FILE_RANDOM_ACCESS", 0x00000800)
FILE_DELETE_ON_CLOSE = make_flag("FILE_DELETE_ON_CLOSE", 0x00001000)
FILE_OPEN_BY_FILE_ID = make_flag("FILE_OPEN_BY_FILE_ID", 0x00002000)
FILE_OPEN_FOR_BACKUP_INTENT = make_flag("FILE_OPEN_FOR_BACKUP_INTENT", 0x00004000)
FILE_NO_COMPRESSION = make_flag("FILE_NO_COMPRESSION", 0x00008000)
FILE_OPEN_REQUIRING_OPLOCK = make_flag("FILE_OPEN_REQUIRING_OPLOCK", 0x00010000)
FILE_RESERVE_OPFILTER = make_flag("FILE_RESERVE_OPFILTER", 0x00100000)
FILE_OPEN_REPARSE_POINT = make_flag("FILE_OPEN_REPARSE_POINT", 0x00200000)
FILE_OPEN_NO_RECALL = make_flag("FILE_OPEN_NO_RECALL", 0x00400000)
FILE_OPEN_FOR_FREE_SPACE_QUERY = make_flag("FILE_OPEN_FOR_FREE_SPACE_QUERY", 0x00800000)
FILE_VALID_OPTION_FLAGS = make_flag("FILE_VALID_OPTION_FLAGS", 0x00ffffff)
FILE_VALID_PIPE_OPTION_FLAGS = make_flag("FILE_VALID_PIPE_OPTION_FLAGS", 0x00000032)
FILE_VALID_MAILSLOT_OPTION_FLAGS = make_flag("FILE_VALID_MAILSLOT_OPTION_FLAGS", 0x00000032)
FILE_VALID_SET_FLAGS = make_flag("FILE_VALID_SET_FLAGS", 0x00000036)
FILE_SUPERSEDED = make_flag("FILE_SUPERSEDED", 0x00000000)
FILE_OPENED = make_flag("FILE_OPENED", 0x00000001)
FILE_CREATED = make_flag("FILE_CREATED", 0x00000002)
FILE_OVERWRITTEN = make_flag("FILE_OVERWRITTEN", 0x00000003)
FILE_EXISTS = make_flag("FILE_EXISTS", 0x00000004)
FILE_DOES_NOT_EXIST = make_flag("FILE_DOES_NOT_EXIST", 0x00000005)
FILE_READ_DATA = make_flag("FILE_READ_DATA", ( 0x0001 ))
FILE_LIST_DIRECTORY = make_flag("FILE_LIST_DIRECTORY", ( 0x0001 ))
FILE_WRITE_DATA = make_flag("FILE_WRITE_DATA", ( 0x0002 ))
FILE_ADD_FILE = make_flag("FILE_ADD_FILE", ( 0x0002 ))
FILE_APPEND_DATA = make_flag("FILE_APPEND_DATA", ( 0x0004 ))
FILE_ADD_SUBDIRECTORY = make_flag("FILE_ADD_SUBDIRECTORY", ( 0x0004 ))
FILE_CREATE_PIPE_INSTANCE = make_flag("FILE_CREATE_PIPE_INSTANCE", ( 0x0004 ))
FILE_READ_EA = make_flag("FILE_READ_EA", ( 0x0008 ))
FILE_WRITE_EA = make_flag("FILE_WRITE_EA", ( 0x0010 ))
FILE_EXECUTE = make_flag("FILE_EXECUTE", ( 0x0020 ))
FILE_TRAVERSE = make_flag("FILE_TRAVERSE", ( 0x0020 ))
FILE_DELETE_CHILD = make_flag("FILE_DELETE_CHILD", ( 0x0040 ))
FILE_READ_ATTRIBUTES = make_flag("FILE_READ_ATTRIBUTES", ( 0x0080 ))
FILE_WRITE_ATTRIBUTES = make_flag("FILE_WRITE_ATTRIBUTES", ( 0x0100 ))
FILE_ALL_ACCESS = make_flag("FILE_ALL_ACCESS", ( STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x1FF ))
FILE_GENERIC_READ = make_flag("FILE_GENERIC_READ", ( STANDARD_RIGHTS_READ | FILE_READ_DATA | FILE_READ_ATTRIBUTES | FILE_READ_EA | SYNCHRONIZE ))
FILE_GENERIC_WRITE = make_flag("FILE_GENERIC_WRITE", ( STANDARD_RIGHTS_WRITE | FILE_WRITE_DATA | FILE_WRITE_ATTRIBUTES| FILE_WRITE_EA | FILE_APPEND_DATA | SYNCHRONIZE ))
FILE_GENERIC_EXECUTE = make_flag("FILE_GENERIC_EXECUTE", ( STANDARD_RIGHTS_EXECUTE | FILE_READ_ATTRIBUTES | FILE_EXECUTE | SYNCHRONIZE ))
API_SET_SCHEMA_VERSION_V2 = make_flag("API_SET_SCHEMA_VERSION_V2", 0x00000002)
API_SET_SCHEMA_VERSION_V3 = make_flag("API_SET_SCHEMA_VERSION_V3", 0x00000003)
API_SET_SCHEMA_VERSION_V4 = make_flag("API_SET_SCHEMA_VERSION_V4", 0x00000004)
API_SET_LOAD_SCHEMA_ORDINAL = make_flag("API_SET_LOAD_SCHEMA_ORDINAL", 1)
API_SET_LOOKUP_ORDINAL = make_flag("API_SET_LOOKUP_ORDINAL", 2)
API_SET_RELEASE_SCHEMA_ORDINAL = make_flag("API_SET_RELEASE_SCHEMA_ORDINAL", 3)
API_SET_SCHEMA_FLAGS_SEALED = make_flag("API_SET_SCHEMA_FLAGS_SEALED", 0x00000001)
API_SET_SCHEMA_FLAGS_HOST_EXTENSION = make_flag("API_SET_SCHEMA_FLAGS_HOST_EXTENSION", 0x00000002)
API_SET_SCHEMA_ENTRY_FLAGS_SEALED = make_flag("API_SET_SCHEMA_ENTRY_FLAGS_SEALED", 0x00000001)
API_SET_SCHEMA_ENTRY_FLAGS_EXTENSION = make_flag("API_SET_SCHEMA_ENTRY_FLAGS_EXTENSION", 0x00000002)
CERT_QUERY_OBJECT_FILE = make_flag("CERT_QUERY_OBJECT_FILE", 0x00000001)
CERT_QUERY_OBJECT_BLOB = make_flag("CERT_QUERY_OBJECT_BLOB", 0x00000002)
CERT_QUERY_CONTENT_CERT = make_flag("CERT_QUERY_CONTENT_CERT", 1)
File diff suppressed because one or more lines are too long
+325 -6
View File
@@ -72,6 +72,7 @@ PALPC_HANDLE = POINTER(ALPC_HANDLE)
PHKEY = POINTER(HKEY)
ACCESS_MASK = DWORD
REGSAM = ACCESS_MASK
PBOOLEAN = POINTER(BOOLEAN)
SECURITY_CONTEXT_TRACKING_MODE = BOOLEAN
HCRYPTPROV_OR_NCRYPT_KEY_HANDLE = PULONG
HCRYPTPROV_LEGACY = PULONG
@@ -325,6 +326,55 @@ class _SECTION_INHERIT(EnumType):
SECTION_INHERIT = _SECTION_INHERIT
ProcessBasicInformation = EnumValue("_PROCESSINFOCLASS", "ProcessBasicInformation", 0x0)
ProcessQuotaLimits = EnumValue("_PROCESSINFOCLASS", "ProcessQuotaLimits", 0x1)
ProcessIoCounters = EnumValue("_PROCESSINFOCLASS", "ProcessIoCounters", 0x2)
ProcessVmCounters = EnumValue("_PROCESSINFOCLASS", "ProcessVmCounters", 0x3)
ProcessTimes = EnumValue("_PROCESSINFOCLASS", "ProcessTimes", 0x4)
ProcessBasePriority = EnumValue("_PROCESSINFOCLASS", "ProcessBasePriority", 0x5)
ProcessRaisePriority = EnumValue("_PROCESSINFOCLASS", "ProcessRaisePriority", 0x6)
ProcessDebugPort = EnumValue("_PROCESSINFOCLASS", "ProcessDebugPort", 0x7)
ProcessExceptionPort = EnumValue("_PROCESSINFOCLASS", "ProcessExceptionPort", 0x8)
ProcessAccessToken = EnumValue("_PROCESSINFOCLASS", "ProcessAccessToken", 0x9)
ProcessLdtInformation = EnumValue("_PROCESSINFOCLASS", "ProcessLdtInformation", 0xa)
ProcessLdtSize = EnumValue("_PROCESSINFOCLASS", "ProcessLdtSize", 0xb)
ProcessDefaultHardErrorMode = EnumValue("_PROCESSINFOCLASS", "ProcessDefaultHardErrorMode", 0xc)
ProcessIoPortHandlers = EnumValue("_PROCESSINFOCLASS", "ProcessIoPortHandlers", 0xd)
ProcessPooledUsageAndLimits = EnumValue("_PROCESSINFOCLASS", "ProcessPooledUsageAndLimits", 0xe)
ProcessWorkingSetWatch = EnumValue("_PROCESSINFOCLASS", "ProcessWorkingSetWatch", 0xf)
ProcessUserModeIOPL = EnumValue("_PROCESSINFOCLASS", "ProcessUserModeIOPL", 0x10)
ProcessEnableAlignmentFaultFixup = EnumValue("_PROCESSINFOCLASS", "ProcessEnableAlignmentFaultFixup", 0x11)
ProcessPriorityClass = EnumValue("_PROCESSINFOCLASS", "ProcessPriorityClass", 0x12)
ProcessWx86Information = EnumValue("_PROCESSINFOCLASS", "ProcessWx86Information", 0x13)
ProcessHandleCount = EnumValue("_PROCESSINFOCLASS", "ProcessHandleCount", 0x14)
ProcessAffinityMask = EnumValue("_PROCESSINFOCLASS", "ProcessAffinityMask", 0x15)
ProcessPriorityBoost = EnumValue("_PROCESSINFOCLASS", "ProcessPriorityBoost", 0x16)
ProcessDeviceMap = EnumValue("_PROCESSINFOCLASS", "ProcessDeviceMap", 0x17)
ProcessSessionInformation = EnumValue("_PROCESSINFOCLASS", "ProcessSessionInformation", 0x18)
ProcessForegroundInformation = EnumValue("_PROCESSINFOCLASS", "ProcessForegroundInformation", 0x19)
ProcessWow64Information = EnumValue("_PROCESSINFOCLASS", "ProcessWow64Information", 0x1a)
ProcessImageFileName = EnumValue("_PROCESSINFOCLASS", "ProcessImageFileName", 0x1b)
ProcessLUIDDeviceMapsEnabled = EnumValue("_PROCESSINFOCLASS", "ProcessLUIDDeviceMapsEnabled", 0x1c)
ProcessBreakOnTermination = EnumValue("_PROCESSINFOCLASS", "ProcessBreakOnTermination", 0x1d)
ProcessDebugObjectHandle = EnumValue("_PROCESSINFOCLASS", "ProcessDebugObjectHandle", 0x1e)
ProcessDebugFlags = EnumValue("_PROCESSINFOCLASS", "ProcessDebugFlags", 0x1f)
ProcessHandleTracing = EnumValue("_PROCESSINFOCLASS", "ProcessHandleTracing", 0x20)
ProcessIoPriority = EnumValue("_PROCESSINFOCLASS", "ProcessIoPriority", 0x21)
ProcessExecuteFlags = EnumValue("_PROCESSINFOCLASS", "ProcessExecuteFlags", 0x22)
ProcessResourceManagement = EnumValue("_PROCESSINFOCLASS", "ProcessResourceManagement", 0x23)
ProcessCookie = EnumValue("_PROCESSINFOCLASS", "ProcessCookie", 0x24)
ProcessImageInformation = EnumValue("_PROCESSINFOCLASS", "ProcessImageInformation", 0x25)
ProcessInformation38 = EnumValue("_PROCESSINFOCLASS", "ProcessInformation38", 0x26)
ProcessInformation39 = EnumValue("_PROCESSINFOCLASS", "ProcessInformation39", 0x27)
ProcessInstrumentationCallback = EnumValue("_PROCESSINFOCLASS", "ProcessInstrumentationCallback", 0x28)
MaxProcessInfoClass = EnumValue("_PROCESSINFOCLASS", "MaxProcessInfoClass", 0x29)
class _PROCESSINFOCLASS(EnumType):
values = [ProcessBasicInformation, ProcessQuotaLimits, ProcessIoCounters, ProcessVmCounters, ProcessTimes, ProcessBasePriority, ProcessRaisePriority, ProcessDebugPort, ProcessExceptionPort, ProcessAccessToken, ProcessLdtInformation, ProcessLdtSize, ProcessDefaultHardErrorMode, ProcessIoPortHandlers, ProcessPooledUsageAndLimits, ProcessWorkingSetWatch, ProcessUserModeIOPL, ProcessEnableAlignmentFaultFixup, ProcessPriorityClass, ProcessWx86Information, ProcessHandleCount, ProcessAffinityMask, ProcessPriorityBoost, ProcessDeviceMap, ProcessSessionInformation, ProcessForegroundInformation, ProcessWow64Information, ProcessImageFileName, ProcessLUIDDeviceMapsEnabled, ProcessBreakOnTermination, ProcessDebugObjectHandle, ProcessDebugFlags, ProcessHandleTracing, ProcessIoPriority, ProcessExecuteFlags, ProcessResourceManagement, ProcessCookie, ProcessImageInformation, ProcessInformation38, ProcessInformation39, ProcessInstrumentationCallback, MaxProcessInfoClass]
mapper = {x:x for x in values}
PROCESS_INFORMATION_CLASS = _PROCESSINFOCLASS
PROCESSINFOCLASS = _PROCESSINFOCLASS
MemoryBasicInformation = EnumValue("_MEMORY_INFORMATION_CLASS", "MemoryBasicInformation", 0x0)
MemoryWorkingSetList = EnumValue("_MEMORY_INFORMATION_CLASS", "MemoryWorkingSetList", 0x1)
MemorySectionName = EnumValue("_MEMORY_INFORMATION_CLASS", "MemorySectionName", 0x2)
@@ -957,6 +1007,20 @@ class tagTYPEKIND(EnumType):
TYPEKIND = tagTYPEKIND
RtlPathTypeUnknown = EnumValue("_RTL_PATH_TYPE", "RtlPathTypeUnknown", 0x0)
RtlPathTypeUncAbsolute = EnumValue("_RTL_PATH_TYPE", "RtlPathTypeUncAbsolute", 0x1)
RtlPathTypeDriveAbsolute = EnumValue("_RTL_PATH_TYPE", "RtlPathTypeDriveAbsolute", 0x2)
RtlPathTypeDriveRelative = EnumValue("_RTL_PATH_TYPE", "RtlPathTypeDriveRelative", 0x3)
RtlPathTypeRooted = EnumValue("_RTL_PATH_TYPE", "RtlPathTypeRooted", 0x4)
RtlPathTypeRelative = EnumValue("_RTL_PATH_TYPE", "RtlPathTypeRelative", 0x5)
RtlPathTypeLocalDevice = EnumValue("_RTL_PATH_TYPE", "RtlPathTypeLocalDevice", 0x6)
RtlPathTypeRootLocalDevice = EnumValue("_RTL_PATH_TYPE", "RtlPathTypeRootLocalDevice", 0x7)
class _RTL_PATH_TYPE(EnumType):
values = [RtlPathTypeUnknown, RtlPathTypeUncAbsolute, RtlPathTypeDriveAbsolute, RtlPathTypeDriveRelative, RtlPathTypeRooted, RtlPathTypeRelative, RtlPathTypeLocalDevice, RtlPathTypeRootLocalDevice]
mapper = {x:x for x in values}
RTL_PATH_TYPE = _RTL_PATH_TYPE
BG_JOB_STATE_QUEUED = EnumValue("_BG_JOB_STATE", "BG_JOB_STATE_QUEUED", 0x0)
BG_JOB_STATE_CONNECTING = EnumValue("_BG_JOB_STATE", "BG_JOB_STATE_CONNECTING", 0x1)
BG_JOB_STATE_TRANSFERRING = EnumValue("_BG_JOB_STATE", "BG_JOB_STATE_TRANSFERRING", 0x2)
@@ -1179,6 +1243,11 @@ class _LSA_UNICODE_STRING(INITIAL_LSA_UNICODE_STRING):
size = self.Length / 2
return (ctypes.c_wchar * size).from_address(self.Buffer)[:]
@classmethod
def from_string(cls, s):
utf16_len = len(s) * 2
return cls(utf16_len, utf16_len, ctypes.cast(PWSTR(s), PVOID))
def __repr__(self):
return """<{0} "{1}" at {2}>""".format(type(self).__name__, self.str, hex(id(self)))
PUNICODE_STRING = POINTER(_LSA_UNICODE_STRING)
@@ -1238,7 +1307,54 @@ class _RTL_USER_PROCESS_PARAMETERS(Structure):
PRTL_USER_PROCESS_PARAMETERS = POINTER(_RTL_USER_PROCESS_PARAMETERS)
RTL_USER_PROCESS_PARAMETERS = _RTL_USER_PROCESS_PARAMETERS
class _ANON_PEB_SYSTEM_DEPENDENT_02(Union):
_fields_ = [
("FastPebLockRoutine", PVOID),
("SparePtr1", PVOID),
("AtlThunkSListPtr", PVOID),
]
class _ANON_PEB_SYSTEM_DEPENDENT_03(Union):
_fields_ = [
("FastPebUnlockRoutine", PVOID),
("SparePtr2", PVOID),
("IFEOKey", PVOID),
]
class _ANON_PEB_SYSTEM_DEPENDENT_06(Union):
_fields_ = [
("FreeList", PVOID),
("SparePebPtr0", PVOID),
("ApiSetMap", PVOID),
]
class _ANON_PEB_SYSTEM_DEPENDENT_07(Union):
_fields_ = [
("ReadOnlySharedMemoryHeap", PVOID),
("HotpatchInformation", PVOID),
("SparePvoid0", PVOID),
]
class _ANON_PEB_UNION_1(Union):
_fields_ = [
("KernelCallbackTable", PVOID),
("UserSharedInfoPtr", PVOID),
]
class _ANON_PEB_UNION_2(Union):
_fields_ = [
("ImageProcessAffinityMask", PVOID),
("ActiveProcessAffinityMask", PVOID),
]
class _PEB(Structure):
_anonymous_ = ("_SYSTEM_DEPENDENT_02","_SYSTEM_DEPENDENT_03","anon_union_1","_SYSTEM_DEPENDENT_06","_SYSTEM_DEPENDENT_07","anon_union_2")
_fields_ = [
("Reserved1", BYTE * 2),
("BeingDebugged", BYTE),
@@ -1247,12 +1363,64 @@ class _PEB(Structure):
("ImageBaseAddress", PVOID),
("Ldr", PPEB_LDR_DATA),
("ProcessParameters", PRTL_USER_PROCESS_PARAMETERS),
("Reserved4", BYTE * 104),
("Reserved5", PVOID * 52),
("PostProcessInitRoutine", PPS_POST_PROCESS_INIT_ROUTINE),
("Reserved6", BYTE * 128),
("Reserved7", PVOID * 1),
("SessionId", ULONG),
("SubSystemData", PVOID),
("ProcessHeap", PVOID),
("FastPebLock", PVOID),
("_SYSTEM_DEPENDENT_02", _ANON_PEB_SYSTEM_DEPENDENT_02),
("_SYSTEM_DEPENDENT_03", _ANON_PEB_SYSTEM_DEPENDENT_03),
("_SYSTEM_DEPENDENT_04", PVOID),
("anon_union_1", _ANON_PEB_UNION_1),
("SystemReserved", DWORD),
("_SYSTEM_DEPENDENT_05", DWORD),
("_SYSTEM_DEPENDENT_06", _ANON_PEB_SYSTEM_DEPENDENT_06),
("TlsExpansionCounter", PVOID),
("TlsBitmap", PVOID),
("TlsBitmapBits", DWORD * 2),
("ReadOnlySharedMemoryBase", PVOID),
("_SYSTEM_DEPENDENT_07", _ANON_PEB_SYSTEM_DEPENDENT_07),
("ReadOnlyStaticServerData", PVOID),
("AnsiCodePageData", PVOID),
("OemCodePageData", PVOID),
("UnicodeCaseTableData", PVOID),
("NumberOfProcessors", DWORD),
("NtGlobalFlag", DWORD),
("CriticalSectionTimeout", LARGE_INTEGER),
("HeapSegmentReserve", PVOID),
("HeapSegmentCommit", PVOID),
("HeapDeCommitTotalFreeThreshold", PVOID),
("HeapDeCommitFreeBlockThreshold", PVOID),
("NumberOfHeaps", DWORD),
("MaximumNumberOfHeaps", DWORD),
("ProcessHeaps", PVOID),
("GdiSharedHandleTable", PVOID),
("ProcessStarterHelper", PVOID),
("GdiDCAttributeList", PVOID),
("LoaderLock", PVOID),
("OSMajorVersion", DWORD),
("OSMinorVersion", DWORD),
("OSBuildNumber", WORD),
("OSCSDVersion", WORD),
("OSPlatformId", DWORD),
("ImageSubsystem", DWORD),
("ImageSubsystemMajorVersion", DWORD),
("ImageSubsystemMinorVersion", PVOID),
("anon_union_2", _ANON_PEB_UNION_2),
("GdiHandleBuffer", PVOID * 26),
("GdiHandleBuffer2", BYTE * 32),
("PostProcessInitRoutine", PVOID),
("TlsExpansionBitmap", PVOID),
("TlsExpansionBitmapBits", DWORD * 32),
("SessionId", PVOID),
("AppCompatFlags", ULARGE_INTEGER),
("AppCompatFlagsUser", ULARGE_INTEGER),
("pShimData", PVOID),
("AppCompatInfo", PVOID),
("CSDVersion", UNICODE_STRING),
("ActivationContextData", PVOID),
("ProcessAssemblyStorageMap", PVOID),
("SystemDefaultActivationContextData", PVOID),
("SystemAssemblyStorageMap", PVOID),
("MinimumStackCommit", PVOID),
]
PPEB = POINTER(_PEB)
PEB = _PEB
@@ -4267,6 +4435,157 @@ class _FILE_FS_SECTOR_SIZE_INFORMATION(Structure):
PFILE_FS_SECTOR_SIZE_INFORMATION = POINTER(_FILE_FS_SECTOR_SIZE_INFORMATION)
FILE_FS_SECTOR_SIZE_INFORMATION = _FILE_FS_SECTOR_SIZE_INFORMATION
class _RTLP_CURDIR_REF(Structure):
_fields_ = [
("RefCount", LONG),
("Handle", HANDLE),
]
PRTLP_CURDIR_REF = POINTER(_RTLP_CURDIR_REF)
RTLP_CURDIR_REF = _RTLP_CURDIR_REF
class _RTL_RELATIVE_NAME_U(Structure):
_fields_ = [
("RelativeName", UNICODE_STRING),
("ContainingDirectory", HANDLE),
("CurDirRef", PRTLP_CURDIR_REF),
]
PRTL_RELATIVE_NAME_U = POINTER(_RTL_RELATIVE_NAME_U)
RTL_RELATIVE_NAME_U = _RTL_RELATIVE_NAME_U
class _PROCESS_INSTRUMENTATION_CALLBACK_INFORMATION(Structure):
_fields_ = [
("Version", ULONG),
("Reserved", ULONG),
("Callback", PVOID),
]
PPROCESS_INSTRUMENTATION_CALLBACK_INFORMATION = POINTER(_PROCESS_INSTRUMENTATION_CALLBACK_INFORMATION)
PROCESS_INSTRUMENTATION_CALLBACK_INFORMATION = _PROCESS_INSTRUMENTATION_CALLBACK_INFORMATION
class _API_SET_VALUE_ENTRY(Structure):
_fields_ = [
("Flags", ULONG),
("NameOffset", ULONG),
("NameLength", ULONG),
("ValueOffset", ULONG),
("ValueLength", ULONG),
]
API_SET_VALUE_ENTRY = _API_SET_VALUE_ENTRY
PAPI_SET_VALUE_ENTRY = POINTER(_API_SET_VALUE_ENTRY)
class _API_SET_NAMESPACE_ENTRY(Structure):
_fields_ = [
("Flags", ULONG),
("NameOffset", ULONG),
("NameLength", ULONG),
("AliasOffset", ULONG),
("AliasLength", ULONG),
("DataOffset", ULONG),
]
PAPI_SET_NAMESPACE_ENTRY = POINTER(_API_SET_NAMESPACE_ENTRY)
API_SET_NAMESPACE_ENTRY = _API_SET_NAMESPACE_ENTRY
class _API_SET_NAMESPACE_ARRAY(Structure):
_fields_ = [
("Version", ULONG),
("Size", ULONG),
("Flags", ULONG),
("Count", ULONG),
("Array", API_SET_NAMESPACE_ENTRY * ANYSIZE_ARRAY),
]
PAPI_SET_NAMESPACE_ARRAY = POINTER(_API_SET_NAMESPACE_ARRAY)
API_SET_NAMESPACE_ARRAY = _API_SET_NAMESPACE_ARRAY
class _API_SET_VALUE_ENTRY_V2(Structure):
_fields_ = [
("NameOffset", ULONG),
("NameLength", ULONG),
("ValueOffset", ULONG),
("ValueLength", ULONG),
]
PAPI_SET_VALUE_ENTRY_V2 = POINTER(_API_SET_VALUE_ENTRY_V2)
API_SET_VALUE_ENTRY_V2 = _API_SET_VALUE_ENTRY_V2
class _API_SET_VALUE_ARRAY_V2(Structure):
_fields_ = [
("Count", ULONG),
("Array", API_SET_VALUE_ENTRY_V2 * ANYSIZE_ARRAY),
]
API_SET_VALUE_ARRAY_V2 = _API_SET_VALUE_ARRAY_V2
PAPI_SET_VALUE_ARRAY_V2 = POINTER(_API_SET_VALUE_ARRAY_V2)
class _API_SET_NAMESPACE_ENTRY_V2(Structure):
_fields_ = [
("NameOffset", ULONG),
("NameLength", ULONG),
("DataOffset", ULONG),
]
PAPI_SET_NAMESPACE_ENTRY_V2 = POINTER(_API_SET_NAMESPACE_ENTRY_V2)
API_SET_NAMESPACE_ENTRY_V2 = _API_SET_NAMESPACE_ENTRY_V2
class _API_SET_NAMESPACE_ARRAY_V2(Structure):
_fields_ = [
("Version", ULONG),
("Count", ULONG),
("Array", API_SET_NAMESPACE_ENTRY_V2 * ANYSIZE_ARRAY),
]
API_SET_NAMESPACE_ARRAY_V2 = _API_SET_NAMESPACE_ARRAY_V2
PAPI_SET_NAMESPACE_ARRAY_V2 = POINTER(_API_SET_NAMESPACE_ARRAY_V2)
class _API_SET_VALUE_ARRAY_V4(Structure):
_fields_ = [
("GuessFlags", ULONG),
("Count", ULONG),
("Array", API_SET_VALUE_ENTRY_V2 * ANYSIZE_ARRAY),
]
API_SET_VALUE_ARRAY_V4 = _API_SET_VALUE_ARRAY_V4
PAPI_SET_VALUE_ARRAY_V2 = POINTER(_API_SET_VALUE_ARRAY_V4)
class _API_SET_NAMESPACE_ARRAY_V4(Structure):
_fields_ = [
("Version", ULONG),
("Size", ULONG),
("Flags", ULONG),
("Count", ULONG),
("Array", API_SET_NAMESPACE_ENTRY * ANYSIZE_ARRAY),
]
API_SET_NAMESPACE_ARRAY_V4 = _API_SET_NAMESPACE_ARRAY_V4
PAPI_SET_NAMESPACE_ARRAY_V4 = POINTER(_API_SET_NAMESPACE_ARRAY_V4)
class _API_SET_NAMESPACE_ENTRY_V4(Structure):
_fields_ = [
("Flags", ULONG),
("NameOffset", ULONG),
("NameLength", ULONG),
("AliasOffset", ULONG),
("AliasLength", ULONG),
("DataOffset", ULONG),
]
PAPI_SET_NAMESPACE_ENTRY_V4 = POINTER(_API_SET_NAMESPACE_ENTRY_V4)
API_SET_NAMESPACE_ENTRY_V4 = _API_SET_NAMESPACE_ENTRY_V4
class _API_SET_NAMESPACE_ENTRY_V6(Structure):
_fields_ = [
("Flags", ULONG),
("NameOffset", ULONG),
("NameLength", ULONG),
("HashedLength", ULONG),
("ValueOffset", ULONG),
("ValueCount", ULONG),
]
API_SET_NAMESPACE_ENTRY_V6 = _API_SET_NAMESPACE_ENTRY_V6
class _API_SET_NAMESPACE_V6(Structure):
_fields_ = [
("Version", ULONG),
("Size", ULONG),
("Flags", ULONG),
("Count", ULONG),
("EntryOffset", ULONG),
("HashOffset", ULONG),
("HashFactor", ULONG),
]
API_SET_NAMESPACE_V6 = _API_SET_NAMESPACE_V6
class tagRECT(Structure):
_fields_ = [
("left", LONG),