mirror of
https://github.com/hakril/PythonForWindows
synced 2026-06-08 14:31:45 +00:00
Add fuller PEB structure + Improved UNICODE_STRING + other define
This commit is contained in:
@@ -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
|
||||
@@ -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
|
||||
);
|
||||
|
||||
@@ -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 @@
|
||||
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)))
|
||||
@@ -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"))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"""
|
||||
|
||||
|
||||
|
||||
@@ -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
@@ -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
@@ -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),
|
||||
|
||||
Reference in New Issue
Block a user