mirror of
https://github.com/hakril/PythonForWindows
synced 2026-06-08 14:31:45 +00:00
Added new ctypes definition
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
/* From ntdbg.h */
|
||||
|
||||
#define X86_KGDT_NULL 0
|
||||
#define X86_KGDT_R0_CODE 8
|
||||
#define X86_KGDT_R0_DATA 16
|
||||
#define X86_KGDT_R3_CODE 24
|
||||
#define X86_KGDT_R3_DATA 32
|
||||
#define X86_KGDT_TSS 40
|
||||
#define X86_KGDT_R0_PCR 48
|
||||
#define X86_KGDT_R3_TEB 56
|
||||
#define X86_KGDT_VDM_TILE 64
|
||||
#define X86_KGDT_LDT 72
|
||||
#define X86_KGDT_DF_TSS 80
|
||||
#define X86_KGDT_NMI_TSS 88
|
||||
|
||||
#define X86_FRAME_EDITED 0xfff8
|
||||
#define X86_MODE_MASK 1
|
||||
#define X86_EFLAGS_V86_MASK 0x00020000
|
||||
|
||||
#define AMD64_KGDT64_NULL (0 * 16) // NULL descriptor
|
||||
#define AMD64_KGDT64_R0_CODE (1 * 16) // kernel mode 64-bit code
|
||||
#define AMD64_KGDT64_R0_DATA (1 * 16) + 8 // kernel mode 64-bit data (stack)
|
||||
#define AMD64_KGDT64_R3_CMCODE (2 * 16) // user mode 32-bit code
|
||||
#define AMD64_KGDT64_R3_DATA (2 * 16) + 8 // user mode 32-bit data
|
||||
#define AMD64_KGDT64_R3_CODE (3 * 16) // user mode 64-bit code
|
||||
#define AMD64_KGDT64_SYS_TSS (4 * 16) // kernel mode system task state
|
||||
#define AMD64_KGDT64_R3_CMTEB (5 * 16) // user mode 32-bit TEB
|
||||
#define AMD64_KGDT64_LAST (6 * 16)
|
||||
|
||||
/* From i386.h & amd64.h */
|
||||
|
||||
#define MODE_BIT 0
|
||||
#define MODE_MASK 1 // ntosp
|
||||
#define RPL_MASK 3
|
||||
|
||||
/* Custom usefull define for CS userland values 0x23 * 0x33 */
|
||||
|
||||
#define CS_USER_32B (AMD64_KGDT64_R3_CMCODE | RPL_MASK)
|
||||
#define CS_USER_64B (AMD64_KGDT64_R3_CODE | RPL_MASK)
|
||||
@@ -334,4 +334,27 @@
|
||||
SC_MANAGER_ENUMERATE_SERVICE | \
|
||||
SC_MANAGER_LOCK | \
|
||||
SC_MANAGER_QUERY_LOCK_STATUS | \
|
||||
SC_MANAGER_MODIFY_BOOT_CONFIG)
|
||||
SC_MANAGER_MODIFY_BOOT_CONFIG)
|
||||
|
||||
|
||||
/// Active Directory
|
||||
|
||||
#define ADS_RIGHT_DELETE 0x10000
|
||||
#define ADS_RIGHT_READ_CONTROL 0x20000
|
||||
#define ADS_RIGHT_WRITE_DAC 0x40000
|
||||
#define ADS_RIGHT_WRITE_OWNER 0x80000
|
||||
#define ADS_RIGHT_SYNCHRONIZE 0x100000
|
||||
#define ADS_RIGHT_ACCESS_SYSTEM_SECURITY 0x1000000
|
||||
#define ADS_RIGHT_GENERIC_READ 0x80000000
|
||||
#define ADS_RIGHT_GENERIC_WRITE 0x40000000
|
||||
#define ADS_RIGHT_GENERIC_EXECUTE 0x20000000
|
||||
#define ADS_RIGHT_GENERIC_ALL 0x10000000
|
||||
#define ADS_RIGHT_DS_CREATE_CHILD 0x1
|
||||
#define ADS_RIGHT_DS_DELETE_CHILD 0x2
|
||||
#define ADS_RIGHT_ACTRL_DS_LIST 0x4
|
||||
#define ADS_RIGHT_DS_SELF 0x8
|
||||
#define ADS_RIGHT_DS_READ_PROP 0x10
|
||||
#define ADS_RIGHT_DS_WRITE_PROP 0x20
|
||||
#define ADS_RIGHT_DS_DELETE_TREE 0x40
|
||||
#define ADS_RIGHT_DS_LIST_OBJECT 0x80
|
||||
#define ADS_RIGHT_DS_CONTROL_ACCESS 0x100
|
||||
|
||||
@@ -14,7 +14,12 @@ class Flag(long):
|
||||
def __repr__(self):
|
||||
return "{0}({1:#x})".format(self.name, self)
|
||||
|
||||
__str__ = __repr__
|
||||
# Custom __str__ removed for multiple reason
|
||||
# Main one -> it breaks the json encoding of structure with flags :)
|
||||
# Moving to a new politic -> if people want the name in a string use {x!r}
|
||||
# The __str__ of security descriptor & guid will change soon as well :)
|
||||
|
||||
# __str__ = __repr__
|
||||
|
||||
# Fix pickling with protocol 2
|
||||
def __getnewargs__(self, *args):
|
||||
|
||||
@@ -535,4 +535,13 @@ BOOL CryptGetOIDFunctionValue(
|
||||
DWORD *pdwValueType,
|
||||
BYTE *pbValueData,
|
||||
DWORD *pcbValueData
|
||||
);
|
||||
|
||||
BOOL CertCloseStore(
|
||||
HCERTSTORE hCertStore,
|
||||
DWORD dwFlags
|
||||
);
|
||||
|
||||
BOOL CryptMsgClose(
|
||||
HCRYPTMSG hCryptMsg
|
||||
);
|
||||
@@ -226,3 +226,12 @@ DWORD SetNamedSecurityInfoW(
|
||||
PACL pDacl,
|
||||
PACL pSacl
|
||||
);
|
||||
|
||||
/* Not documented but exported : guess from test*/
|
||||
|
||||
DWORD GetStringConditionFromBinary(
|
||||
BYTE* BinaryAceCondition,
|
||||
DWORD BinaryAceConditionSize,
|
||||
DWORD Reserved1,
|
||||
LPWSTR *StringAceCondition
|
||||
);
|
||||
@@ -36,6 +36,12 @@ BOOL WINAPI SymGetModuleInfo64(
|
||||
_Out_ PIMAGEHLP_MODULE64 ModuleInfo
|
||||
);
|
||||
|
||||
BOOL WINAPI SymGetModuleInfoW64(
|
||||
_In_ HANDLE hProcess,
|
||||
_In_ DWORD64 qwAddr,
|
||||
_Out_ PIMAGEHLP_MODULEW64 ModuleInfo
|
||||
);
|
||||
|
||||
BOOL WINAPI SymInitialize(
|
||||
_In_ HANDLE hProcess,
|
||||
_In_opt_ LPCSTR UserSearchPath,
|
||||
@@ -48,7 +54,11 @@ BOOL WINAPI SymFromName(
|
||||
_Inout_ PSYMBOL_INFO Symbol
|
||||
);
|
||||
|
||||
|
||||
BOOL WINAPI SymFromNameW(
|
||||
_In_ HANDLE hProcess,
|
||||
_In_ PCWSTR Name,
|
||||
_Inout_ PSYMBOL_INFOW Symbol
|
||||
);
|
||||
|
||||
DWORD64 WINAPI SymLoadModuleEx(
|
||||
_In_ HANDLE hProcess,
|
||||
@@ -65,6 +75,8 @@ DWORD WINAPI SymSetOptions(
|
||||
_In_ DWORD SymOptions
|
||||
);
|
||||
|
||||
DWORD SymGetOptions(
|
||||
);
|
||||
|
||||
BOOL WINAPI SymEnumSymbols(
|
||||
_In_ HANDLE hProcess,
|
||||
@@ -247,7 +259,6 @@ BOOL SymEnumSymbolsForAddrW(
|
||||
);
|
||||
|
||||
|
||||
|
||||
BOOL WINAPI SymGetTypeFromName(
|
||||
_In_ HANDLE hProcess,
|
||||
_In_ ULONG64 BaseOfDll,
|
||||
@@ -295,11 +306,21 @@ PVOID SymFunctionTableAccess(
|
||||
DWORD AddrBase
|
||||
);
|
||||
|
||||
PVOID SymFunctionTableAccess64(
|
||||
HANDLE hProcess,
|
||||
DWORD64 AddrBase
|
||||
);
|
||||
|
||||
DWORD SymGetModuleBase(
|
||||
HANDLE hProcess,
|
||||
DWORD dwAddr
|
||||
);
|
||||
|
||||
DWORD64 SymGetModuleBase64(
|
||||
HANDLE hProcess,
|
||||
DWORD64 qwAddr
|
||||
);
|
||||
|
||||
BOOL SymRefreshModuleList(
|
||||
HANDLE hProcess
|
||||
);
|
||||
@@ -361,4 +382,26 @@ BOOL StackWalk(
|
||||
PFUNCTION_TABLE_ACCESS_ROUTINE FunctionTableAccessRoutine,
|
||||
PGET_MODULE_BASE_ROUTINE GetModuleBaseRoutine,
|
||||
PTRANSLATE_ADDRESS_ROUTINE TranslateAddress
|
||||
);
|
||||
|
||||
BOOL SymGetSearchPath(
|
||||
HANDLE hProcess,
|
||||
PSTR SearchPath,
|
||||
DWORD SearchPathLength
|
||||
);
|
||||
|
||||
BOOL SymGetSearchPathW(
|
||||
HANDLE hProcess,
|
||||
PWSTR SearchPath,
|
||||
DWORD SearchPathLength
|
||||
);
|
||||
|
||||
BOOL SymSetSearchPath(
|
||||
HANDLE hProcess,
|
||||
PCSTR SearchPath
|
||||
);
|
||||
|
||||
BOOL SymSetSearchPathW(
|
||||
HANDLE hProcess,
|
||||
PCWSTR SearchPath
|
||||
);
|
||||
@@ -0,0 +1,75 @@
|
||||
typedef struct _EXCEPTION_DEBUG_INFO {
|
||||
EXCEPTION_RECORD ExceptionRecord;
|
||||
DWORD dwFirstChance;
|
||||
} EXCEPTION_DEBUG_INFO, *LPEXCEPTION_DEBUG_INFO;
|
||||
|
||||
typedef struct _CREATE_THREAD_DEBUG_INFO {
|
||||
HANDLE hThread;
|
||||
LPVOID lpThreadLocalBase;
|
||||
LPTHREAD_START_ROUTINE lpStartAddress;
|
||||
} CREATE_THREAD_DEBUG_INFO, *LPCREATE_THREAD_DEBUG_INFO;
|
||||
|
||||
typedef struct _CREATE_PROCESS_DEBUG_INFO {
|
||||
HANDLE hFile;
|
||||
HANDLE hProcess;
|
||||
HANDLE hThread;
|
||||
LPVOID lpBaseOfImage;
|
||||
DWORD dwDebugInfoFileOffset;
|
||||
DWORD nDebugInfoSize;
|
||||
LPVOID lpThreadLocalBase;
|
||||
LPTHREAD_START_ROUTINE lpStartAddress;
|
||||
LPVOID lpImageName;
|
||||
WORD fUnicode;
|
||||
} CREATE_PROCESS_DEBUG_INFO, *LPCREATE_PROCESS_DEBUG_INFO;
|
||||
|
||||
|
||||
typedef struct _EXIT_THREAD_DEBUG_INFO {
|
||||
DWORD dwExitCode;
|
||||
} EXIT_THREAD_DEBUG_INFO, *LPEXIT_THREAD_DEBUG_INFO;
|
||||
|
||||
typedef struct _EXIT_PROCESS_DEBUG_INFO {
|
||||
DWORD dwExitCode;
|
||||
} EXIT_PROCESS_DEBUG_INFO, *LPEXIT_PROCESS_DEBUG_INFO;
|
||||
|
||||
typedef struct _LOAD_DLL_DEBUG_INFO {
|
||||
HANDLE hFile;
|
||||
LPVOID lpBaseOfDll;
|
||||
DWORD dwDebugInfoFileOffset;
|
||||
DWORD nDebugInfoSize;
|
||||
LPVOID lpImageName;
|
||||
WORD fUnicode;
|
||||
} LOAD_DLL_DEBUG_INFO, *LPLOAD_DLL_DEBUG_INFO;
|
||||
|
||||
typedef struct _UNLOAD_DLL_DEBUG_INFO {
|
||||
LPVOID lpBaseOfDll;
|
||||
} UNLOAD_DLL_DEBUG_INFO, *LPUNLOAD_DLL_DEBUG_INFO;
|
||||
|
||||
typedef struct _OUTPUT_DEBUG_STRING_INFO {
|
||||
LPSTR lpDebugStringData;
|
||||
WORD fUnicode;
|
||||
WORD nDebugStringLength;
|
||||
} OUTPUT_DEBUG_STRING_INFO, *LPOUTPUT_DEBUG_STRING_INFO;
|
||||
|
||||
typedef struct _RIP_INFO {
|
||||
DWORD dwError;
|
||||
DWORD dwType;
|
||||
} RIP_INFO, *LPRIP_INFO;
|
||||
|
||||
typedef union _TMP_UNION_DEBUG_INFO {
|
||||
EXCEPTION_DEBUG_INFO Exception;
|
||||
CREATE_THREAD_DEBUG_INFO CreateThread;
|
||||
CREATE_PROCESS_DEBUG_INFO CreateProcessInfo;
|
||||
EXIT_THREAD_DEBUG_INFO ExitThread;
|
||||
EXIT_PROCESS_DEBUG_INFO ExitProcess;
|
||||
LOAD_DLL_DEBUG_INFO LoadDll;
|
||||
UNLOAD_DLL_DEBUG_INFO UnloadDll;
|
||||
OUTPUT_DEBUG_STRING_INFO DebugString;
|
||||
RIP_INFO RipInfo;
|
||||
} TMP_UNION_DEBUG_INFO;
|
||||
|
||||
typedef struct _DEBUG_EVENT {
|
||||
DWORD dwDebugEventCode;
|
||||
DWORD dwProcessId;
|
||||
DWORD dwThreadId;
|
||||
_TMP_UNION_DEBUG_INFO u;
|
||||
} DEBUG_EVENT, *LPDEBUG_EVENT;
|
||||
@@ -616,7 +616,6 @@ typedef struct _DnsRecordFlags
|
||||
DWORD Delete : 1;
|
||||
DWORD CharSet : 2;
|
||||
DWORD Unused : 3;
|
||||
|
||||
DWORD Reserved : 24;
|
||||
}
|
||||
DNS_RECORD_FLAGS;
|
||||
|
||||
@@ -5,6 +5,7 @@ typedef enum _ACL_INFORMATION_CLASS {
|
||||
AclSizeInformation = 2,
|
||||
} ACL_INFORMATION_CLASS;
|
||||
|
||||
|
||||
/* ACL Stuff */
|
||||
|
||||
typedef struct _ACL {
|
||||
|
||||
@@ -104,7 +104,7 @@ typedef struct _IMAGEHLP_MODULE64 {
|
||||
CHAR LoadedImageName[256];
|
||||
CHAR LoadedPdbName[256];
|
||||
DWORD CVSig;
|
||||
CHAR CVData[780]; // MAX_PATH * 3
|
||||
CHAR CVData[MAX_PATH * 3];
|
||||
DWORD PdbSig;
|
||||
GUID PdbSig70;
|
||||
DWORD PdbAge;
|
||||
@@ -117,6 +117,34 @@ typedef struct _IMAGEHLP_MODULE64 {
|
||||
BOOL Publics;
|
||||
} IMAGEHLP_MODULE64, *PIMAGEHLP_MODULE64;
|
||||
|
||||
typedef struct _IMAGEHLP_MODULEW64 {
|
||||
DWORD SizeOfStruct;
|
||||
DWORD64 BaseOfImage;
|
||||
DWORD ImageSize;
|
||||
DWORD TimeDateStamp;
|
||||
DWORD CheckSum;
|
||||
DWORD NumSyms;
|
||||
SYM_TYPE SymType;
|
||||
WCHAR ModuleName[32];
|
||||
WCHAR ImageName[256];
|
||||
WCHAR LoadedImageName[256];
|
||||
WCHAR LoadedPdbName[256];
|
||||
DWORD CVSig;
|
||||
WCHAR *CVData[MAX_PATH * 3];
|
||||
DWORD PdbSig;
|
||||
GUID PdbSig70;
|
||||
DWORD PdbAge;
|
||||
BOOL PdbUnmatched;
|
||||
BOOL DbgUnmatched;
|
||||
BOOL LineNumbers;
|
||||
BOOL GlobalSymbols;
|
||||
BOOL TypeInfo;
|
||||
BOOL SourceIndexed;
|
||||
BOOL Publics;
|
||||
DWORD MachineType;
|
||||
DWORD Reserved;
|
||||
} IMAGEHLP_MODULEW64, *PIMAGEHLP_MODULEW64;
|
||||
|
||||
|
||||
typedef enum _IMAGEHLP_SYMBOL_TYPE_INFO {
|
||||
TI_GET_SYMTAG,
|
||||
|
||||
@@ -1714,82 +1714,6 @@ typedef struct _SID_IDENTIFIER_AUTHORITY {
|
||||
BYTE Value[6];
|
||||
} SID_IDENTIFIER_AUTHORITY, *PSID_IDENTIFIER_AUTHORITY;
|
||||
|
||||
typedef struct _EXCEPTION_DEBUG_INFO {
|
||||
EXCEPTION_RECORD ExceptionRecord;
|
||||
DWORD dwFirstChance;
|
||||
} EXCEPTION_DEBUG_INFO, *LPEXCEPTION_DEBUG_INFO;
|
||||
|
||||
typedef struct _CREATE_THREAD_DEBUG_INFO {
|
||||
HANDLE hThread;
|
||||
LPVOID lpThreadLocalBase;
|
||||
LPTHREAD_START_ROUTINE lpStartAddress;
|
||||
} CREATE_THREAD_DEBUG_INFO, *LPCREATE_THREAD_DEBUG_INFO;
|
||||
|
||||
typedef struct _CREATE_PROCESS_DEBUG_INFO {
|
||||
HANDLE hFile;
|
||||
HANDLE hProcess;
|
||||
HANDLE hThread;
|
||||
LPVOID lpBaseOfImage;
|
||||
DWORD dwDebugInfoFileOffset;
|
||||
DWORD nDebugInfoSize;
|
||||
LPVOID lpThreadLocalBase;
|
||||
LPTHREAD_START_ROUTINE lpStartAddress;
|
||||
LPVOID lpImageName;
|
||||
WORD fUnicode;
|
||||
} CREATE_PROCESS_DEBUG_INFO, *LPCREATE_PROCESS_DEBUG_INFO;
|
||||
|
||||
|
||||
typedef struct _EXIT_THREAD_DEBUG_INFO {
|
||||
DWORD dwExitCode;
|
||||
} EXIT_THREAD_DEBUG_INFO, *LPEXIT_THREAD_DEBUG_INFO;
|
||||
|
||||
typedef struct _EXIT_PROCESS_DEBUG_INFO {
|
||||
DWORD dwExitCode;
|
||||
} EXIT_PROCESS_DEBUG_INFO, *LPEXIT_PROCESS_DEBUG_INFO;
|
||||
|
||||
typedef struct _LOAD_DLL_DEBUG_INFO {
|
||||
HANDLE hFile;
|
||||
LPVOID lpBaseOfDll;
|
||||
DWORD dwDebugInfoFileOffset;
|
||||
DWORD nDebugInfoSize;
|
||||
LPVOID lpImageName;
|
||||
WORD fUnicode;
|
||||
} LOAD_DLL_DEBUG_INFO, *LPLOAD_DLL_DEBUG_INFO;
|
||||
|
||||
typedef struct _UNLOAD_DLL_DEBUG_INFO {
|
||||
LPVOID lpBaseOfDll;
|
||||
} UNLOAD_DLL_DEBUG_INFO, *LPUNLOAD_DLL_DEBUG_INFO;
|
||||
|
||||
typedef struct _OUTPUT_DEBUG_STRING_INFO {
|
||||
LPSTR lpDebugStringData;
|
||||
WORD fUnicode;
|
||||
WORD nDebugStringLength;
|
||||
} OUTPUT_DEBUG_STRING_INFO, *LPOUTPUT_DEBUG_STRING_INFO;
|
||||
|
||||
typedef struct _RIP_INFO {
|
||||
DWORD dwError;
|
||||
DWORD dwType;
|
||||
} RIP_INFO, *LPRIP_INFO;
|
||||
|
||||
typedef union _TMP_UNION_DEBUG_INFO {
|
||||
EXCEPTION_DEBUG_INFO Exception;
|
||||
CREATE_THREAD_DEBUG_INFO CreateThread;
|
||||
CREATE_PROCESS_DEBUG_INFO CreateProcessInfo;
|
||||
EXIT_THREAD_DEBUG_INFO ExitThread;
|
||||
EXIT_PROCESS_DEBUG_INFO ExitProcess;
|
||||
LOAD_DLL_DEBUG_INFO LoadDll;
|
||||
UNLOAD_DLL_DEBUG_INFO UnloadDll;
|
||||
OUTPUT_DEBUG_STRING_INFO DebugString;
|
||||
RIP_INFO RipInfo;
|
||||
} TMP_UNION_DEBUG_INFO;
|
||||
|
||||
typedef struct _DEBUG_EVENT {
|
||||
DWORD dwDebugEventCode;
|
||||
DWORD dwProcessId;
|
||||
DWORD dwThreadId;
|
||||
_TMP_UNION_DEBUG_INFO u;
|
||||
} DEBUG_EVENT, *LPDEBUG_EVENT;
|
||||
|
||||
|
||||
typedef struct _STRING {
|
||||
USHORT Length;
|
||||
|
||||
@@ -1,18 +1,11 @@
|
||||
_INITIAL_PSID = PSID
|
||||
class PSID(_INITIAL_PSID): # _INITIAL_PSID -> PVOID
|
||||
# def __init__(self, strsid=None):
|
||||
# if strsid is not None:
|
||||
# windows.winproxy.ConvertStringSidToSidA(strsid, self)
|
||||
|
||||
def __str__(self):
|
||||
sid_str = LPCSTR()
|
||||
windows.winproxy.ConvertSidToStringSidA(self, sid_str)
|
||||
result = sid_str.value
|
||||
windows.winproxy.LocalFree(sid_str)
|
||||
return result
|
||||
|
||||
def __eq__(self, other):
|
||||
return windows.winproxy.EqualSid(self, other)
|
||||
return bool(windows.winproxy.EqualSid(self, other))
|
||||
|
||||
def __ne__(self, other):
|
||||
return not windows.winproxy.EqualSid(self, other)
|
||||
|
||||
@property
|
||||
def size(self):
|
||||
@@ -37,6 +30,8 @@ class PSID(_INITIAL_PSID): # _INITIAL_PSID -> PVOID
|
||||
windows.winproxy.LocalFree(sid_str)
|
||||
return result
|
||||
|
||||
__str__ = to_string
|
||||
|
||||
def __repr__(self):
|
||||
try:
|
||||
return """<{0} "{1}">""".format(type(self).__name__, self.to_string())
|
||||
|
||||
@@ -26,11 +26,14 @@ class _GUID(INITIAL_GUID):
|
||||
|
||||
__sprint__ = __repr__
|
||||
|
||||
|
||||
def to_string(self):
|
||||
data4_format = "{0:02X}{1:02X}-" + "".join("{{{i}:02X}}".format(i=i + 2) for i in range(6))
|
||||
data4_str = data4_format.format(*self.Data4)
|
||||
return "{0:08X}-{1:04X}-{2:04X}-".format(self.Data1, self.Data2, self.Data3) + data4_str
|
||||
|
||||
__str__ = to_string
|
||||
|
||||
def update_strid(self):
|
||||
new_strid = self.to_string()
|
||||
self.strid = new_strid
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
# typedef struct _LOAD_DLL_DEBUG_INFO {
|
||||
# HANDLE hFile;
|
||||
# LPVOID lpBaseOfDll;
|
||||
# DWORD dwDebugInfoFileOffset;
|
||||
# DWORD nDebugInfoSize;
|
||||
# LPVOID lpImageName;
|
||||
# WORD fUnicode;
|
||||
# } LOAD_DLL_DEBUG_INFO, *LPLOAD_DLL_DEBUG_INFO;
|
||||
|
||||
class _LOAD_DLL_DEBUG_INFO(_LOAD_DLL_DEBUG_INFO):
|
||||
def hello(self):
|
||||
return "hello"
|
||||
@@ -0,0 +1,42 @@
|
||||
class _SERVICE_STATUS_PROCESS(_SERVICE_STATUS_PROCESS):
|
||||
|
||||
SERVICE_STATE = FlagMapper(SERVICE_STOPPED,
|
||||
SERVICE_START_PENDING,
|
||||
SERVICE_STOP_PENDING,
|
||||
SERVICE_RUNNING,
|
||||
SERVICE_CONTINUE_PENDING,
|
||||
SERVICE_PAUSE_PENDING,
|
||||
SERVICE_PAUSED)
|
||||
|
||||
SERVICE_TYPE = FlagMapper(SERVICE_KERNEL_DRIVER,
|
||||
SERVICE_FILE_SYSTEM_DRIVER,
|
||||
SERVICE_WIN32_OWN_PROCESS,
|
||||
SERVICE_WIN32_SHARE_PROCESS,
|
||||
SERVICE_INTERACTIVE_PROCESS)
|
||||
|
||||
SERVICE_CONTROLE_ACCEPTED = FlagMapper()
|
||||
|
||||
SERVICE_FLAGS = FlagMapper(SERVICE_RUNS_IN_SYSTEM_PROCESS)
|
||||
|
||||
|
||||
@property
|
||||
def dwCurrentState(self):
|
||||
return self.SERVICE_STATE[super(_SERVICE_STATUS_PROCESS, self).dwCurrentState]
|
||||
|
||||
@property
|
||||
def dwServiceType(self):
|
||||
return self.SERVICE_TYPE[super(_SERVICE_STATUS_PROCESS, self).dwServiceType]
|
||||
|
||||
@property
|
||||
def dwControlsAccepted(self):
|
||||
return self.SERVICE_CONTROLE_ACCEPTED[super(_SERVICE_STATUS_PROCESS, self).dwControlsAccepted]
|
||||
|
||||
@property
|
||||
def dwServiceFlags(self):
|
||||
return self.SERVICE_FLAGS[super(_SERVICE_STATUS_PROCESS, self).dwServiceFlags]
|
||||
|
||||
# Python friendly names
|
||||
state = dwCurrentState
|
||||
type = dwServiceType
|
||||
control_accepted = dwControlsAccepted
|
||||
flags = dwServiceFlags
|
||||
@@ -0,0 +1,5 @@
|
||||
old_SYMBOL_INFOW = _SYMBOL_INFOW
|
||||
class _SYMBOL_INFOW(old_SYMBOL_INFOW):
|
||||
@property
|
||||
def tag(self):
|
||||
return SymTagEnum.mapper[self.Tag]
|
||||
@@ -0,0 +1,5 @@
|
||||
class _tagADDRESS64(_tagADDRESS64):
|
||||
def __repr__(self):
|
||||
if not self.Segment:
|
||||
return "<{0} {offset:#x}>".format(type(self).__name__, offset=self.Offset)
|
||||
return "<{0} {seg:#x}:{offset:#x}>".format(type(self).__name__, seg=self.Segment, offset=self.Offset)
|
||||
Reference in New Issue
Block a user