Get PEB of other process without injection

This commit is contained in:
Clement Rouault
2015-12-11 09:53:13 +01:00
parent 419e65324f
commit 46d0a45e17
9 changed files with 880 additions and 55 deletions
+1
View File
@@ -30,6 +30,7 @@ else:
winstructs.SYSTEM_MODULE_INFORMATION = winstructs.SYSTEM_MODULE_INFORMATION64
from . import winfuncs
from . import windef
+16 -3
View File
@@ -7,13 +7,13 @@ if sys.version_info.major == 3:
class Flag(long):
def __new__(cls, name, value):
return super(Flag, cls).__new__(cls, value)
def __init__(self, name, value):
self.name = name
def __repr__(self):
return "{0}({1})".format(self.name, hex(self))
__str__ = __repr__
NULL = Flag("NULL", 0)
@@ -475,4 +475,17 @@ ERROR_NOT_ALL_ASSIGNED = Flag("ERROR_NOT_ALL_ASSIGNED", 1300)
S_OK = Flag("S_OK", 0)
S_FALSE = Flag("S_FALSE", 1)
E_NOINTERFACE = Flag("E_NOINTERFACE", 0x80004002)
E_FAIL = Flag("E_FAIL", 0x80004005)
E_FAIL = Flag("E_FAIL", 0x80004005)
DEBUG_EVENT_BREAKPOINT = Flag("DEBUG_EVENT_BREAKPOINT", 0x00000001)
DEBUG_EVENT_EXCEPTION = Flag("DEBUG_EVENT_EXCEPTION", 0x00000002)
DEBUG_EVENT_CREATE_THREAD = Flag("DEBUG_EVENT_CREATE_THREAD", 0x00000004)
DEBUG_EVENT_EXIT_THREAD = Flag("DEBUG_EVENT_EXIT_THREAD", 0x00000008)
DEBUG_EVENT_CREATE_PROCESS = Flag("DEBUG_EVENT_CREATE_PROCESS", 0x00000010)
DEBUG_EVENT_EXIT_PROCESS = Flag("DEBUG_EVENT_EXIT_PROCESS", 0x00000020)
DEBUG_EVENT_LOAD_MODULE = Flag("DEBUG_EVENT_LOAD_MODULE", 0x00000040)
DEBUG_EVENT_UNLOAD_MODULE = Flag("DEBUG_EVENT_UNLOAD_MODULE", 0x00000080)
DEBUG_EVENT_SYSTEM_ERROR = Flag("DEBUG_EVENT_SYSTEM_ERROR", 0x00000100)
DEBUG_EVENT_SESSION_STATUS = Flag("DEBUG_EVENT_SESSION_STATUS", 0x00000200)
DEBUG_EVENT_CHANGE_DEBUGGEE_STATE = Flag("DEBUG_EVENT_CHANGE_DEBUGGEE_STATE", 0x00000400)
DEBUG_EVENT_CHANGE_ENGINE_STATE = Flag("DEBUG_EVENT_CHANGE_ENGINE_STATE", 0x00000800)
DEBUG_EVENT_CHANGE_SYMBOL_STATE = Flag("DEBUG_EVENT_CHANGE_SYMBOL_STATE", 0x00001000)
+17 -1
View File
@@ -3,7 +3,7 @@ from ctypes import *
from ctypes.wintypes import *
from .winstructs import *
functions = ['ExitProcess', 'TerminateProcess', 'GetLastError', 'GetCurrentProcess', 'CreateFileA', 'CreateFileW', 'NtQuerySystemInformation', 'VirtualAlloc', 'VirtualAllocEx', 'VirtualFree', 'VirtualFreeEx', 'VirtualProtect', 'VirtualQuery', 'GetModuleFileNameA', 'GetModuleFileNameW', 'CreateThread', 'CreateRemoteThread', 'VirtualProtect', 'CreateProcessA', 'CreateProcessW', 'GetThreadContext', 'SetThreadContext', 'OpenThread', 'OpenProcess', 'CloseHandle', 'ReadProcessMemory', 'NtWow64ReadVirtualMemory64', 'WriteProcessMemory', 'CreateToolhelp32Snapshot', 'Thread32First', 'Thread32Next', 'Process32First', 'Process32Next', 'Process32FirstW', 'Process32NextW', 'GetProcAddress', 'LoadLibraryA', 'LoadLibraryW', 'OpenProcessToken', 'LookupPrivilegeValueA', 'LookupPrivilegeValueW', 'AdjustTokenPrivileges', 'FindResourceA', 'FindResourceW', 'SizeofResource', 'LoadResource', 'LockResource', 'GetVersionExA', 'GetVersionExW', 'GetVersion', 'GetCurrentThread', 'GetCurrentThreadId', 'GetCurrentProcessorNumber', 'AllocConsole', 'FreeConsole', 'GetStdHandle', 'SetStdHandle', 'SetThreadAffinityMask', 'WriteFile', 'GetExtendedTcpTable', 'GetExtendedUdpTable', 'SetTcpEntry', 'AddVectoredContinueHandler', 'AddVectoredExceptionHandler', 'TerminateThread', 'ExitThread', 'RemoveVectoredExceptionHandler', 'ResumeThread', 'SuspendThread', 'WaitForSingleObject', 'GetThreadId', 'LoadLibraryExA', 'LoadLibraryExW', 'SymInitialize', 'SymFromName', 'SymLoadModuleEx', 'SymSetOptions', 'SymGetTypeInfo', 'DeviceIoControl', 'GetTokenInformation', 'RegOpenKeyExA', 'RegOpenKeyExW', 'RegGetValueA', 'RegGetValueW', 'RegCloseKey', 'Wow64DisableWow64FsRedirection', 'Wow64RevertWow64FsRedirection', 'Wow64EnableWow64FsRedirection']
functions = ['ExitProcess', 'TerminateProcess', 'GetLastError', 'GetCurrentProcess', 'CreateFileA', 'CreateFileW', 'NtQuerySystemInformation', 'NtQueryInformationProcess', 'NtQueryVirtualMemory', 'VirtualAlloc', 'VirtualAllocEx', 'VirtualFree', 'VirtualFreeEx', 'VirtualProtect', 'VirtualQuery', 'VirtualQueryEx', 'GetModuleFileNameA', 'GetModuleFileNameW', 'CreateThread', 'CreateRemoteThread', 'VirtualProtect', 'CreateProcessA', 'CreateProcessW', 'GetThreadContext', 'SetThreadContext', 'OpenThread', 'OpenProcess', 'CloseHandle', 'ReadProcessMemory', 'NtWow64ReadVirtualMemory64', 'WriteProcessMemory', 'CreateToolhelp32Snapshot', 'Thread32First', 'Thread32Next', 'Process32First', 'Process32Next', 'Process32FirstW', 'Process32NextW', 'GetProcAddress', 'LoadLibraryA', 'LoadLibraryW', 'OpenProcessToken', 'LookupPrivilegeValueA', 'LookupPrivilegeValueW', 'AdjustTokenPrivileges', 'FindResourceA', 'FindResourceW', 'SizeofResource', 'LoadResource', 'LockResource', 'GetVersionExA', 'GetVersionExW', 'GetVersion', 'GetCurrentThread', 'GetCurrentThreadId', 'GetCurrentProcessorNumber', 'AllocConsole', 'FreeConsole', 'GetStdHandle', 'SetStdHandle', 'SetThreadAffinityMask', 'WriteFile', 'GetExtendedTcpTable', 'GetExtendedUdpTable', 'SetTcpEntry', 'AddVectoredContinueHandler', 'AddVectoredExceptionHandler', 'TerminateThread', 'ExitThread', 'RemoveVectoredExceptionHandler', 'ResumeThread', 'SuspendThread', 'WaitForSingleObject', 'GetThreadId', 'LoadLibraryExA', 'LoadLibraryExW', 'SymInitialize', 'SymFromName', 'SymLoadModuleEx', 'SymSetOptions', 'SymGetTypeInfo', 'DeviceIoControl', 'GetTokenInformation', 'RegOpenKeyExA', 'RegOpenKeyExW', 'RegGetValueA', 'RegGetValueW', 'RegCloseKey', 'Wow64DisableWow64FsRedirection', 'Wow64RevertWow64FsRedirection', 'Wow64EnableWow64FsRedirection', 'SetConsoleCtrlHandler']
# ExitProcess(uExitCode):
ExitProcessPrototype = WINFUNCTYPE(VOID, UINT)
@@ -33,6 +33,14 @@ CreateFileWParams = ((1, 'lpFileName'), (1, 'dwDesiredAccess'), (1, 'dwShareMode
NtQuerySystemInformationPrototype = WINFUNCTYPE(NTSTATUS, SYSTEM_INFORMATION_CLASS, PVOID, ULONG, PULONG)
NtQuerySystemInformationParams = ((1, 'SystemInformationClass'), (1, 'SystemInformation'), (1, 'SystemInformationLength'), (1, 'ReturnLength'))
# NtQueryInformationProcess(ProcessHandle, ProcessInformationClass, ProcessInformation, ProcessInformationLength, ReturnLength):
NtQueryInformationProcessPrototype = WINFUNCTYPE(NTSTATUS, HANDLE, PROCESSINFOCLASS, PVOID, ULONG, PULONG)
NtQueryInformationProcessParams = ((1, 'ProcessHandle'), (1, 'ProcessInformationClass'), (1, 'ProcessInformation'), (1, 'ProcessInformationLength'), (1, 'ReturnLength'))
# NtQueryVirtualMemory(ProcessHandle, BaseAddress, MemoryInformationClass, MemoryInformation, MemoryInformationLength, ReturnLength):
NtQueryVirtualMemoryPrototype = WINFUNCTYPE(NTSTATUS, HANDLE, PVOID, MEMORY_INFORMATION_CLASS, PVOID, SIZE_T, PSIZE_T)
NtQueryVirtualMemoryParams = ((1, 'ProcessHandle'), (1, 'BaseAddress'), (1, 'MemoryInformationClass'), (1, 'MemoryInformation'), (1, 'MemoryInformationLength'), (1, 'ReturnLength'))
# VirtualAlloc(lpAddress, dwSize, flAllocationType, flProtect):
VirtualAllocPrototype = WINFUNCTYPE(LPVOID, LPVOID, SIZE_T, DWORD, DWORD)
VirtualAllocParams = ((1, 'lpAddress'), (1, 'dwSize'), (1, 'flAllocationType'), (1, 'flProtect'))
@@ -57,6 +65,10 @@ VirtualProtectParams = ((1, 'lpAddress'), (1, 'dwSize'), (1, 'flNewProtect'), (1
VirtualQueryPrototype = WINFUNCTYPE(DWORD, LPCVOID, PMEMORY_BASIC_INFORMATION, DWORD)
VirtualQueryParams = ((1, 'lpAddress'), (1, 'lpBuffer'), (1, 'dwLength'))
# VirtualQueryEx(hProcess, lpAddress, lpBuffer, dwLength):
VirtualQueryExPrototype = WINFUNCTYPE(SIZE_T, HANDLE, LPCVOID, PMEMORY_BASIC_INFORMATION, SIZE_T)
VirtualQueryExParams = ((1, 'hProcess'), (1, 'lpAddress'), (1, 'lpBuffer'), (1, 'dwLength'))
# GetModuleFileNameA(hModule, lpFilename, nSize):
GetModuleFileNameAPrototype = WINFUNCTYPE(DWORD, HMODULE, LPSTR, DWORD)
GetModuleFileNameAParams = ((1, 'hModule'), (1, 'lpFilename'), (1, 'nSize'))
@@ -357,3 +369,7 @@ Wow64RevertWow64FsRedirectionParams = ((1, 'OldValue'),)
Wow64EnableWow64FsRedirectionPrototype = WINFUNCTYPE(BOOLEAN, BOOLEAN)
Wow64EnableWow64FsRedirectionParams = ((1, 'Wow64FsEnableRedirection'),)
# SetConsoleCtrlHandler(HandlerRoutine, Add):
SetConsoleCtrlHandlerPrototype = WINFUNCTYPE(BOOL, PHANDLER_ROUTINE, BOOL)
SetConsoleCtrlHandlerParams = ((1, 'HandlerRoutine'), (1, 'Add'))
+538 -2
View File
@@ -5,6 +5,7 @@ from .windef import *
PWSTR = LPWSTR
SIZE_T = c_ulong
PSIZE_T = POINTER(SIZE_T)
PVOID = c_void_p
PPS_POST_PROCESS_INIT_ROUTINE = PVOID
NTSTATUS = DWORD
@@ -12,6 +13,7 @@ PULONG = POINTER(ULONG)
PDWORD = POINTER(DWORD)
LPDWORD = POINTER(DWORD)
LPTHREAD_START_ROUTINE = PVOID
PHANDLER_ROUTINE = PVOID
LPBYTE = POINTER(BYTE)
ULONG_PTR = PULONG
CHAR = c_char
@@ -30,11 +32,13 @@ PHKEY = POINTER(HKEY)
ACCESS_MASK = DWORD
REGSAM = ACCESS_MASK
LPCONTEXT = PVOID
HCERTSTORE = PVOID
HCRYPTMSG = PVOID
VOID = DWORD
structs = ['_LIST_ENTRY', '_PEB_LDR_DATA', '_LSA_UNICODE_STRING', '_RTL_USER_PROCESS_PARAMETERS', '_PEB', '_SECURITY_ATTRIBUTES', '_SYSTEM_VERIFIER_INFORMATION', '_LDR_DATA_TABLE_ENTRY', '_IMAGE_FILE_HEADER', '_IMAGE_DATA_DIRECTORY', '_IMAGE_SECTION_HEADER', '_IMAGE_OPTIONAL_HEADER64', '_IMAGE_OPTIONAL_HEADER', '_IMAGE_NT_HEADERS64', '_IMAGE_NT_HEADERS', '_IMAGE_IMPORT_DESCRIPTOR', '_IMAGE_IMPORT_BY_NAME', '_IMAGE_EXPORT_DIRECTORY', '_MEMORY_BASIC_INFORMATION', '_STARTUPINFOA', '_STARTUPINFOW', '_PROCESS_INFORMATION', '_FLOATING_SAVE_AREA', '_CONTEXT32', '_M128A', '_CONTEXT64', 'tagPROCESSENTRY32W', 'tagPROCESSENTRY32', 'tagTHREADENTRY32', '_LUID', '_LUID_AND_ATTRIBUTES', '_TOKEN_PRIVILEGES', '_TOKEN_ELEVATION', '_OSVERSIONINFOA', '_OSVERSIONINFOW', '_OSVERSIONINFOEXA', '_OSVERSIONINFOEXW', '_OVERLAPPED', '_MIB_TCPROW_OWNER_PID', '_MIB_TCPTABLE_OWNER_PID', '_MIB_UDPROW_OWNER_PID', '_MIB_UDPTABLE_OWNER_PID', '_MIB_UDP6ROW_OWNER_PID', '_MIB_UDP6TABLE_OWNER_PID', '_MIB_TCP6ROW_OWNER_PID', '_MIB_TCP6TABLE_OWNER_PID', '_MIB_TCPROW', '_EXCEPTION_RECORD', '_EXCEPTION_POINTERS64', '_EXCEPTION_POINTERS32', '_DEBUG_PROCESSOR_IDENTIFICATION_ALPHA', '_DEBUG_PROCESSOR_IDENTIFICATION_AMD64', '_DEBUG_PROCESSOR_IDENTIFICATION_IA64', '_DEBUG_PROCESSOR_IDENTIFICATION_X86', '_DEBUG_PROCESSOR_IDENTIFICATION_ARM', '_DEBUG_PROCESSOR_IDENTIFICATION_ALL', '_SYMBOL_INFO', '_MODLOAD_DATA', '_SYSTEM_MODULE32', '_SYSTEM_MODULE64', '_SYSTEM_MODULE_INFORMATION32', '_SYSTEM_MODULE_INFORMATION64', 'tagSAFEARRAYBOUND', 'tagSAFEARRAY']
structs = ['_LIST_ENTRY', '_PEB_LDR_DATA', '_LSA_UNICODE_STRING', '_RTL_USER_PROCESS_PARAMETERS', '_PEB', '_SECURITY_ATTRIBUTES', '_SYSTEM_VERIFIER_INFORMATION', '_LDR_DATA_TABLE_ENTRY', '_IMAGE_FILE_HEADER', '_IMAGE_DATA_DIRECTORY', '_IMAGE_SECTION_HEADER', '_IMAGE_OPTIONAL_HEADER64', '_IMAGE_OPTIONAL_HEADER', '_IMAGE_NT_HEADERS64', '_IMAGE_NT_HEADERS', '_IMAGE_IMPORT_DESCRIPTOR', '_IMAGE_IMPORT_BY_NAME', '_IMAGE_EXPORT_DIRECTORY', '_MEMORY_BASIC_INFORMATION', '_MEMORY_BASIC_INFORMATION32', '_MEMORY_BASIC_INFORMATION64', '_STARTUPINFOA', '_STARTUPINFOW', '_PROCESS_INFORMATION', '_FLOATING_SAVE_AREA', '_CONTEXT32', '_M128A', '_CONTEXT64', 'tagPROCESSENTRY32W', 'tagPROCESSENTRY32', 'tagTHREADENTRY32', '_LUID', '_LUID_AND_ATTRIBUTES', '_TOKEN_PRIVILEGES', '_TOKEN_ELEVATION', '_OSVERSIONINFOA', '_OSVERSIONINFOW', '_OSVERSIONINFOEXA', '_OSVERSIONINFOEXW', '_OVERLAPPED', '_MIB_TCPROW_OWNER_PID', '_MIB_TCPTABLE_OWNER_PID', '_MIB_UDPROW_OWNER_PID', '_MIB_UDPTABLE_OWNER_PID', '_MIB_UDP6ROW_OWNER_PID', '_MIB_UDP6TABLE_OWNER_PID', '_MIB_TCP6ROW_OWNER_PID', '_MIB_TCP6TABLE_OWNER_PID', '_MIB_TCPROW', '_EXCEPTION_RECORD', '_EXCEPTION_RECORD32', '_EXCEPTION_RECORD64', '_EXCEPTION_POINTERS64', '_EXCEPTION_POINTERS32', '_DEBUG_PROCESSOR_IDENTIFICATION_ALPHA', '_DEBUG_PROCESSOR_IDENTIFICATION_AMD64', '_DEBUG_PROCESSOR_IDENTIFICATION_IA64', '_DEBUG_PROCESSOR_IDENTIFICATION_X86', '_DEBUG_PROCESSOR_IDENTIFICATION_ARM', '_DEBUG_PROCESSOR_IDENTIFICATION_ALL', '_SYMBOL_INFO', '_MODLOAD_DATA', '_SYSTEM_MODULE32', '_SYSTEM_MODULE64', '_SYSTEM_MODULE_INFORMATION32', '_SYSTEM_MODULE_INFORMATION64', 'tagSAFEARRAYBOUND', 'tagSAFEARRAY', '_DEBUG_BREAKPOINT_PARAMETERS', '_DEBUG_REGISTER_DESCRIPTION', '_DEBUG_STACK_FRAME', '_DEBUG_LAST_EVENT_INFO_BREAKPOINT', '_DEBUG_LAST_EVENT_INFO_EXCEPTION', '_DEBUG_LAST_EVENT_INFO_EXIT_THREAD', '_DEBUG_LAST_EVENT_INFO_EXIT_PROCESS', '_DEBUG_LAST_EVENT_INFO_LOAD_MODULE', '_DEBUG_LAST_EVENT_INFO_UNLOAD_MODULE', '_DEBUG_LAST_EVENT_INFO_SYSTEM_ERROR', '_DEBUG_SPECIFIC_FILTER_PARAMETERS', '_DEBUG_EXCEPTION_FILTER_PARAMETERS', '_GUID', '_CRYPTOAPI_BLOB', 'WINTRUST_FILE_INFO_', '_CRYPT_ATTRIBUTE', '_CTL_ENTRY', '_CRYPT_ATTRIBUTE', '_CRYPT_ATTRIBUTES', '_CRYPT_ALGORITHM_IDENTIFIER', '_CMSG_SIGNER_INFO', '_CERT_EXTENSION', '_CTL_USAGE', '_CTL_INFO', '_CTL_CONTEXT', 'WINTRUST_CATALOG_INFO_', 'WINTRUST_BLOB_INFO_', '_CRYPT_BIT_BLOB', '_CERT_PUBLIC_KEY_INFO', '_CERT_INFO', '_CERT_CONTEXT', 'WINTRUST_SGNR_INFO_', '_FILETIME', 'WINTRUST_CERT_INFO_', '_TMP_WINTRUST_UNION_TYPE', '_WINTRUST_DATA', '_PROCESS_BASIC_INFORMATION']
enums = ['_SYSTEM_INFORMATION_CLASS', '_TCP_TABLE_CLASS', '_VARENUM', '_UDP_TABLE_CLASS', '_MIB_TCP_STATE', '_TOKEN_INFORMATION_CLASS', '_IMAGEHLP_SYMBOL_TYPE_INFO']
enums = ['_SYSTEM_INFORMATION_CLASS', '_MEMORY_INFORMATION_CLASS', '_TCP_TABLE_CLASS', '_VARENUM', '_UDP_TABLE_CLASS', '_MIB_TCP_STATE', '_TOKEN_INFORMATION_CLASS', '_IMAGEHLP_SYMBOL_TYPE_INFO', '_PROCESSINFOCLASS']
# Enum _SYSTEM_INFORMATION_CLASS definitions
_SYSTEM_INFORMATION_CLASS = DWORD
@@ -124,6 +128,12 @@ SystemMemoryListInformation = 0x50
SystemFileCacheInformationEx = 0x51
MaxSystemInfoClass = 0x52
# Enum _MEMORY_INFORMATION_CLASS definitions
_MEMORY_INFORMATION_CLASS = DWORD
MEMORY_INFORMATION_CLASS = _MEMORY_INFORMATION_CLASS
MemoryBasicInformation = 0x0
# Enum _TCP_TABLE_CLASS definitions
_TCP_TABLE_CLASS = DWORD
TCP_TABLE_CLASS = _TCP_TABLE_CLASS
@@ -307,6 +317,13 @@ TI_GET_IS_REFERENCE = 0x1f
TI_GET_INDIRECTVIRTUALBASECLASS = 0x20
IMAGEHLP_SYMBOL_TYPE_INFO_MAX = 0x21
# Enum _PROCESSINFOCLASS definitions
_PROCESSINFOCLASS = DWORD
PROCESSINFOCLASS = _PROCESSINFOCLASS
ProcessBasicInformation = 0x0
ProcessWow64Information = 0x1a
# Struct _LIST_ENTRY definitions
# Self referencing struct tricks
class _LIST_ENTRY(Structure): pass
@@ -619,6 +636,36 @@ class _MEMORY_BASIC_INFORMATION(Structure):
PMEMORY_BASIC_INFORMATION = POINTER(_MEMORY_BASIC_INFORMATION)
MEMORY_BASIC_INFORMATION = _MEMORY_BASIC_INFORMATION
# Struct _MEMORY_BASIC_INFORMATION32 definitions
class _MEMORY_BASIC_INFORMATION32(Structure):
_fields_ = [
("BaseAddress", DWORD),
("AllocationBase", DWORD),
("AllocationProtect", DWORD),
("RegionSize", DWORD),
("State", DWORD),
("Protect", DWORD),
("Type", DWORD),
]
MEMORY_BASIC_INFORMATION32 = _MEMORY_BASIC_INFORMATION32
PMEMORY_BASIC_INFORMATION32 = POINTER(_MEMORY_BASIC_INFORMATION32)
# Struct _MEMORY_BASIC_INFORMATION64 definitions
class _MEMORY_BASIC_INFORMATION64(Structure):
_fields_ = [
("BaseAddress", ULONGLONG),
("AllocationBase", ULONGLONG),
("AllocationProtect", DWORD),
("__alignment1", DWORD),
("RegionSize", ULONGLONG),
("State", DWORD),
("Protect", DWORD),
("Type", DWORD),
("__alignment2", DWORD),
]
PMEMORY_BASIC_INFORMATION64 = POINTER(_MEMORY_BASIC_INFORMATION64)
MEMORY_BASIC_INFORMATION64 = _MEMORY_BASIC_INFORMATION64
# Struct _STARTUPINFOA definitions
class _STARTUPINFOA(Structure):
_fields_ = [
@@ -1087,6 +1134,33 @@ _EXCEPTION_RECORD._fields_ = [
PEXCEPTION_RECORD = POINTER(_EXCEPTION_RECORD)
EXCEPTION_RECORD = _EXCEPTION_RECORD
# Struct _EXCEPTION_RECORD32 definitions
class _EXCEPTION_RECORD32(Structure):
_fields_ = [
("ExceptionCode", DWORD),
("ExceptionFlags", DWORD),
("ExceptionRecord", DWORD),
("ExceptionAddress", DWORD),
("NumberParameters", DWORD),
("ExceptionInformation", DWORD * EXCEPTION_MAXIMUM_PARAMETERS),
]
EXCEPTION_RECORD32 = _EXCEPTION_RECORD32
PEXCEPTION_RECORD32 = POINTER(_EXCEPTION_RECORD32)
# Struct _EXCEPTION_RECORD64 definitions
class _EXCEPTION_RECORD64(Structure):
_fields_ = [
("ExceptionCode", DWORD),
("ExceptionFlags", DWORD),
("ExceptionRecord", DWORD64),
("ExceptionAddress", DWORD64),
("NumberParameters", DWORD),
("__unusedAlignment", DWORD),
("ExceptionInformation", DWORD64 * EXCEPTION_MAXIMUM_PARAMETERS),
]
PEXCEPTION_RECORD64 = POINTER(_EXCEPTION_RECORD64)
EXCEPTION_RECORD64 = _EXCEPTION_RECORD64
# Struct _EXCEPTION_POINTERS64 definitions
class _EXCEPTION_POINTERS64(Structure):
_fields_ = [
@@ -1274,3 +1348,465 @@ class tagSAFEARRAY(Structure):
]
SAFEARRAY = tagSAFEARRAY
# Struct _DEBUG_BREAKPOINT_PARAMETERS definitions
class _DEBUG_BREAKPOINT_PARAMETERS(Structure):
_fields_ = [
("Offset", ULONG64),
("Id", ULONG),
("BreakType", ULONG),
("ProcType", ULONG),
("Flags", ULONG),
("DataSize", ULONG),
("DataAccessType", ULONG),
("PassCount", ULONG),
("CurrentPassCount", ULONG),
("MatchThread", ULONG),
("CommandSize", ULONG),
("OffsetExpressionSize", ULONG),
]
PDEBUG_BREAKPOINT_PARAMETERS = POINTER(_DEBUG_BREAKPOINT_PARAMETERS)
DEBUG_BREAKPOINT_PARAMETERS = _DEBUG_BREAKPOINT_PARAMETERS
# Struct _DEBUG_REGISTER_DESCRIPTION definitions
class _DEBUG_REGISTER_DESCRIPTION(Structure):
_fields_ = [
("Type", ULONG),
("Flags", ULONG),
("SubregMaster", ULONG),
("SubregLength", ULONG),
("SubregMask", ULONG64),
("SubregShift", ULONG),
("Reserved0", ULONG),
]
DEBUG_REGISTER_DESCRIPTION = _DEBUG_REGISTER_DESCRIPTION
PDEBUG_REGISTER_DESCRIPTION = POINTER(_DEBUG_REGISTER_DESCRIPTION)
# Struct _DEBUG_STACK_FRAME definitions
class _DEBUG_STACK_FRAME(Structure):
_fields_ = [
("InstructionOffset", ULONG64),
("ReturnOffset", ULONG64),
("FrameOffset", ULONG64),
("StackOffset", ULONG64),
("FuncTableEntry", ULONG64),
("Params", ULONG64 * 4),
("Reserved", ULONG64 * 6),
("Virtual", BOOL),
("FrameNumber", ULONG),
]
PDEBUG_STACK_FRAME = POINTER(_DEBUG_STACK_FRAME)
DEBUG_STACK_FRAME = _DEBUG_STACK_FRAME
# Struct _DEBUG_LAST_EVENT_INFO_BREAKPOINT definitions
class _DEBUG_LAST_EVENT_INFO_BREAKPOINT(Structure):
_fields_ = [
("Id", ULONG),
]
DEBUG_LAST_EVENT_INFO_BREAKPOINT = _DEBUG_LAST_EVENT_INFO_BREAKPOINT
PDEBUG_LAST_EVENT_INFO_BREAKPOINT = POINTER(_DEBUG_LAST_EVENT_INFO_BREAKPOINT)
# Struct _DEBUG_LAST_EVENT_INFO_EXCEPTION definitions
class _DEBUG_LAST_EVENT_INFO_EXCEPTION(Structure):
_fields_ = [
("ExceptionRecord", EXCEPTION_RECORD64),
("FirstChance", ULONG),
]
DEBUG_LAST_EVENT_INFO_EXCEPTION = _DEBUG_LAST_EVENT_INFO_EXCEPTION
PDEBUG_LAST_EVENT_INFO_EXCEPTION = POINTER(_DEBUG_LAST_EVENT_INFO_EXCEPTION)
# Struct _DEBUG_LAST_EVENT_INFO_EXIT_THREAD definitions
class _DEBUG_LAST_EVENT_INFO_EXIT_THREAD(Structure):
_fields_ = [
("ExitCode", ULONG),
]
PDEBUG_LAST_EVENT_INFO_EXIT_THREAD = POINTER(_DEBUG_LAST_EVENT_INFO_EXIT_THREAD)
DEBUG_LAST_EVENT_INFO_EXIT_THREAD = _DEBUG_LAST_EVENT_INFO_EXIT_THREAD
# Struct _DEBUG_LAST_EVENT_INFO_EXIT_PROCESS definitions
class _DEBUG_LAST_EVENT_INFO_EXIT_PROCESS(Structure):
_fields_ = [
("ExitCode", ULONG),
]
PDEBUG_LAST_EVENT_INFO_EXIT_PROCESS = POINTER(_DEBUG_LAST_EVENT_INFO_EXIT_PROCESS)
DEBUG_LAST_EVENT_INFO_EXIT_PROCESS = _DEBUG_LAST_EVENT_INFO_EXIT_PROCESS
# Struct _DEBUG_LAST_EVENT_INFO_LOAD_MODULE definitions
class _DEBUG_LAST_EVENT_INFO_LOAD_MODULE(Structure):
_fields_ = [
("Base", ULONG64),
]
PDEBUG_LAST_EVENT_INFO_LOAD_MODULE = POINTER(_DEBUG_LAST_EVENT_INFO_LOAD_MODULE)
DEBUG_LAST_EVENT_INFO_LOAD_MODULE = _DEBUG_LAST_EVENT_INFO_LOAD_MODULE
# Struct _DEBUG_LAST_EVENT_INFO_UNLOAD_MODULE definitions
class _DEBUG_LAST_EVENT_INFO_UNLOAD_MODULE(Structure):
_fields_ = [
("Base", ULONG64),
]
PDEBUG_LAST_EVENT_INFO_UNLOAD_MODULE = POINTER(_DEBUG_LAST_EVENT_INFO_UNLOAD_MODULE)
DEBUG_LAST_EVENT_INFO_UNLOAD_MODULE = _DEBUG_LAST_EVENT_INFO_UNLOAD_MODULE
# Struct _DEBUG_LAST_EVENT_INFO_SYSTEM_ERROR definitions
class _DEBUG_LAST_EVENT_INFO_SYSTEM_ERROR(Structure):
_fields_ = [
("Error", ULONG),
("Level", ULONG),
]
PDEBUG_LAST_EVENT_INFO_SYSTEM_ERROR = POINTER(_DEBUG_LAST_EVENT_INFO_SYSTEM_ERROR)
DEBUG_LAST_EVENT_INFO_SYSTEM_ERROR = _DEBUG_LAST_EVENT_INFO_SYSTEM_ERROR
# Struct _DEBUG_SPECIFIC_FILTER_PARAMETERS definitions
class _DEBUG_SPECIFIC_FILTER_PARAMETERS(Structure):
_fields_ = [
("ExecutionOption", ULONG),
("ContinueOption", ULONG),
("TextSize", ULONG),
("CommandSize", ULONG),
("ArgumentSize", ULONG),
]
DEBUG_SPECIFIC_FILTER_PARAMETERS = _DEBUG_SPECIFIC_FILTER_PARAMETERS
PDEBUG_SPECIFIC_FILTER_PARAMETERS = POINTER(_DEBUG_SPECIFIC_FILTER_PARAMETERS)
# Struct _DEBUG_EXCEPTION_FILTER_PARAMETERS definitions
class _DEBUG_EXCEPTION_FILTER_PARAMETERS(Structure):
_fields_ = [
("ExecutionOption", ULONG),
("ContinueOption", ULONG),
("TextSize", ULONG),
("CommandSize", ULONG),
("SecondCommandSize", ULONG),
("ExceptionCode", ULONG),
]
PDEBUG_EXCEPTION_FILTER_PARAMETERS = POINTER(_DEBUG_EXCEPTION_FILTER_PARAMETERS)
DEBUG_EXCEPTION_FILTER_PARAMETERS = _DEBUG_EXCEPTION_FILTER_PARAMETERS
# Struct _GUID definitions
class _GUID(Structure):
_fields_ = [
("Data1", ULONG),
("Data2", USHORT),
("Data3", USHORT),
("Data4", UCHAR * 8),
]
GUID = _GUID
# Struct _CRYPTOAPI_BLOB definitions
class _CRYPTOAPI_BLOB(Structure):
_fields_ = [
("cbData", DWORD),
("pbData", POINTER(BYTE)),
]
CRYPT_INTEGER_BLOB = _CRYPTOAPI_BLOB
PCRYPT_DATA_BLOB = POINTER(_CRYPTOAPI_BLOB)
PCRYPT_OBJID_BLOB = POINTER(_CRYPTOAPI_BLOB)
PCRYPT_DER_BLOB = POINTER(_CRYPTOAPI_BLOB)
PCRL_BLOB = POINTER(_CRYPTOAPI_BLOB)
PCRYPT_UINT_BLOB = POINTER(_CRYPTOAPI_BLOB)
CERT_NAME_BLOB = _CRYPTOAPI_BLOB
PCRYPT_DIGEST_BLOB = POINTER(_CRYPTOAPI_BLOB)
PCRYPT_INTEGER_BLOB = POINTER(_CRYPTOAPI_BLOB)
CERT_RDN_VALUE_BLOB = _CRYPTOAPI_BLOB
PCERT_NAME_BLOB = POINTER(_CRYPTOAPI_BLOB)
PCRYPT_HASH_BLOB = POINTER(_CRYPTOAPI_BLOB)
CRYPT_DATA_BLOB = _CRYPTOAPI_BLOB
DATA_BLOB = _CRYPTOAPI_BLOB
CRYPT_UINT_BLOB = _CRYPTOAPI_BLOB
PCERT_RDN_VALUE_BLOB = POINTER(_CRYPTOAPI_BLOB)
CRYPT_HASH_BLOB = _CRYPTOAPI_BLOB
CRL_BLOB = _CRYPTOAPI_BLOB
PCERT_BLOB = POINTER(_CRYPTOAPI_BLOB)
CRYPT_DIGEST_BLOB = _CRYPTOAPI_BLOB
CRYPT_OBJID_BLOB = _CRYPTOAPI_BLOB
CERT_BLOB = _CRYPTOAPI_BLOB
CRYPT_DER_BLOB = _CRYPTOAPI_BLOB
PDATA_BLOB = POINTER(_CRYPTOAPI_BLOB)
PCRYPT_ATTR_BLOB = POINTER(_CRYPTOAPI_BLOB)
CRYPT_ATTR_BLOB = _CRYPTOAPI_BLOB
# Struct WINTRUST_FILE_INFO_ definitions
class WINTRUST_FILE_INFO_(Structure):
_fields_ = [
("cbStruct", DWORD),
("pcwszFilePath", LPCWSTR),
("hFile", HANDLE),
("pgKnownSubject", POINTER(GUID)),
]
WINTRUST_FILE_INFO = WINTRUST_FILE_INFO_
PWINTRUST_FILE_INFO = POINTER(WINTRUST_FILE_INFO_)
# Struct _CRYPT_ATTRIBUTE definitions
class _CRYPT_ATTRIBUTE(Structure):
_fields_ = [
("pszObjId", LPSTR),
("cValue", DWORD),
("rgValue", PCRYPT_ATTR_BLOB),
]
PCRYPT_ATTRIBUTE = POINTER(_CRYPT_ATTRIBUTE)
CRYPT_ATTRIBUTE = _CRYPT_ATTRIBUTE
# Struct _CTL_ENTRY definitions
class _CTL_ENTRY(Structure):
_fields_ = [
("SubjectIdentifier", CRYPT_DATA_BLOB),
("cAttribute", DWORD),
("rgAttribute", PCRYPT_ATTRIBUTE),
]
PCTL_ENTRY = POINTER(_CTL_ENTRY)
CTL_ENTRY = _CTL_ENTRY
# Struct _CRYPT_ATTRIBUTE definitions
class _CRYPT_ATTRIBUTE(Structure):
_fields_ = [
("pszObjId", LPSTR),
("cValue", DWORD),
("rgValue", PCRYPT_ATTR_BLOB),
]
PCRYPT_ATTRIBUTE = POINTER(_CRYPT_ATTRIBUTE)
CRYPT_ATTRIBUTE = _CRYPT_ATTRIBUTE
# Struct _CRYPT_ATTRIBUTES definitions
class _CRYPT_ATTRIBUTES(Structure):
_fields_ = [
("cAttr", DWORD),
("rgAttr", PCRYPT_ATTRIBUTE),
]
CRYPT_ATTRIBUTES = _CRYPT_ATTRIBUTES
PCRYPT_ATTRIBUTES = POINTER(_CRYPT_ATTRIBUTES)
# Struct _CRYPT_ALGORITHM_IDENTIFIER definitions
class _CRYPT_ALGORITHM_IDENTIFIER(Structure):
_fields_ = [
("pszObjId", LPSTR),
("Parameters", CRYPT_OBJID_BLOB),
]
CRYPT_ALGORITHM_IDENTIFIER = _CRYPT_ALGORITHM_IDENTIFIER
PCRYPT_ALGORITHM_IDENTIFIER = POINTER(_CRYPT_ALGORITHM_IDENTIFIER)
# Struct _CMSG_SIGNER_INFO definitions
class _CMSG_SIGNER_INFO(Structure):
_fields_ = [
("dwVersion", DWORD),
("Issuer", CERT_NAME_BLOB),
("SerialNumber", CRYPT_INTEGER_BLOB),
("HashAlgorithm", CRYPT_ALGORITHM_IDENTIFIER),
("HashEncryptionAlgorithm", CRYPT_ALGORITHM_IDENTIFIER),
("EncryptedHash", CRYPT_DATA_BLOB),
("AuthAttrs", CRYPT_ATTRIBUTES),
("UnauthAttrs", CRYPT_ATTRIBUTES),
]
CMSG_SIGNER_INFO = _CMSG_SIGNER_INFO
PCMSG_SIGNER_INFO = POINTER(_CMSG_SIGNER_INFO)
# Struct _CERT_EXTENSION definitions
class _CERT_EXTENSION(Structure):
_fields_ = [
("pszObjId", LPSTR),
("fCritical", BOOL),
("Value", CRYPT_OBJID_BLOB),
]
CERT_EXTENSION = _CERT_EXTENSION
PCERT_EXTENSION = POINTER(_CERT_EXTENSION)
# Struct _CTL_USAGE definitions
class _CTL_USAGE(Structure):
_fields_ = [
("cUsageIdentifier", DWORD),
("rgpszUsageIdentifier", POINTER(LPSTR)),
]
CERT_ENHKEY_USAGE = _CTL_USAGE
PCTL_USAGE = POINTER(_CTL_USAGE)
CTL_USAGE = _CTL_USAGE
PCERT_ENHKEY_USAGE = POINTER(_CTL_USAGE)
# Struct _CTL_INFO definitions
class _CTL_INFO(Structure):
_fields_ = [
("dwVersion", DWORD),
("SubjectUsage", CTL_USAGE),
("ListIdentifier", CRYPT_DATA_BLOB),
("SequenceNumber", CRYPT_INTEGER_BLOB),
("ThisUpdate", FILETIME),
("NextUpdate", FILETIME),
("SubjectAlgorithm", CRYPT_ALGORITHM_IDENTIFIER),
("cCTLEntry", DWORD),
("rgCTLEntry", PCTL_ENTRY),
("cExtension", DWORD),
("rgExtension", PCERT_EXTENSION),
]
CTL_INFO = _CTL_INFO
PCTL_INFO = POINTER(_CTL_INFO)
# Struct _CTL_CONTEXT definitions
class _CTL_CONTEXT(Structure):
_fields_ = [
("dwMsgAndCertEncodingType", DWORD),
("pbCtlEncoded", POINTER(BYTE)),
("cbCtlEncoded", DWORD),
("pCtlInfo", PCTL_INFO),
("hCertStore", HCERTSTORE),
("hCryptMsg", HCRYPTMSG),
("pbCtlContent", POINTER(BYTE)),
("cbCtlContent", DWORD),
]
PCTL_CONTEXT = POINTER(_CTL_CONTEXT)
CTL_CONTEXT = _CTL_CONTEXT
PCCTL_CONTEXT = POINTER(_CTL_CONTEXT)
# Struct WINTRUST_CATALOG_INFO_ definitions
class WINTRUST_CATALOG_INFO_(Structure):
_fields_ = [
("cbStruct", DWORD),
("dwCatalogVersion", DWORD),
("pcwszCatalogFilePath", LPCWSTR),
("pcwszMemberTag", LPCWSTR),
("pcwszMemberFilePath", LPCWSTR),
("hMemberFile", HANDLE),
("pbCalculatedFileHash", POINTER(BYTE)),
("cbCalculatedFileHash", DWORD),
("pcCatalogContext", PCCTL_CONTEXT),
]
PWINTRUST_CATALOG_INFO = POINTER(WINTRUST_CATALOG_INFO_)
WINTRUST_CATALOG_INFO = WINTRUST_CATALOG_INFO_
# Struct WINTRUST_BLOB_INFO_ definitions
class WINTRUST_BLOB_INFO_(Structure):
_fields_ = [
("cbStruct", DWORD),
("gSubject", GUID),
("pcwszDisplayName", LPCWSTR),
("cbMemObject", DWORD),
("pbMemObject", POINTER(BYTE)),
("cbMemSignedMsg", DWORD),
("pbMemSignedMsg", POINTER(BYTE)),
]
PWINTRUST_BLOB_INFO = POINTER(WINTRUST_BLOB_INFO_)
WINTRUST_BLOB_INFO = WINTRUST_BLOB_INFO_
# Struct _CRYPT_BIT_BLOB definitions
class _CRYPT_BIT_BLOB(Structure):
_fields_ = [
("cbData", DWORD),
("pbData", POINTER(BYTE)),
("cUnusedBits", DWORD),
]
CRYPT_BIT_BLOB = _CRYPT_BIT_BLOB
PCRYPT_BIT_BLOB = POINTER(_CRYPT_BIT_BLOB)
# Struct _CERT_PUBLIC_KEY_INFO definitions
class _CERT_PUBLIC_KEY_INFO(Structure):
_fields_ = [
("Algorithm", CRYPT_ALGORITHM_IDENTIFIER),
("PublicKey", CRYPT_BIT_BLOB),
]
PCERT_PUBLIC_KEY_INFO = POINTER(_CERT_PUBLIC_KEY_INFO)
CERT_PUBLIC_KEY_INFO = _CERT_PUBLIC_KEY_INFO
# Struct _CERT_INFO definitions
class _CERT_INFO(Structure):
_fields_ = [
("dwVersion", DWORD),
("SerialNumber", CRYPT_INTEGER_BLOB),
("SignatureAlgorithm", CRYPT_ALGORITHM_IDENTIFIER),
("Issuer", CERT_NAME_BLOB),
("NotBefore", FILETIME),
("NotAfter", FILETIME),
("Subject", CERT_NAME_BLOB),
("SubjectPublicKeyInfo", CERT_PUBLIC_KEY_INFO),
("IssuerUniqueId", CRYPT_BIT_BLOB),
("SubjectUniqueId", CRYPT_BIT_BLOB),
("cExtension", DWORD),
("rgExtension", PCERT_EXTENSION),
]
CERT_INFO = _CERT_INFO
PCERT_INFO = POINTER(_CERT_INFO)
# Struct _CERT_CONTEXT definitions
class _CERT_CONTEXT(Structure):
_fields_ = [
("dwCertEncodingType", DWORD),
("pbCertEncoded", POINTER(BYTE)),
("cbCertEncoded", DWORD),
("pCertInfo", PCERT_INFO),
("hCertStore", HCERTSTORE),
]
CERT_CONTEXT = _CERT_CONTEXT
PCERT_CONTEXT = POINTER(_CERT_CONTEXT)
# Struct WINTRUST_SGNR_INFO_ definitions
class WINTRUST_SGNR_INFO_(Structure):
_fields_ = [
("cbStruct", DWORD),
("pcwszDisplayName", LPCWSTR),
("psSignerInfo", POINTER(CMSG_SIGNER_INFO)),
("chStores", DWORD),
("pahStores", POINTER(HCERTSTORE)),
]
WINTRUST_SGNR_INFO = WINTRUST_SGNR_INFO_
PWINTRUST_SGNR_INFO = POINTER(WINTRUST_SGNR_INFO_)
# Struct _FILETIME definitions
class _FILETIME(Structure):
_fields_ = [
("dwLowDateTime", DWORD),
("dwHighDateTime", DWORD),
]
LPFILETIME = POINTER(_FILETIME)
PFILETIME = POINTER(_FILETIME)
FILETIME = _FILETIME
# Struct WINTRUST_CERT_INFO_ definitions
class WINTRUST_CERT_INFO_(Structure):
_fields_ = [
("cbStruct", DWORD),
("pcwszDisplayName", LPCWSTR),
("psCertContext", POINTER(CERT_CONTEXT)),
("chStores", DWORD),
("pahStores", POINTER(HCERTSTORE)),
("dwFlags", DWORD),
("psftVerifyAsOf", POINTER(FILETIME)),
]
WINTRUST_CERT_INFO = WINTRUST_CERT_INFO_
PWINTRUST_CERT_INFO = POINTER(WINTRUST_CERT_INFO_)
# Struct _TMP_WINTRUST_UNION_TYPE definitions
class _TMP_WINTRUST_UNION_TYPE(Union):
_fields_ = [
("pFile", POINTER(WINTRUST_FILE_INFO_)),
("pCatalog", POINTER(WINTRUST_CATALOG_INFO_)),
("pBlob", POINTER(WINTRUST_BLOB_INFO_)),
("pSgnr", POINTER(WINTRUST_SGNR_INFO_)),
("pCert", POINTER(WINTRUST_CERT_INFO_)),
]
TMP_WINTRUST_UNION_TYPE = _TMP_WINTRUST_UNION_TYPE
# Struct _WINTRUST_DATA definitions
class _WINTRUST_DATA(Structure):
_fields_ = [
("cbStruct", DWORD),
("pPolicyCallbackData", LPVOID),
("pSIPClientData", LPVOID),
("dwUIChoice", DWORD),
("fdwRevocationChecks", DWORD),
("dwUnionChoice", DWORD),
("tmp_union", TMP_WINTRUST_UNION_TYPE),
("dwStateAction", DWORD),
("hWVTStateData", HANDLE),
("pwszURLReference", POINTER(WCHAR)),
("dwProvFlags", DWORD),
("dwUIContext", DWORD),
]
PWINTRUST_DATA = POINTER(_WINTRUST_DATA)
WINTRUST_DATA = _WINTRUST_DATA
# Struct _PROCESS_BASIC_INFORMATION definitions
class _PROCESS_BASIC_INFORMATION(Structure):
_fields_ = [
("Reserved1", PVOID),
("PebBaseAddress", PPEB),
("Reserved2", PVOID * 2),
("UniqueProcessId", ULONG_PTR),
("Reserved3", PVOID),
]
PPROCESS_BASIC_INFORMATION = POINTER(_PROCESS_BASIC_INFORMATION)
PROCESS_BASIC_INFORMATION = _PROCESS_BASIC_INFORMATION