mirror of
https://github.com/hakril/PythonForWindows
synced 2026-06-08 14:31:45 +00:00
Compare commits
189 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| c46f086b88 | |||
| d3e8d73ac7 | |||
| 8fa8cf9be1 | |||
| fdda80fad6 | |||
| 650c672625 | |||
| 6c00426815 | |||
| d0e8443576 | |||
| 4b71ebb174 | |||
| 35e7a8da4a | |||
| c46d76a846 | |||
| bef410a1c3 | |||
| 426d28ded9 | |||
| 5f5ad2531b | |||
| 9aaf2c6f6c | |||
| 8d5bb5c032 | |||
| e4ca049004 | |||
| 5da940a7cb | |||
| d8b1ec6536 | |||
| dd9a809a58 | |||
| 596ab22f1f | |||
| 7446517863 | |||
| 1481e9cd46 | |||
| 37d5e9089e | |||
| 87eace22a0 | |||
| 1573271634 | |||
| df8a63e918 | |||
| 85a40d84f6 | |||
| b0d6003ded | |||
| a5b5c06bcd | |||
| 520fa864b8 | |||
| 6c588cf723 | |||
| 8eb3384fcf | |||
| b4c0223377 | |||
| 11665c4608 | |||
| 45b781b96c | |||
| 83af73a872 | |||
| be935b0f68 | |||
| 8a14cc5b3a | |||
| 1ad456049a | |||
| 16e10af8d8 | |||
| ebded59c43 | |||
| a418035e1e | |||
| e3c6deeee7 | |||
| d4952e21ba | |||
| fc0c81eb70 | |||
| bd52b1a5a3 | |||
| 064b22f99e | |||
| 909669321b | |||
| 405616290f | |||
| a93c9b7f11 | |||
| 06b96e65d0 | |||
| b51a6e1808 | |||
| 26b42a0587 | |||
| 13f2993cf1 | |||
| 4113d8ad3f | |||
| 75f1121182 | |||
| 5c25e333e6 | |||
| 54b518ca5f | |||
| d094fb8209 | |||
| 017867d79d | |||
| e58d80c3c5 | |||
| d7ff43a829 | |||
| 013c35bf40 | |||
| 6a54bca39a | |||
| 2a1217e7b8 | |||
| 6ade13d6bb | |||
| b1d2d5719b | |||
| 5352013a8f | |||
| bce15d0d3c | |||
| 1889899535 | |||
| 1bc7818552 | |||
| 7c96da8c75 | |||
| 458a0d0558 | |||
| 493fe75be8 | |||
| a7b6ddedd6 | |||
| e7679ecfcf | |||
| 4e5325c8ea | |||
| 9b5be5ffd5 | |||
| 720385d15a | |||
| 2cef60377f | |||
| ce13bf08e3 | |||
| 8151292042 | |||
| 646e55c740 | |||
| 00a2f1a7d6 | |||
| 2c9a159a81 | |||
| ea6b7b932d | |||
| 314cd2b862 | |||
| 3a3e6bc931 | |||
| 234844cf12 | |||
| 1297996725 | |||
| 1a9b680fba | |||
| e37f87c35c | |||
| 6eb31e9205 | |||
| b22c5d6055 | |||
| 458774f1ac | |||
| fd00e97d80 | |||
| 533cddae97 | |||
| 57076b84dd | |||
| 1c498aa0e9 | |||
| 7abda41a9d | |||
| 3489a560fb | |||
| 6fd32762da | |||
| aab4fdc02d | |||
| ff4161602c | |||
| 8932682ba2 | |||
| b9d54b3212 | |||
| 60e3d4a2b2 | |||
| 88b93dd64e | |||
| 8beb9fa092 | |||
| f668288dfc | |||
| 43fd2b3ca4 | |||
| f89a24ae48 | |||
| d7cf3e0f8b | |||
| 54be297828 | |||
| 5da27a78d2 | |||
| f7542e686c | |||
| 029f7cba35 | |||
| 36c1eb647f | |||
| 4bbdb538de | |||
| 6ccccf7e90 | |||
| d05801dd46 | |||
| e8930af3ad | |||
| c6898a429c | |||
| 13c28422d4 | |||
| 3818bb2e3d | |||
| 2b64a6d316 | |||
| 5d7e074039 | |||
| 929959d2ac | |||
| 92b3cfcb2b | |||
| 082b13112d | |||
| 52859d19c4 | |||
| 6d621e0716 | |||
| f80c473de0 | |||
| 98abd731e4 | |||
| d0a5dc3c61 | |||
| 2644b53563 | |||
| ba704d6525 | |||
| 42546483dd | |||
| 16242d3436 | |||
| f99dc61bb2 | |||
| ddc9f16e9c | |||
| ab4a4561a3 | |||
| db8d782e3a | |||
| 6715b08ed7 | |||
| 217da0d6b1 | |||
| 7c0c130eec | |||
| 774c35d943 | |||
| b1c147dfaa | |||
| d63731f2d3 | |||
| 99c28ac035 | |||
| d6a6e6496a | |||
| c66b20f0f3 | |||
| 947093cf5b | |||
| 0c9c7d3f49 | |||
| 25534c87ca | |||
| 06a986b57e | |||
| 0a0b96a9ca | |||
| 766f1f5e0a | |||
| 57bcbca837 | |||
| 68ea3c3a02 | |||
| 9bd9ddbd7a | |||
| d79f7c609a | |||
| 22672613a9 | |||
| 1cb8ad02c9 | |||
| 3428acc580 | |||
| ee37178bcf | |||
| f2a287d818 | |||
| e69302449c | |||
| 1f86a8a1c5 | |||
| 2737a64fd7 | |||
| 9163e981fc | |||
| 17d4644973 | |||
| 315ad8ed9e | |||
| da0f403507 | |||
| 31f7d1c593 | |||
| 0e9edcf440 | |||
| 0b0b88a270 | |||
| a45ad2b48c | |||
| d535440a44 | |||
| 4b034fc0fe | |||
| c040ec368e | |||
| 9a67dca363 | |||
| 9041326d82 | |||
| ee2b0e11e5 | |||
| 4985f7bba5 | |||
| 99d39604df | |||
| 196d4dcac4 | |||
| 9c1c125931 | |||
| dce802e0f3 |
@@ -1,16 +1,32 @@
|
||||
# V0.1
|
||||
name: Pytest
|
||||
|
||||
on: [push, workflow_dispatch]
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- 'master'
|
||||
pull_request:
|
||||
# Allows you to run this workflow manually from the Actions tab
|
||||
workflow_dispatch:
|
||||
|
||||
|
||||
jobs:
|
||||
build:
|
||||
generate_ctypes:
|
||||
runs-on: windows-latest
|
||||
timeout-minutes: 15
|
||||
timeout-minutes: 5
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.11'
|
||||
- run:
|
||||
py .\ctypes_generation\generate.py
|
||||
- name: Check generated code can execute
|
||||
run: py -c "import windows.generated_def"
|
||||
tests:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
runs-on: [windows-2022, windows-latest]
|
||||
python-version: [2.7, 3.6, 3.11]
|
||||
python-architecture: [x86, x64]
|
||||
include:
|
||||
@@ -19,6 +35,10 @@ jobs:
|
||||
python-architecture: x86
|
||||
- python-bitness-to-test: 64
|
||||
python-architecture: x64
|
||||
# Not a real dependency : but starting tests when ctypes generation is broken is not useful
|
||||
needs: generate_ctypes
|
||||
timeout-minutes: 15
|
||||
runs-on: ${{ matrix.runs-on }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
@@ -59,11 +79,11 @@ jobs:
|
||||
py -${{ matrix.python-version}}-64 setup.py install
|
||||
|
||||
- name: Installing pytest & capstone-windows
|
||||
run: py -${{ matrix.python-version}}-${{ matrix.python-bitness-to-test}} -m pip install pytest capstone-windows
|
||||
run: py -${{ matrix.python-version}}-${{ matrix.python-bitness-to-test}} -m pip install pytest pytest-timeout capstone-windows
|
||||
|
||||
# Testing
|
||||
- name: Testing
|
||||
run: py -${{ matrix.python-version}}-${{ matrix.python-bitness-to-test}} -m pytest --junitxml=junit/test-results.xml -s -k "not known_to_fail" -v tests/
|
||||
run: py -${{ matrix.python-version}}-${{ matrix.python-bitness-to-test}} -m pytest --junitxml=junit/test-results.xml -s -v tests/
|
||||
|
||||
- name: Publish PyTest Results
|
||||
uses: EnricoMi/publish-unit-test-result-action/windows@v2
|
||||
@@ -73,4 +93,36 @@ jobs:
|
||||
check_name: PyTest Results for ${{ matrix.python-version}}-${{ matrix.python-bitness-to-test}}
|
||||
secondary_rate_limit_wait_seconds: 90
|
||||
seconds_between_github_writes: 10
|
||||
seconds_between_github_reads: 1
|
||||
seconds_between_github_reads: 1
|
||||
|
||||
# tests_arm64:
|
||||
# needs: generate_ctypes
|
||||
# timeout-minutes: 15
|
||||
# runs-on: windows-ARM64
|
||||
# continue-on-error: true
|
||||
#
|
||||
# strategy:
|
||||
# fail-fast: false
|
||||
# matrix:
|
||||
# python-version: [3.11]
|
||||
# python-architecture: [x86, x64, arm64]
|
||||
# include:
|
||||
# # Translate architecture to bitness for py.exe commandline
|
||||
# - python-bitness-to-test: 32
|
||||
# python-architecture: x86
|
||||
# - python-bitness-to-test: 64
|
||||
# python-architecture: x64
|
||||
# - python-bitness-to-test: arm64
|
||||
# python-architecture: arm64
|
||||
#
|
||||
# steps:
|
||||
# - uses: actions/checkout@v4
|
||||
#
|
||||
# - name: Listing python versions availables
|
||||
# run: py -0
|
||||
#
|
||||
# - name: Testing PFW execute
|
||||
# run: py -${{ matrix.python-version}}-${{ matrix.python-bitness-to-test}} -c "import windows; print(windows)"
|
||||
#
|
||||
# - name: Arm64 pytests
|
||||
# run: py -${{ matrix.python-version}}-${{ matrix.python-bitness-to-test}} -m pytest tests -k "not test_debugger" -v -s -r fEsx
|
||||
+6
-1
@@ -3,7 +3,12 @@ doctrees
|
||||
*.inv
|
||||
*.pickle
|
||||
*.ignore
|
||||
*.code-workspace
|
||||
|
||||
.vscode/
|
||||
.cache/
|
||||
dist/
|
||||
dist/
|
||||
build/
|
||||
docs/BuildDocEnv/
|
||||
playground/
|
||||
*egg-info/
|
||||
@@ -1,6 +1,6 @@
|
||||
# PythonForWindows
|
||||
|
||||
[](https://github.com/hakril/PythonForWindows/actions/workflows/mypytest.yml)
|
||||
[](https://github.com/hakril/PythonForWindows/actions/workflows/tests.yml)
|
||||
|
||||
PythonForWindows (PFW) is a base of code aimed to make interaction with `Windows` (on X86/X64) easier (for both 32 and 64 bits Python).
|
||||
Its goal is to offer abstractions around some of the OS features in a (I hope) pythonic way.
|
||||
@@ -39,7 +39,7 @@ python setup.py install
|
||||
|
||||
## Encoding & unicode
|
||||
|
||||
PythonForWindows support `python2.7` & `python3` and is currently tested for `Python2.7`, `3.6` & `3.11` via [Github Workflow](https://github.com/hakril/PythonForWindows/actions/workflows/mypytest.yml)
|
||||
PythonForWindows support `python2.7` & `python3` and is currently tested for `Python2.7`, `3.6` & `3.11` via [Github Workflow](https://github.com/hakril/PythonForWindows/actions/workflows/tests.yml)
|
||||
|
||||
Since 1.0.0, the code uses "wide APIs" whenever possible and accept/returns python3 `str` (py2.7 `unicode` type) almost everywhere. Any functions/APIs not accepting unicode string can be considered a bug if its not stated explicitly in the documentation.
|
||||
|
||||
|
||||
@@ -26,4 +26,8 @@
|
||||
#define SORF_OXRES7 ( 0x400 )
|
||||
#define SORF_OXRES8 ( 0x800 )
|
||||
#define SORF_NULL ( 0 )
|
||||
#define SORF_NOPING ( 0x1000 )
|
||||
#define SORF_NOPING ( 0x1000 )
|
||||
|
||||
#define UNIQUE_FLAG_PADDING 2
|
||||
#define MAINHDRSIG 0x414E554B
|
||||
#define ENTRYHDRSIG 0x494E414E
|
||||
@@ -2,4 +2,22 @@
|
||||
#define ERROR_SEVERITY_SUCCESS 0x00000000
|
||||
#define ERROR_SEVERITY_INFORMATIONAL 0x40000000
|
||||
#define ERROR_SEVERITY_WARNING 0x80000000
|
||||
#define ERROR_SEVERITY_ERROR 0xC0000000
|
||||
#define ERROR_SEVERITY_ERROR 0xC0000000
|
||||
|
||||
// https://learn.microsoft.com/en-us/windows/win32/com/structure-of-com-error-codes
|
||||
// Define the facility codes
|
||||
//
|
||||
#define FACILITY_WINDOWS 0x8
|
||||
#define FACILITY_WIN32 0x7
|
||||
#define FACILITY_STORAGE 0x3
|
||||
#define FACILITY_RPC 0x1
|
||||
#define FACILITY_NULL 0x0
|
||||
#define FACILITY_ITF 0x4
|
||||
#define FACILITY_DISPATCH 0x2
|
||||
|
||||
|
||||
//
|
||||
// Define the severity codes
|
||||
//
|
||||
#define STATUS_SEVERITY_SUCCESS 0x0
|
||||
#define STATUS_SEVERITY_COERROR 0x2
|
||||
@@ -0,0 +1,79 @@
|
||||
// We have a rare case of defines that depends on an enum
|
||||
// Which is PROC_THREAD_ATTRIBUTE_NUM
|
||||
// So i Will just define a copy of those as define here
|
||||
// Define version copied from: https://github.com/winsiderss/systeminformer/blob/master/phnt/include/ntpsapi.h#L2666
|
||||
// Thx to them, as always :)
|
||||
|
||||
#define ProcThreadAttributeParentProcess 0 // in HANDLE
|
||||
#define ProcThreadAttributeExtendedFlags 1 // in ULONG (EXTENDED_PROCESS_CREATION_FLAG_*)
|
||||
#define ProcThreadAttributeHandleList 2 // in HANDLE[]
|
||||
#define ProcThreadAttributeGroupAffinity 3 // in GROUP_AFFINITY // since WIN7
|
||||
#define ProcThreadAttributePreferredNode 4 // in USHORT
|
||||
#define ProcThreadAttributeIdealProcessor 5 // in PROCESSOR_NUMBER
|
||||
#define ProcThreadAttributeUmsThread 6 // in UMS_CREATE_THREAD_ATTRIBUTES
|
||||
#define ProcThreadAttributeMitigationPolicy 7 // in ULONG, ULONG64, or ULONG64[2]
|
||||
#define ProcThreadAttributePackageFullName 8 // in WCHAR[] // since WIN8
|
||||
#define ProcThreadAttributeSecurityCapabilities 9 // in SECURITY_CAPABILITIES
|
||||
#define ProcThreadAttributeConsoleReference 10 // BaseGetConsoleReference (kernelbase.dll)
|
||||
#define ProcThreadAttributeProtectionLevel 11 // in ULONG (PROTECTION_LEVEL_*) // since WINBLUE
|
||||
#define ProcThreadAttributeOsMaxVersionTested 12 // in MAXVERSIONTESTED_INFO // since THRESHOLD // (from exe.manifest)
|
||||
#define ProcThreadAttributeJobList 13 // in HANDLE[]
|
||||
#define ProcThreadAttributeChildProcessPolicy 14 // in ULONG (PROCESS_CREATION_CHILD_PROCESS_*) // since THRESHOLD2
|
||||
#define ProcThreadAttributeAllApplicationPackagesPolicy 15 // in ULONG (PROCESS_CREATION_ALL_APPLICATION_PACKAGES_*) // since REDSTONE
|
||||
#define ProcThreadAttributeWin32kFilter 16 // in WIN32K_SYSCALL_FILTER
|
||||
#define ProcThreadAttributeSafeOpenPromptOriginClaim 17 // in SE_SAFE_OPEN_PROMPT_RESULTS
|
||||
#define ProcThreadAttributeDesktopAppPolicy 18 // in ULONG (PROCESS_CREATION_DESKTOP_APP_*) // since RS2
|
||||
#define ProcThreadAttributeBnoIsolation 19 // in PROC_THREAD_BNOISOLATION_ATTRIBUTE
|
||||
#define ProcThreadAttributePseudoConsole 22 // in HANDLE (HPCON) // since RS5
|
||||
#define ProcThreadAttributeIsolationManifest 23 // in ISOLATION_MANIFEST_PROPERTIES // rev (diversenok) // since 19H2+
|
||||
#define ProcThreadAttributeMitigationAuditPolicy 24 // in ULONG, ULONG64, or ULONG64[2] // since 21H1
|
||||
#define ProcThreadAttributeMachineType 25 // in USHORT // since 21H2
|
||||
#define ProcThreadAttributeComponentFilter 26 // in ULONG
|
||||
#define ProcThreadAttributeEnableOptionalXStateFeatures 27 // in ULONG64 // since WIN11
|
||||
#define ProcThreadAttributeCreateStore 28 // ULONG // rev (diversenok)
|
||||
#define ProcThreadAttributeTrustedApp 29
|
||||
#define ProcThreadAttributeSveVectorLength 30
|
||||
|
||||
// Real definition of value usef by API
|
||||
// From: https://github.com/microsoft/win32metadata/blob/6af96d8470751e13a4e3f579f84b7b8b3ca398e1/generation/WinSDK/RecompiledIdlHeaders/um/WinBase.h#L3568
|
||||
// macro ProcThreadAttributeValue is recoded in python in template.py
|
||||
// I replace TRUE by True && FALSE by False for native python compat :)
|
||||
|
||||
#define PROC_THREAD_ATTRIBUTE_NUMBER 0x0000FFFF
|
||||
#define PROC_THREAD_ATTRIBUTE_THREAD 0x00010000 // Attribute may be used with thread creation
|
||||
#define PROC_THREAD_ATTRIBUTE_INPUT 0x00020000 // Attribute is input only
|
||||
#define PROC_THREAD_ATTRIBUTE_ADDITIVE 0x00040000 // Attribute may be "accumulated," e.g. bitmasks,
|
||||
|
||||
#define PROC_THREAD_ATTRIBUTE_PARENT_PROCESS \
|
||||
ProcThreadAttributeValue (ProcThreadAttributeParentProcess, False, True, False)
|
||||
#define PROC_THREAD_ATTRIBUTE_HANDLE_LIST \
|
||||
ProcThreadAttributeValue (ProcThreadAttributeHandleList, False, True, False)
|
||||
|
||||
#define PROC_THREAD_ATTRIBUTE_GROUP_AFFINITY \
|
||||
ProcThreadAttributeValue (ProcThreadAttributeGroupAffinity, True, True, False)
|
||||
#define PROC_THREAD_ATTRIBUTE_PREFERRED_NODE \
|
||||
ProcThreadAttributeValue (ProcThreadAttributePreferredNode, False, True, False)
|
||||
#define PROC_THREAD_ATTRIBUTE_IDEAL_PROCESSOR \
|
||||
ProcThreadAttributeValue (ProcThreadAttributeIdealProcessor, True, True, False)
|
||||
#define PROC_THREAD_ATTRIBUTE_UMS_THREAD \
|
||||
ProcThreadAttributeValue (ProcThreadAttributeUmsThread, True, True, False)
|
||||
#define PROC_THREAD_ATTRIBUTE_MITIGATION_POLICY \
|
||||
ProcThreadAttributeValue (ProcThreadAttributeMitigationPolicy, False, True, False)
|
||||
|
||||
#define PROC_THREAD_ATTRIBUTE_SECURITY_CAPABILITIES \
|
||||
ProcThreadAttributeValue (ProcThreadAttributeSecurityCapabilities, False, True, False)
|
||||
|
||||
#define PROC_THREAD_ATTRIBUTE_PROTECTION_LEVEL \
|
||||
ProcThreadAttributeValue (ProcThreadAttributeProtectionLevel, False, True, False)
|
||||
|
||||
#define PROC_THREAD_ATTRIBUTE_PSEUDOCONSOLE \
|
||||
ProcThreadAttributeValue (ProcThreadAttributePseudoConsole, False, True, False)
|
||||
|
||||
#define PROC_THREAD_ATTRIBUTE_MACHINE_TYPE \
|
||||
ProcThreadAttributeValue (ProcThreadAttributeMachineType, False, True, False)
|
||||
|
||||
#define PROC_THREAD_ATTRIBUTE_ENABLE_OPTIONAL_XSTATE_FEATURES \
|
||||
ProcThreadAttributeValue (ProcThreadAttributeEnableOptionalXStateFeatures, True, True, False)
|
||||
|
||||
#define PROC_THREAD_ATTRIBUTE_SVE_VECTOR_LENGTH \
|
||||
ProcThreadAttributeValue (ProcThreadAttributeSveVectorLength, False, True, False)
|
||||
@@ -0,0 +1,38 @@
|
||||
#define PROCESSOR_INTEL_386 386
|
||||
#define PROCESSOR_INTEL_486 486
|
||||
#define PROCESSOR_INTEL_PENTIUM 586
|
||||
#define PROCESSOR_INTEL_IA64 2200
|
||||
#define PROCESSOR_MIPS_R4000 4000 // incl R4101 & R3910 for Windows CE
|
||||
#define PROCESSOR_ALPHA_21064 21064
|
||||
#define PROCESSOR_PPC_601 601
|
||||
#define PROCESSOR_PPC_603 603
|
||||
#define PROCESSOR_PPC_604 604
|
||||
#define PROCESSOR_PPC_620 620
|
||||
#define PROCESSOR_HITACHI_SH3 10003 // Windows CE
|
||||
#define PROCESSOR_HITACHI_SH3E 10004 // Windows CE
|
||||
#define PROCESSOR_HITACHI_SH4 10005 // Windows CE
|
||||
#define PROCESSOR_MOTOROLA_821 821 // Windows CE
|
||||
#define PROCESSOR_SHx_SH3 103 // Windows CE
|
||||
#define PROCESSOR_SHx_SH4 104 // Windows CE
|
||||
#define PROCESSOR_STRONGARM 2577 // Windows CE - 0xA11
|
||||
#define PROCESSOR_ARM720 1824 // Windows CE - 0x720
|
||||
#define PROCESSOR_ARM820 2080 // Windows CE - 0x820
|
||||
#define PROCESSOR_ARM920 2336 // Windows CE - 0x920
|
||||
#define PROCESSOR_ARM_7TDMI 70001 // Windows CE
|
||||
#define PROCESSOR_OPTIL 0x494f // MSIL
|
||||
|
||||
#define PROCESSOR_ARCHITECTURE_INTEL 0
|
||||
#define PROCESSOR_ARCHITECTURE_MIPS 1
|
||||
#define PROCESSOR_ARCHITECTURE_ALPHA 2
|
||||
#define PROCESSOR_ARCHITECTURE_PPC 3
|
||||
#define PROCESSOR_ARCHITECTURE_SHX 4
|
||||
#define PROCESSOR_ARCHITECTURE_ARM 5
|
||||
#define PROCESSOR_ARCHITECTURE_IA64 6
|
||||
#define PROCESSOR_ARCHITECTURE_ALPHA64 7
|
||||
#define PROCESSOR_ARCHITECTURE_MSIL 8
|
||||
#define PROCESSOR_ARCHITECTURE_AMD64 9
|
||||
#define PROCESSOR_ARCHITECTURE_IA32_ON_WIN64 10
|
||||
#define PROCESSOR_ARCHITECTURE_NEUTRAL 11
|
||||
#define PROCESSOR_ARCHITECTURE_ARM64 12
|
||||
#define PROCESSOR_ARCHITECTURE_ARM32_ON_WIN64 13
|
||||
#define PROCESSOR_ARCHITECTURE_UNKNOWN 0xFFFF
|
||||
@@ -1,3 +1,5 @@
|
||||
/* Specific Access Rights are in <specific_access_right.txt> */
|
||||
|
||||
//
|
||||
// Service trigger types
|
||||
//
|
||||
@@ -19,8 +21,6 @@
|
||||
#define SERVICE_TRIGGER_DATA_TYPE_KEYWORD_ANY 4
|
||||
#define SERVICE_TRIGGER_DATA_TYPE_KEYWORD_ALL 5
|
||||
|
||||
// Specific Access Rights are in <specific_access_right.txt>
|
||||
|
||||
|
||||
#define SERVICE_RUNS_IN_SYSTEM_PROCESS 0x00000001
|
||||
|
||||
@@ -61,9 +61,6 @@ SERVICE_WIN32_OWN_PROCESS)
|
||||
/* Make a value for the new SERVICE_TYPE_ALL ? */
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#define SERVICE_BOOT_START 0x00000000
|
||||
#define SERVICE_SYSTEM_START 0x00000001
|
||||
#define SERVICE_AUTO_START 0x00000002
|
||||
|
||||
@@ -17,3 +17,26 @@ NATIVE_WORD_MAX_VALUE = 0xffffffff if bitness == 32 else 0xffffffffffffffff
|
||||
|
||||
def CTL_CODE(DeviceType, Function, Method, Access):
|
||||
return (((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method))
|
||||
|
||||
# https://learn.microsoft.com/en-us/windows/win32/api/winerror/nf-winerror-hresult_facility
|
||||
# Original MACRO:
|
||||
# #define HRESULT_FACILITY(hr) (((hr) >> 16) & 0x1fff)
|
||||
|
||||
def HRESULT_FACILITY(hr):
|
||||
return (((hr) >> 16) & 0x1fff)
|
||||
|
||||
# https://github.com/microsoft/win32metadata/blob/6af96d8470751e13a4e3f579f84b7b8b3ca398e1/generation/WinSDK/RecompiledIdlHeaders/um/WinBase.h#L3562
|
||||
# Original MACRO:
|
||||
|
||||
#define ProcThreadAttributeValue(Number, Thread, Input, Additive) \
|
||||
# (((Number) & PROC_THREAD_ATTRIBUTE_NUMBER) | \
|
||||
# ((Thread != FALSE) ? PROC_THREAD_ATTRIBUTE_THREAD : 0) | \
|
||||
# ((Input != FALSE) ? PROC_THREAD_ATTRIBUTE_INPUT : 0) | \
|
||||
# ((Additive != FALSE) ? PROC_THREAD_ATTRIBUTE_ADDITIVE : 0))
|
||||
|
||||
def ProcThreadAttributeValue(Number, Thread, Input, Additive):
|
||||
return ((Number & PROC_THREAD_ATTRIBUTE_NUMBER) |
|
||||
(Thread and PROC_THREAD_ATTRIBUTE_THREAD) |
|
||||
(Input and PROC_THREAD_ATTRIBUTE_INPUT) |
|
||||
(Additive and PROC_THREAD_ATTRIBUTE_ADDITIVE))
|
||||
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
// Atrget architecture description
|
||||
|
||||
#define CONTEXT_I386 0x00010000 // An old PFW error in case ?
|
||||
#define CONTEXT_AMD64 0x00100000
|
||||
#define CONTEXT_ARM 0x00200000
|
||||
#define CONTEXT_ARM64 0x00400000
|
||||
#define CONTEXT_i386 0x00010000L // this assumes that i386 and
|
||||
#define CONTEXT_i486 0x00010000L // i486 have identical context records
|
||||
#define WOW64_CONTEXT_i386 0x00010000 // this assumes that i386 and
|
||||
#define WOW64_CONTEXT_i486 0x00010000 // i486 have identical context records
|
||||
|
||||
// Not perfect, should be explicitly for an architecture
|
||||
|
||||
#define CONTEXT_CONTROL 0x00000001L
|
||||
#define CONTEXT_INTEGER 0x00000002L
|
||||
#define CONTEXT_SEGMENTS 0x00000004L
|
||||
#define CONTEXT_FLOATING_POINT 0x00000008L
|
||||
#define CONTEXT_DEBUG_REGISTERS 0x00000010L
|
||||
#define CONTEXT_EXTENDED_REGISTERS 0x00000020L
|
||||
#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS)
|
||||
#define CONTEXT_ALL (CONTEXT_FULL | CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS | CONTEXT_EXTENDED_REGISTERS)
|
||||
|
||||
#define CONTEXT_XSTATE (CONTEXT_I386 | 0x00000040L)
|
||||
|
||||
// WOW64
|
||||
|
||||
|
||||
|
||||
#define WOW64_CONTEXT_CONTROL (WOW64_CONTEXT_i386 | 0x00000001L) // SS:SP, CS:IP, FLAGS, BP
|
||||
#define WOW64_CONTEXT_INTEGER (WOW64_CONTEXT_i386 | 0x00000002L) // AX, BX, CX, DX, SI, DI
|
||||
#define WOW64_CONTEXT_SEGMENTS (WOW64_CONTEXT_i386 | 0x00000004L) // DS, ES, FS, GS
|
||||
#define WOW64_CONTEXT_FLOATING_POINT (WOW64_CONTEXT_i386 | 0x00000008L) // 387 state
|
||||
#define WOW64_CONTEXT_DEBUG_REGISTERS (WOW64_CONTEXT_i386 | 0x00000010L) // DB 0-3,6,7
|
||||
#define WOW64_CONTEXT_EXTENDED_REGISTERS (WOW64_CONTEXT_i386 | 0x00000020L) // cpu specific extensions
|
||||
|
||||
#define WOW64_CONTEXT_FULL (WOW64_CONTEXT_CONTROL | WOW64_CONTEXT_INTEGER | WOW64_CONTEXT_SEGMENTS)
|
||||
|
||||
#define WOW64_CONTEXT_ALL (WOW64_CONTEXT_CONTROL | WOW64_CONTEXT_INTEGER | WOW64_CONTEXT_SEGMENTS | \
|
||||
WOW64_CONTEXT_FLOATING_POINT | WOW64_CONTEXT_DEBUG_REGISTERS | \
|
||||
WOW64_CONTEXT_EXTENDED_REGISTERS)
|
||||
|
||||
#define WOW64_CONTEXT_XSTATE (WOW64_CONTEXT_i386 | 0x00000040L)
|
||||
|
||||
#define WOW64_CONTEXT_EXCEPTION_ACTIVE 0x08000000
|
||||
#define WOW64_CONTEXT_SERVICE_ACTIVE 0x10000000
|
||||
#define WOW64_CONTEXT_EXCEPTION_REQUEST 0x40000000
|
||||
#define WOW64_CONTEXT_EXCEPTION_REPORTING 0x80000000
|
||||
|
||||
// ARM64
|
||||
|
||||
#define CONTEXT_ARM64_CONTROL (CONTEXT_ARM64 | 0x1L)
|
||||
#define CONTEXT_ARM64_INTEGER (CONTEXT_ARM64 | 0x2L)
|
||||
#define CONTEXT_ARM64_FLOATING_POINT (CONTEXT_ARM64 | 0x4L)
|
||||
#define CONTEXT_ARM64_DEBUG_REGISTERS (CONTEXT_ARM64 | 0x8L)
|
||||
#define CONTEXT_ARM64_X18 (CONTEXT_ARM64 | 0x10L)
|
||||
|
||||
#define CONTEXT_UNWOUND_TO_CALL 0x20000000
|
||||
#define CONTEXT_RET_TO_GUEST 0x04000000
|
||||
|
||||
#define ARM64_MAX_BREAKPOINTS 8
|
||||
#define ARM64_MAX_WATCHPOINTS 2
|
||||
@@ -130,22 +130,6 @@
|
||||
#define TH32CS_SNAPALL (TH32CS_SNAPHEAPLIST | TH32CS_SNAPPROCESS | TH32CS_SNAPTHREAD | TH32CS_SNAPMODULE)
|
||||
#define TH32CS_INHERIT 0x80000000
|
||||
|
||||
#define CONTEXT_I386 0x00010000
|
||||
#define CONTEXT_AMD64 0x00100000
|
||||
#define CONTEXT_ARM 0x00200000
|
||||
#define CONTEXT_ARM64 0x00400000
|
||||
|
||||
#define CONTEXT_CONTROL 0x00000001L
|
||||
#define CONTEXT_INTEGER 0x00000002L
|
||||
#define CONTEXT_SEGMENTS 0x00000004L
|
||||
#define CONTEXT_FLOATING_POINT 0x00000008L
|
||||
#define CONTEXT_DEBUG_REGISTERS 0x00000010L
|
||||
#define CONTEXT_EXTENDED_REGISTERS 0x00000020L
|
||||
#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS)
|
||||
#define CONTEXT_ALL (CONTEXT_FULL | CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS | CONTEXT_EXTENDED_REGISTERS)
|
||||
|
||||
#define CONTEXT_XSTATE (CONTEXT_I386 | 0x00000040L)
|
||||
|
||||
|
||||
#define PAGE_NOACCESS 0x01
|
||||
#define PAGE_READONLY 0x02
|
||||
|
||||
@@ -100,4 +100,6 @@
|
||||
#define IMAGE_FILE_MACHINE_AMD64 0x8664
|
||||
#define IMAGE_FILE_MACHINE_M32R 0x9041
|
||||
#define IMAGE_FILE_MACHINE_CEE 0xC0EE
|
||||
#define IMAGE_FILE_MACHINE_ARM64 0xAA64
|
||||
#define IMAGE_FILE_MACHINE_ARM64 0xAA64
|
||||
|
||||
#define IMAGE_FILE_MACHINE_TARGET_HOST 0x0001 // Useful for indicating we want to interact with the host and not a WoW guest.
|
||||
@@ -387,6 +387,38 @@
|
||||
#define CRYPT_ARCHIVABLE 0x00004000
|
||||
#define CRYPT_FORCE_KEY_PROTECTION_HIGH 0x00008000
|
||||
|
||||
#define CERT_RDN_ANY_TYPE 0
|
||||
#define CERT_RDN_ENCODED_BLOB 1
|
||||
#define CERT_RDN_OCTET_STRING 2
|
||||
#define CERT_RDN_NUMERIC_STRING 3
|
||||
#define CERT_RDN_PRINTABLE_STRING 4
|
||||
#define CERT_RDN_TELETEX_STRING 5
|
||||
#define CERT_RDN_T61_STRING 5
|
||||
#define CERT_RDN_VIDEOTEX_STRING 6
|
||||
#define CERT_RDN_IA5_STRING 7
|
||||
#define CERT_RDN_GRAPHIC_STRING 8
|
||||
#define CERT_RDN_VISIBLE_STRING 9
|
||||
#define CERT_RDN_ISO646_STRING 9
|
||||
#define CERT_RDN_GENERAL_STRING 10
|
||||
#define CERT_RDN_UNIVERSAL_STRING 11
|
||||
#define CERT_RDN_INT4_STRING 11
|
||||
#define CERT_RDN_BMP_STRING 12
|
||||
#define CERT_RDN_UNICODE_STRING 12
|
||||
#define CERT_RDN_UTF8_STRING 13
|
||||
#define CERT_RDN_TYPE_MASK 0xff
|
||||
#define CERT_RDN_FLAGS_MASK 0xff000000
|
||||
#define CERT_RDN_ENABLE_T61_UNICODE_FLAG 0x80000000
|
||||
#define CERT_RDN_ENABLE_UTF8_UNICODE_FLAG 0x20000000
|
||||
#define CERT_RDN_FORCE_UTF8_UNICODE_FLAG 0x10000000
|
||||
#define CERT_RDN_DISABLE_CHECK_TYPE_FLAG 0x40000000
|
||||
#define CERT_RDN_DISABLE_IE4_UTF8_FLAG 0x1000000
|
||||
|
||||
#define CRYPT_DECODE_NOCOPY_FLAG 0x1
|
||||
#define CRYPT_DECODE_TO_BE_SIGNED_FLAG 0x2
|
||||
#define CRYPT_DECODE_SHARE_OID_STRING_FLAG 0x4
|
||||
#define CRYPT_DECODE_NO_SIGNATURE_BYTE_REVERSAL_FLAG 0x8
|
||||
#define CRYPT_DECODE_ALLOC_FLAG 0x8000
|
||||
#define CRYPT_UNICODE_NAME_DECODE_DISABLE_IE4_UTF8_FLAG CERT_RDN_DISABLE_IE4_UTF8_FLAG
|
||||
|
||||
#define CRYPT_ENCODE_DECODE_NONE 0
|
||||
#define X509_CERT (1)
|
||||
@@ -582,4 +614,47 @@
|
||||
#define CMSG_CTRL_MAIL_LIST_DECRYPT 18
|
||||
#define CMSG_CTRL_VERIFY_SIGNATURE_EX 19
|
||||
#define CMSG_CTRL_ADD_CMS_SIGNER_INFO 20
|
||||
#define CMSG_CTRL_ENABLE_STRONG_SIGNATURE 21
|
||||
#define CMSG_CTRL_ENABLE_STRONG_SIGNATURE 21
|
||||
|
||||
|
||||
//+-------------------------------------------------------------------------
|
||||
// The following flag should be set in the above dwFlags to enable
|
||||
// a CertSetCertificateContextProperty(CERT_KEY_CONTEXT_PROP_ID) after a
|
||||
// CryptAcquireContext is done in the Sign or Decrypt Message functions.
|
||||
//
|
||||
// The following define must not collide with any of the
|
||||
// CryptAcquireContext dwFlag defines.
|
||||
//--------------------------------------------------------------------------
|
||||
#define CERT_SET_KEY_PROV_HANDLE_PROP_ID 0x00000001
|
||||
#define CERT_SET_KEY_CONTEXT_PROP_ID 0x00000001
|
||||
|
||||
// Special dwKeySpec indicating a CNG NCRYPT_KEY_HANDLE instead of a CAPI1
|
||||
// HCRYPTPROV
|
||||
#define CERT_NCRYPT_KEY_SPEC 0xFFFFFFFF
|
||||
|
||||
|
||||
#define CERT_REQUEST_V1 0
|
||||
|
||||
|
||||
// Include\10.0.10240.0\um\wincrypt.h
|
||||
|
||||
#define CRYPT_STRING_BASE64HEADER 0x00000000
|
||||
#define CRYPT_STRING_BASE64 0x00000001
|
||||
#define CRYPT_STRING_BINARY 0x00000002
|
||||
#define CRYPT_STRING_BASE64REQUESTHEADER 0x00000003
|
||||
#define CRYPT_STRING_HEX 0x00000004
|
||||
#define CRYPT_STRING_HEXASCII 0x00000005
|
||||
#define CRYPT_STRING_BASE64_ANY 0x00000006
|
||||
#define CRYPT_STRING_ANY 0x00000007
|
||||
#define CRYPT_STRING_HEX_ANY 0x00000008
|
||||
#define CRYPT_STRING_BASE64X509CRLHEADER 0x00000009
|
||||
#define CRYPT_STRING_HEXADDR 0x0000000a
|
||||
#define CRYPT_STRING_HEXASCIIADDR 0x0000000b
|
||||
#define CRYPT_STRING_HEXRAW 0x0000000c
|
||||
#define CRYPT_STRING_BASE64URI 0x0000000d
|
||||
|
||||
#define CRYPT_STRING_PERCENTESCAPE 0x08000000 // base64 formats only
|
||||
#define CRYPT_STRING_HASHDATA 0x10000000
|
||||
#define CRYPT_STRING_STRICT 0x20000000
|
||||
#define CRYPT_STRING_NOCRLF 0x40000000
|
||||
#define CRYPT_STRING_NOCR 0x80000000
|
||||
@@ -617,4 +617,64 @@ BOOL CryptGetOIDFunctionValue(
|
||||
BOOL CertCloseStore(
|
||||
HCERTSTORE hCertStore,
|
||||
DWORD dwFlags
|
||||
);
|
||||
|
||||
BOOL CryptSignAndEncodeCertificate(
|
||||
[in] BCRYPT_KEY_HANDLE hBCryptKey,
|
||||
[in] DWORD dwKeySpec,
|
||||
[in] DWORD dwCertEncodingType,
|
||||
[in] LPCSTR lpszStructType,
|
||||
[in] PVOID pvStructInfo,
|
||||
[in] PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm,
|
||||
[in] PVOID pvHashAuxInfo,
|
||||
[out] BYTE *pbEncoded,
|
||||
[in, out] DWORD *pcbEncoded
|
||||
);
|
||||
|
||||
BOOL CryptSignCertificate(
|
||||
[in] BCRYPT_KEY_HANDLE hBCryptKey,
|
||||
[in] DWORD dwKeySpec,
|
||||
[in] DWORD dwCertEncodingType,
|
||||
[in] BYTE *pbEncodedToBeSigned,
|
||||
[in] DWORD cbEncodedToBeSigned,
|
||||
[in] PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm,
|
||||
[in] PVOID pvHashAuxInfo,
|
||||
[out] BYTE *pbSignature,
|
||||
[in, out] DWORD *pcbSignature
|
||||
);
|
||||
|
||||
BOOL CryptBinaryToStringA(
|
||||
[in] BYTE *pbBinary,
|
||||
[in] DWORD cbBinary,
|
||||
[in] DWORD dwFlags,
|
||||
[out, optional] LPSTR pszString,
|
||||
[in, out] DWORD *pcchString
|
||||
);
|
||||
|
||||
BOOL CryptBinaryToStringW(
|
||||
[in] BYTE *pbBinary,
|
||||
[in] DWORD cbBinary,
|
||||
[in] DWORD dwFlags,
|
||||
[out, optional] LPWSTR pszString,
|
||||
[in, out] DWORD *pcchString
|
||||
);
|
||||
|
||||
BOOL CryptStringToBinaryA(
|
||||
[in] LPCSTR pszString,
|
||||
[in] DWORD cchString,
|
||||
[in] DWORD dwFlags,
|
||||
[in] BYTE *pbBinary,
|
||||
[in, out] DWORD *pcbBinary,
|
||||
[out] DWORD *pdwSkip,
|
||||
[out] DWORD *pdwFlags
|
||||
);
|
||||
|
||||
BOOL CryptStringToBinaryW(
|
||||
[in] LPCWSTR pszString,
|
||||
[in] DWORD cchString,
|
||||
[in] DWORD dwFlags,
|
||||
[in] BYTE *pbBinary,
|
||||
[in, out] DWORD *pcbBinary,
|
||||
[out] DWORD *pdwSkip,
|
||||
[out] DWORD *pdwFlags
|
||||
);
|
||||
@@ -85,3 +85,22 @@ BOOL LockFileEx(
|
||||
[in] DWORD nNumberOfBytesToLockHigh,
|
||||
[in, out] LPOVERLAPPED lpOverlapped
|
||||
);
|
||||
|
||||
BOOL SetFileInformationByHandle(
|
||||
[in] HANDLE hFile,
|
||||
[in] FILE_INFO_BY_HANDLE_CLASS FileInformationClass,
|
||||
[in] LPVOID lpFileInformation,
|
||||
[in] DWORD dwBufferSize
|
||||
);
|
||||
|
||||
BOOL GetFileInformationByHandle(
|
||||
[in] HANDLE hFile,
|
||||
[out] LPBY_HANDLE_FILE_INFORMATION lpFileInformation
|
||||
);
|
||||
|
||||
BOOL GetFileInformationByHandleEx(
|
||||
[in] HANDLE hFile,
|
||||
[in] FILE_INFO_BY_HANDLE_CLASS FileInformationClass,
|
||||
[out] LPVOID lpFileInformation,
|
||||
[in] DWORD dwBufferSize
|
||||
);
|
||||
@@ -0,0 +1,14 @@
|
||||
SECURITY_STATUS NCryptOpenKey(
|
||||
[in] NCRYPT_PROV_HANDLE hProvider,
|
||||
[out] NCRYPT_KEY_HANDLE *phKey,
|
||||
[in] LPCWSTR pszKeyName,
|
||||
[in] DWORD dwLegacyKeySpec,
|
||||
[in] DWORD dwFlags
|
||||
);
|
||||
|
||||
|
||||
SECURITY_STATUS NCryptOpenStorageProvider(
|
||||
[out] NCRYPT_PROV_HANDLE *phProvider,
|
||||
[in, optional] LPCWSTR pszProviderName,
|
||||
[in] DWORD dwFlags
|
||||
);
|
||||
@@ -63,4 +63,23 @@ HMODULE LoadLibraryExW(
|
||||
|
||||
BOOL FreeLibrary(
|
||||
HMODULE hLibModule
|
||||
);
|
||||
);
|
||||
|
||||
BOOL GetProcessInformation(
|
||||
[in] HANDLE hProcess,
|
||||
[in] PROCESS_INFORMATION_CLASS ProcessInformationClass,
|
||||
LPVOID ProcessInformation,
|
||||
[in] DWORD ProcessInformationSize
|
||||
);
|
||||
|
||||
BOOL SetProcessInformation(
|
||||
[in] HANDLE hProcess,
|
||||
[in] PROCESS_INFORMATION_CLASS ProcessInformationClass,
|
||||
LPVOID ProcessInformation,
|
||||
[in] DWORD ProcessInformationSize
|
||||
);
|
||||
|
||||
/* Not documented by seems present since dawn of time (WRK)
|
||||
I Prefere PVOID as a return value to allow simple cast to PEB subclass in process.py*/
|
||||
|
||||
PVOID RtlGetCurrentPeb ();
|
||||
@@ -267,4 +267,38 @@ BOOL StartServiceCtrlDispatcherA(
|
||||
|
||||
BOOL StartServiceCtrlDispatcherW(
|
||||
SERVICE_TABLE_ENTRYW *lpServiceStartTable
|
||||
);
|
||||
|
||||
SERVICE_STATUS_HANDLE RegisterServiceCtrlHandlerExA(
|
||||
[in] LPCSTR lpServiceName,
|
||||
[in] LPHANDLER_FUNCTION_EX lpHandlerProc,
|
||||
[in, optional] LPVOID lpContext
|
||||
);
|
||||
|
||||
SERVICE_STATUS_HANDLE RegisterServiceCtrlHandlerExW(
|
||||
[in] LPCWSTR lpServiceName,
|
||||
[in] LPHANDLER_FUNCTION_EX lpHandlerProc,
|
||||
[in, optional] LPVOID lpContext
|
||||
);
|
||||
|
||||
SERVICE_STATUS_HANDLE RegisterServiceCtrlHandlerA(
|
||||
[in] LPCSTR lpServiceName,
|
||||
[in] LPHANDLER_FUNCTION lpHandlerProc
|
||||
);
|
||||
|
||||
SERVICE_STATUS_HANDLE RegisterServiceCtrlHandlerW(
|
||||
[in] LPCWSTR lpServiceName,
|
||||
[in] LPHANDLER_FUNCTION lpHandlerProc
|
||||
);
|
||||
|
||||
BOOL SetServiceStatus(
|
||||
[in] SERVICE_STATUS_HANDLE hServiceStatus,
|
||||
[in] LPSERVICE_STATUS lpServiceStatus
|
||||
);
|
||||
|
||||
BOOL SetServiceBits(
|
||||
[in] SERVICE_STATUS_HANDLE hServiceStatus,
|
||||
[in] DWORD dwServiceBits,
|
||||
[in] BOOL bSetBitsOn,
|
||||
[in] BOOL bUpdateImmediately
|
||||
);
|
||||
@@ -59,4 +59,12 @@ BOOL LookupAccountNameW(
|
||||
LPWSTR ReferencedDomainName,
|
||||
LPDWORD cchReferencedDomainName,
|
||||
PSID_NAME_USE peUse
|
||||
);
|
||||
|
||||
PVOID GetNativeSystemInfo(
|
||||
[out] LPSYSTEM_INFO lpSystemInfo
|
||||
);
|
||||
|
||||
PVOID GetSystemInfo(
|
||||
[out] LPSYSTEM_INFO lpSystemInfo
|
||||
);
|
||||
@@ -0,0 +1,83 @@
|
||||
BOOL IsWow64Process(
|
||||
[in] HANDLE hProcess,
|
||||
[out] PBOOL Wow64Process
|
||||
);
|
||||
|
||||
BOOL IsWow64Process2(
|
||||
[in] HANDLE hProcess,
|
||||
[out] USHORT *pProcessMachine,
|
||||
[out, optional] USHORT *pNativeMachine
|
||||
);
|
||||
|
||||
HRESULT IsWow64GuestMachineSupported(
|
||||
[in] USHORT WowGuestMachine,
|
||||
[out] BOOL *MachineIsSupported
|
||||
);
|
||||
|
||||
UINT GetSystemWow64DirectoryA(
|
||||
[out] LPSTR lpBuffer,
|
||||
[in] UINT uSize
|
||||
);
|
||||
|
||||
UINT GetSystemWow64DirectoryW(
|
||||
[out] LPWSTR lpBuffer,
|
||||
[in] UINT uSize
|
||||
);
|
||||
|
||||
UINT GetSystemWow64Directory2A(
|
||||
[out] LPSTR lpBuffer,
|
||||
[in] UINT uSize,
|
||||
[in] WORD ImageFileMachineType
|
||||
);
|
||||
|
||||
UINT GetSystemWow64Directory2W(
|
||||
[out] LPWSTR lpBuffer,
|
||||
[in] UINT uSize,
|
||||
[in] WORD ImageFileMachineType
|
||||
);
|
||||
|
||||
BOOL Wow64DisableWow64FsRedirection(
|
||||
[out] PVOID *OldValue
|
||||
);
|
||||
|
||||
BOOLEAN Wow64EnableWow64FsRedirection(
|
||||
BOOLEAN Wow64FsEnableRedirection
|
||||
);
|
||||
|
||||
BOOL Wow64RevertWow64FsRedirection(
|
||||
[in] PVOID OlValue
|
||||
);
|
||||
|
||||
BOOL Wow64GetThreadContext(
|
||||
HANDLE hThread,
|
||||
PWOW64_CONTEXT lpContext
|
||||
);
|
||||
|
||||
BOOL Wow64SetThreadContext(
|
||||
HANDLE hThread,
|
||||
WOW64_CONTEXT *lpContext
|
||||
);
|
||||
|
||||
USHORT Wow64SetThreadDefaultGuestMachine(
|
||||
USHORT Machine
|
||||
);
|
||||
|
||||
DWORD Wow64SuspendThread(
|
||||
HANDLE hThread
|
||||
);
|
||||
|
||||
NTSTATUS WINAPI NtWow64ReadVirtualMemory64(
|
||||
_In_ HANDLE hProcess,
|
||||
_In_ ULONG64 lpBaseAddress,
|
||||
_Out_ LPVOID lpBuffer,
|
||||
_In_ ULONG64 nSize,
|
||||
_Out_ PULONG64 lpNumberOfBytesRead
|
||||
);
|
||||
|
||||
NTSTATUS WINAPI NtWow64WriteVirtualMemory64(
|
||||
_In_ HANDLE hProcess,
|
||||
_In_ ULONG64 lpBaseAddress,
|
||||
_Out_ LPVOID lpBuffer,
|
||||
_In_ ULONG64 nSize,
|
||||
_Out_ PULONG64 lpNumberOfBytesWritten
|
||||
);
|
||||
@@ -150,6 +150,17 @@ HANDLE WINAPI CreateRemoteThread(
|
||||
_Out_ LPDWORD lpThreadId
|
||||
);
|
||||
|
||||
HANDLE CreateRemoteThreadEx(
|
||||
[in] HANDLE hProcess,
|
||||
[in, optional] LPSECURITY_ATTRIBUTES lpThreadAttributes,
|
||||
[in] SIZE_T dwStackSize,
|
||||
[in] LPTHREAD_START_ROUTINE lpStartAddress,
|
||||
[in, optional] LPVOID lpParameter,
|
||||
[in] DWORD dwCreationFlags,
|
||||
[in, optional] LPPROC_THREAD_ATTRIBUTE_LIST lpAttributeList,
|
||||
[out, optional] LPDWORD lpThreadId
|
||||
);
|
||||
|
||||
BOOL WINAPI CreateProcessA(
|
||||
__in_opt LPCSTR lpApplicationName,
|
||||
__inout_opt LPSTR lpCommandLine,
|
||||
@@ -242,13 +253,6 @@ BOOL WINAPI ReadProcessMemory(
|
||||
_Out_ SIZE_T *lpNumberOfBytesRead
|
||||
);
|
||||
|
||||
NTSTATUS WINAPI NtWow64ReadVirtualMemory64(
|
||||
_In_ HANDLE hProcess,
|
||||
_In_ ULONG64 lpBaseAddress,
|
||||
_Out_ LPVOID lpBuffer,
|
||||
_In_ ULONG64 nSize,
|
||||
_Out_ PULONG64 lpNumberOfBytesRead
|
||||
);
|
||||
|
||||
|
||||
BOOL WINAPI WriteProcessMemory(
|
||||
@@ -260,13 +264,7 @@ BOOL WINAPI WriteProcessMemory(
|
||||
);
|
||||
|
||||
|
||||
NTSTATUS WINAPI NtWow64WriteVirtualMemory64(
|
||||
_In_ HANDLE hProcess,
|
||||
_In_ ULONG64 lpBaseAddress,
|
||||
_Out_ LPVOID lpBuffer,
|
||||
_In_ ULONG64 nSize,
|
||||
_Out_ PULONG64 lpNumberOfBytesWritten
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -518,23 +516,6 @@ BOOL WINAPI DeviceIoControl(
|
||||
);
|
||||
|
||||
|
||||
BOOL WINAPI Wow64DisableWow64FsRedirection(
|
||||
_Out_ PVOID *OldValue
|
||||
);
|
||||
|
||||
BOOL WINAPI Wow64RevertWow64FsRedirection(
|
||||
_In_ PVOID OldValue
|
||||
);
|
||||
|
||||
BOOLEAN WINAPI Wow64EnableWow64FsRedirection(
|
||||
_In_ BOOLEAN Wow64FsEnableRedirection
|
||||
);
|
||||
|
||||
BOOL WINAPI Wow64GetThreadContext(
|
||||
_In_ HANDLE hThread,
|
||||
_Inout_ PWOW64_CONTEXT lpContext
|
||||
);
|
||||
|
||||
BOOL WINAPI SetConsoleCtrlHandler(
|
||||
_In_opt_ PHANDLER_ROUTINE HandlerRoutine,
|
||||
_In_ BOOL Add
|
||||
@@ -669,10 +650,6 @@ DWORD WINAPI GetProcessId(
|
||||
_In_ HANDLE Process
|
||||
);
|
||||
|
||||
BOOL WINAPI Wow64SetThreadContext(
|
||||
__in HANDLE hThread,
|
||||
__in CONST WOW64_CONTEXT *lpContext
|
||||
);
|
||||
|
||||
DWORD WINAPI GetMappedFileNameW (
|
||||
__in HANDLE hProcess,
|
||||
|
||||
@@ -86,6 +86,7 @@ PWINDBG_EXTENSION_APIS32 = PVOID
|
||||
PWINDBG_EXTENSION_APIS64 = PVOID
|
||||
FILEOP_FLAGS = WORD
|
||||
NET_API_STATUS = DWORD
|
||||
SECURITY_STATUS = LONG // Return type of ncrypt functions
|
||||
|
||||
|
||||
// 2 custom PFW defintions for bitness-forces structures
|
||||
@@ -94,6 +95,7 @@ PVOID64 = DWORD64
|
||||
|
||||
NCRYPT_HANDLE = ULONG_PTR
|
||||
NCRYPT_PROV_HANDLE = ULONG_PTR
|
||||
BCRYPT_KEY_HANDLE = ULONG_PTR
|
||||
NCRYPT_KEY_HANDLE = ULONG_PTR
|
||||
NCRYPT_HASH_HANDLE = ULONG_PTR
|
||||
NCRYPT_SECRET_HANDLE = ULONG_PTR
|
||||
@@ -263,6 +265,8 @@ LPSERVICE_MAIN_FUNCTIONA = PVOID
|
||||
LPSERVICE_MAIN_FUNCTIONW = PVOID
|
||||
LPOVERLAPPED_COMPLETION_ROUTINE = PVOID
|
||||
PDNS_QUERY_COMPLETION_ROUTINE = PVOID
|
||||
LPHANDLER_FUNCTION = PVOID
|
||||
LPHANDLER_FUNCTION_EX = PVOID
|
||||
|
||||
|
||||
// Will be changed at import time
|
||||
|
||||
@@ -253,6 +253,7 @@ typedef struct _PRIV_RESOLVER_INFO_LEGACY
|
||||
BOOL FoundInROT;
|
||||
} PRIV_RESOLVER_INFO_LEGACY, *PPRIV_RESOLVER_INFO_LEGACY;
|
||||
|
||||
|
||||
typedef struct _REMOTE_REPLY_SCM_INFO
|
||||
{
|
||||
OXID Oxid;
|
||||
@@ -287,6 +288,31 @@ typedef struct CONTAINERVERSION {
|
||||
CONTAINER_EXTENT_ARRAY *extensions;
|
||||
};
|
||||
|
||||
typedef struct __MIDL_ILocalObjectExporter_0006 {
|
||||
ULONG dwTid;
|
||||
ULONG dwPid;
|
||||
ULONG dwAuthnHint;
|
||||
tagCOMVERSION version;
|
||||
_GUID ipidRemUnknown;
|
||||
ULONG dwFlags;
|
||||
tagDUALSTRINGARRAY *psa;
|
||||
_GUID guidProcessIdentifier;
|
||||
UINT64 processHostId;
|
||||
INT clientDependencyBehavior;
|
||||
HSTRING__ *packageFullName;
|
||||
HSTRING__ *userSid;
|
||||
HSTRING__ *appcontainerSid;
|
||||
} MIDL_ILocalObjectExporter_0006;
|
||||
|
||||
typedef struct _PRIV_RESOLVER_INFO_17763 {
|
||||
UINT64 OxidServer;
|
||||
tagDUALSTRINGARRAY *pServerORBindings;
|
||||
MIDL_ILocalObjectExporter_0006 OxidInfo;
|
||||
UINT64 LocalMidOfRemote;
|
||||
ULONG DllServerModel;
|
||||
WCHAR *pwszDllServer;
|
||||
INT FoundInROT;
|
||||
} PRIV_RESOLVER_INFO_17763, *PPRIV_RESOLVER_INFO_17763;
|
||||
|
||||
typedef struct _MIDL_ILocalObjectExporter_0007 {
|
||||
ULONG dwTid;
|
||||
@@ -334,16 +360,6 @@ typedef struct _LOCALTHIS {
|
||||
PVOID pTouchedAstaArray; // Ptr32 __MIDL_XmitDefs_0002
|
||||
} LOCALTHIS;
|
||||
|
||||
typedef struct _LOCALTHIS32 {
|
||||
DWORD dwFlags;
|
||||
DWORD dwClientThread;
|
||||
GUID passthroughTraceActivity;
|
||||
GUID callTraceActivity;
|
||||
MIDL_XmitDefs_0001 asyncRequestBlock;
|
||||
DWORD reserved;
|
||||
PVOID32 pTouchedAstaArray; // Ptr32 __MIDL_XmitDefs_0002
|
||||
} LOCALTHIS32;
|
||||
|
||||
/* LOCALTHAT & sub structures */
|
||||
|
||||
typedef struct _MIDL_XmitDefs_0007 {
|
||||
@@ -406,15 +422,6 @@ typedef struct _LOCALTHAT {
|
||||
} LOCALTHAT;
|
||||
|
||||
|
||||
typedef struct _LOCALTHAT32 {
|
||||
UINT64 marshalingSetId;
|
||||
ULONG reserved;
|
||||
PVOID32 pAsyncResponseBlock;
|
||||
PVOID32 containerErrorInformation;
|
||||
PVOID32 containerPassthroughData;
|
||||
} LOCALTHAT32;
|
||||
|
||||
|
||||
typedef struct tagORPCTHAT {
|
||||
ULONG flags;
|
||||
tagORPC_EXTENT_ARRAY *extensions;
|
||||
@@ -424,4 +431,35 @@ typedef struct tagORPCTHAT {
|
||||
typedef struct ORPCTHAT32 {
|
||||
ULONG flags;
|
||||
PVOID32 extensions; // tagORPC_EXTENT_ARRAY tagORPC_EXTENT_ARRAY
|
||||
} ORPCTHAT32;
|
||||
} ORPCTHAT32;
|
||||
|
||||
// From: com\ole32\com\dcomrem\chock.hxx
|
||||
typedef struct
|
||||
{
|
||||
ULONG size; // Number of extents.
|
||||
ULONG reserved; // Must be zero.
|
||||
ULONG unique; // Flag to indicate presence of unique_flag array.
|
||||
ULONG rounded_size; // Actual number of extents.
|
||||
ULONG unique_flag[UNIQUE_FLAG_PADDING]; // Flags to indicate presense of ORPC_EXTENTs
|
||||
} WireExtentArray;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
ULONG rounded_size; // Actual number of extents.
|
||||
GUID id; // Extension identifier.
|
||||
ULONG size; // Extension size.
|
||||
|
||||
// byte data[]; // Extension data.
|
||||
} WireExtent;
|
||||
|
||||
typedef struct tagMainHeader
|
||||
{
|
||||
ULONG Signature;
|
||||
ULONG Version;
|
||||
ULONG cPolicies;
|
||||
ULONG cbBuffer;
|
||||
ULONG cbSize;
|
||||
LONG hr;
|
||||
LONG hrServer;
|
||||
LONG reserved;
|
||||
} MainHeader;
|
||||
@@ -0,0 +1,212 @@
|
||||
/* Summary of seen version on combase symbols for LOCALTHIS:
|
||||
|
||||
Nb fields: 2
|
||||
6.1.7601.17514 -> 6.2.9200.22376
|
||||
* 6.1.7601.17514
|
||||
* 6.1.7601.17514
|
||||
* 6.2.9200.22376
|
||||
Nb fields: 4
|
||||
6.3.9600.17031 -> 6.3.9600.20772
|
||||
* 6.3.9600.17031
|
||||
* 6.3.9600.20772
|
||||
Nb fields: 5
|
||||
10.0.10240.16384 -> 10.0.15063.2679
|
||||
* 10.0.10240.16384
|
||||
* 10.0.10240.20747
|
||||
* 10.0.10586.0
|
||||
* 10.0.14393.576
|
||||
* 10.0.14393.6451
|
||||
* 10.0.14393.7426
|
||||
* 10.0.15063.251
|
||||
* 10.0.15063.1563
|
||||
* 10.0.15063.2500
|
||||
* 10.0.15063.2679
|
||||
Nb fields: 7
|
||||
10.0.16299.1 -> 10.0.26100.2454
|
||||
* 10.0.16299.1
|
||||
* 10.0.16299.15
|
||||
* 10.0.17134.1
|
||||
* 10.0.17134.48
|
||||
* 10.0.17134.2145
|
||||
* 10.0.17134.2145
|
||||
* 10.0.17763.1
|
||||
* 10.0.17763.2931
|
||||
* 10.0.22621.2792
|
||||
* 10.0.22621.3958
|
||||
* 10.0.22621.4111
|
||||
* 10.0.22621.4541
|
||||
* 10.0.26100.2454
|
||||
*/
|
||||
|
||||
/* Summary of seen version on combase symbols for LOCALTHAT:
|
||||
|
||||
Nb fields: 2
|
||||
6.3.9600.17031 -> 6.3.9600.20772
|
||||
* 6.3.9600.17031
|
||||
* 6.3.9600.17031
|
||||
* 6.3.9600.17031
|
||||
* 6.3.9600.20772
|
||||
Nb fields: 3
|
||||
10.0.18362.900 -> 10.0.18362.1916
|
||||
* 10.0.18362.900
|
||||
* 10.0.18362.900
|
||||
* 10.0.18362.1016
|
||||
* 10.0.18362.1916
|
||||
Nb fields: 4
|
||||
10.0.10240.16384 -> 10.0.17763.6040
|
||||
* 10.0.10240.16384
|
||||
* 10.0.10240.16384
|
||||
* 10.0.10240.20747
|
||||
* 10.0.10586.0
|
||||
* 10.0.14393.576
|
||||
* 10.0.14393.6451
|
||||
* 10.0.14393.7426
|
||||
* 10.0.15063.251
|
||||
* 10.0.15063.1563
|
||||
* 10.0.15063.2500
|
||||
* 10.0.15063.2679
|
||||
* 10.0.16299.1
|
||||
* 10.0.16299.15
|
||||
* 10.0.17134.1
|
||||
* 10.0.17134.48
|
||||
* 10.0.17134.2145
|
||||
* 10.0.17134.2145
|
||||
* 10.0.17763.1
|
||||
* 10.0.17763.2931
|
||||
* 10.0.17763.6040
|
||||
Nb fields: 5
|
||||
10.0.19039.1 -> 10.0.26100.2454
|
||||
* 10.0.19039.1
|
||||
* 10.0.19041.84
|
||||
* 10.0.19041.4894
|
||||
* 10.0.22000.65
|
||||
* 10.0.22621.2792
|
||||
* 10.0.22621.3958
|
||||
* 10.0.22621.4111
|
||||
* 10.0.22621.4541
|
||||
* 10.0.26100.2454
|
||||
* 10.0.26100.2454
|
||||
*/
|
||||
|
||||
|
||||
/* Seen on 6.2.9200.22376 (win8_ldr_escrow.180222-0941) */
|
||||
/* also seen on previous version : XP / Win7 / Server 2012 */
|
||||
|
||||
typedef struct LOCALTHIS32_NT_62 {
|
||||
ULONG dwFlags;
|
||||
ULONG dwClientThread;
|
||||
};
|
||||
|
||||
// NO LOCALTHAT for these previous version as far as I now
|
||||
|
||||
/* Seen on 6.3.9600.17031 (winblue_gdr.140221-1952) */
|
||||
|
||||
typedef struct __MIDL_XmitDefs_0001_NT_63 {
|
||||
ULONG size;
|
||||
ULONG reserved;
|
||||
UINT64 *pAstaOxids;
|
||||
};
|
||||
|
||||
typedef struct LOCALTHIS32_NT_63 {
|
||||
ULONG dwFlags;
|
||||
ULONG dwClientThread;
|
||||
ULONG reserved;
|
||||
PVOID32 pTouchedAstaArray;
|
||||
};
|
||||
|
||||
|
||||
typedef struct LOCALTHAT32_NT_63 {
|
||||
UINT64 marshalingSetAcknowledgmentOxid;
|
||||
UINT64 marshalingSetId;
|
||||
};
|
||||
|
||||
/* NT_1607 : combase 10.0.14393.576 from a WS2016 ISO*/
|
||||
|
||||
typedef struct __MIDL_XmitDefs_0002_NT_1607 {
|
||||
ULONG size;
|
||||
ULONG reserved;
|
||||
PVOID32 pAstaOxids;
|
||||
};
|
||||
|
||||
typedef struct __MIDL_XmitDefs_0001_NT_1607 {
|
||||
_GUID asyncOperationId;
|
||||
UINT64 oxidClientProcessNA;
|
||||
_GUID originalClientLogicalThreadId;
|
||||
UINT64 uClientCausalityTraceId;
|
||||
} MIDL_XmitDefs_0001_NT_1607;
|
||||
|
||||
typedef struct _LOCALTHIS32_NT_1607 {
|
||||
ULONG dwFlags;
|
||||
ULONG dwClientThread;
|
||||
MIDL_XmitDefs_0001_NT_1607 asyncRequestBlock;
|
||||
ULONG reserved;
|
||||
PVOID32 pTouchedAstaArray;
|
||||
} LOCALTHIS32_NT_1607;
|
||||
|
||||
typedef struct __MIDL_XmitDefs_0007 {
|
||||
INT pointOfFailure;
|
||||
HRESULT hrFailure;
|
||||
ULONG sizeOfMarshaledErrorInfo;
|
||||
ULONG reserved;
|
||||
BYTE *pMarshaledErrorInfo;
|
||||
} MIDL_XmitDefs_0007;
|
||||
|
||||
typedef struct __MIDL_XmitDefs_0005 {
|
||||
ULONG sizeOfMarshaledResults;
|
||||
ULONG reserved;
|
||||
BYTE *pMarshaledResults;
|
||||
} MIDL_XmitDefs_0005;
|
||||
|
||||
typedef struct __MIDL_XmitDefs_0008 {
|
||||
INT outcome;
|
||||
MIDL_XmitDefs_0005 successDetails;
|
||||
MIDL_XmitDefs_0007 failureDetails;
|
||||
} MIDL_XmitDefs_0008;
|
||||
|
||||
typedef struct __MIDL_XmitDefs_0010 {
|
||||
ULONG asyncStatus;
|
||||
ULONG reserved1;
|
||||
UINT64 uServerCausalityTraceId;
|
||||
ULONG reserved2;
|
||||
PVOID32 *pOutcomeDetails; //__MIDL_XmitDefs_0008
|
||||
} MIDL_XmitDefs_0010;
|
||||
|
||||
typedef struct LOCALTHAT32_NT_1607 {
|
||||
UINT64 marshalingSetAcknowledgmentOxid;
|
||||
UINT64 marshalingSetId;
|
||||
ULONG reserved;
|
||||
PVOID32 pAsyncResponseBlock;
|
||||
};
|
||||
|
||||
/* ! NT_1607: combase 10.0.14393.576 */
|
||||
|
||||
|
||||
/* */
|
||||
|
||||
/* Seen only in 10.0.18362 versions of combase */
|
||||
|
||||
typedef struct _LOCALTHAT32_10_1903 {
|
||||
UINT64 marshalingSetId;
|
||||
PVOID32 pAsyncResponseBlock;
|
||||
PVOID32 containerPassthroughData;
|
||||
} LOCALTHAT32_10_1903;
|
||||
|
||||
/* NT 10.22 ? seen on 10.0.22621.1 */
|
||||
|
||||
typedef struct _LOCALTHIS32 {
|
||||
DWORD dwFlags;
|
||||
DWORD dwClientThread;
|
||||
GUID passthroughTraceActivity;
|
||||
GUID callTraceActivity;
|
||||
MIDL_XmitDefs_0001 asyncRequestBlock;
|
||||
DWORD reserved;
|
||||
PVOID32 pTouchedAstaArray; // Ptr32 __MIDL_XmitDefs_0002
|
||||
} LOCALTHIS32;
|
||||
|
||||
typedef struct _LOCALTHAT32 {
|
||||
UINT64 marshalingSetId;
|
||||
ULONG reserved;
|
||||
PVOID32 pAsyncResponseBlock;
|
||||
PVOID32 containerErrorInformation;
|
||||
PVOID32 containerPassthroughData;
|
||||
} LOCALTHAT32;
|
||||
@@ -715,4 +715,12 @@ typedef struct _STRUCT_PLAINTEXTKEYBLOB {
|
||||
BLOBHEADER hdr;
|
||||
DWORD dwKeySize;
|
||||
BYTE rgbKeyData[0];
|
||||
} STRUCT_PLAINTEXTKEYBLOB, *PSTRUCT_PLAINTEXTKEYBLOB;
|
||||
} STRUCT_PLAINTEXTKEYBLOB, *PSTRUCT_PLAINTEXTKEYBLOB;
|
||||
|
||||
typedef struct _CERT_REQUEST_INFO {
|
||||
DWORD dwVersion;
|
||||
CERT_NAME_BLOB Subject;
|
||||
CERT_PUBLIC_KEY_INFO SubjectPublicKeyInfo;
|
||||
DWORD cAttribute;
|
||||
PCRYPT_ATTRIBUTE rgAttribute;
|
||||
} CERT_REQUEST_INFO, *PCERT_REQUEST_INFO;
|
||||
@@ -69,6 +69,35 @@ typedef enum _FILE_INFORMATION_CLASS {
|
||||
FileMaximumInformation
|
||||
} FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS;
|
||||
|
||||
typedef enum _FILE_INFO_BY_HANDLE_CLASS {
|
||||
FileBasicInfo,
|
||||
FileStandardInfo,
|
||||
FileNameInfo,
|
||||
FileRenameInfo,
|
||||
FileDispositionInfo,
|
||||
FileAllocationInfo,
|
||||
FileEndOfFileInfo,
|
||||
FileStreamInfo,
|
||||
FileCompressionInfo,
|
||||
FileAttributeTagInfo,
|
||||
FileIdBothDirectoryInfo,
|
||||
FileIdBothDirectoryRestartInfo,
|
||||
FileIoPriorityHintInfo,
|
||||
FileRemoteProtocolInfo,
|
||||
FileFullDirectoryInfo,
|
||||
FileFullDirectoryRestartInfo,
|
||||
FileStorageInfo,
|
||||
FileAlignmentInfo,
|
||||
FileIdInfo,
|
||||
FileIdExtdDirectoryInfo,
|
||||
FileIdExtdDirectoryRestartInfo,
|
||||
FileDispositionInfoEx,
|
||||
FileRenameInfoEx,
|
||||
FileCaseSensitiveInfo,
|
||||
FileNormalizedNameInfo,
|
||||
MaximumFileInfoByHandleClass
|
||||
} FILE_INFO_BY_HANDLE_CLASS, *PFILE_INFO_BY_HANDLE_CLASS;
|
||||
|
||||
typedef enum _IO_PRIORITY_HINT {
|
||||
IoPriorityVeryLow = 0,
|
||||
IoPriorityLow = 1,
|
||||
@@ -193,6 +222,18 @@ typedef struct _FILE_GET_EA_INFORMATION
|
||||
CHAR EaName[1];
|
||||
} FILE_GET_EA_INFORMATION, *PFILE_GET_EA_INFORMATION;
|
||||
|
||||
typedef struct _BY_HANDLE_FILE_INFORMATION {
|
||||
DWORD dwFileAttributes;
|
||||
FILETIME ftCreationTime;
|
||||
FILETIME ftLastAccessTime;
|
||||
FILETIME ftLastWriteTime;
|
||||
DWORD dwVolumeSerialNumber;
|
||||
DWORD nFileSizeHigh;
|
||||
DWORD nFileSizeLow;
|
||||
DWORD nNumberOfLinks;
|
||||
DWORD nFileIndexHigh;
|
||||
DWORD nFileIndexLow;
|
||||
} BY_HANDLE_FILE_INFORMATION, *PBY_HANDLE_FILE_INFORMATION, *LPBY_HANDLE_FILE_INFORMATION;
|
||||
|
||||
typedef struct tagVS_FIXEDFILEINFO {
|
||||
DWORD dwSignature;
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
typedef enum _PROC_THREAD_ATTRIBUTE_NUM {
|
||||
ProcThreadAttributeParentProcess = 0,
|
||||
ProcThreadAttributeHandleList = 2,
|
||||
ProcThreadAttributeGroupAffinity = 3,
|
||||
ProcThreadAttributePreferredNode = 4,
|
||||
ProcThreadAttributeIdealProcessor = 5,
|
||||
ProcThreadAttributeUmsThread = 6,
|
||||
ProcThreadAttributeMitigationPolicy = 7,
|
||||
ProcThreadAttributeSecurityCapabilities = 9,
|
||||
ProcThreadAttributeProtectionLevel = 11,
|
||||
ProcThreadAttributeJobList = 13,
|
||||
ProcThreadAttributeChildProcessPolicy = 14,
|
||||
ProcThreadAttributeAllApplicationPackagesPolicy = 15,
|
||||
ProcThreadAttributeWin32kFilter = 16,
|
||||
ProcThreadAttributeSafeOpenPromptOriginClaim = 17,
|
||||
ProcThreadAttributeDesktopAppPolicy = 18,
|
||||
ProcThreadAttributePseudoConsole = 22,
|
||||
ProcThreadAttributeMitigationAuditPolicy = 24,
|
||||
ProcThreadAttributeMachineType = 25,
|
||||
ProcThreadAttributeComponentFilter = 26,
|
||||
ProcThreadAttributeEnableOptionalXStateFeatures = 27,
|
||||
ProcThreadAttributeTrustedApp = 29,
|
||||
ProcThreadAttributeSveVectorLength = 30,
|
||||
} PROC_THREAD_ATTRIBUTE_NUM;
|
||||
@@ -0,0 +1,124 @@
|
||||
typedef enum _MEMORY_INFORMATION_CLASS {
|
||||
MemoryBasicInformation,
|
||||
MemoryWorkingSetList,
|
||||
MemorySectionName,
|
||||
MemoryBasicVlmInformation,
|
||||
MemoryWorkingSetListEx
|
||||
} MEMORY_INFORMATION_CLASS;
|
||||
|
||||
typedef enum _THREAD_INFORMATION_CLASS {
|
||||
ThreadBasicInformation,
|
||||
ThreadTimes,
|
||||
ThreadPriority,
|
||||
ThreadBasePriority,
|
||||
ThreadAffinityMask,
|
||||
ThreadImpersonationToken,
|
||||
ThreadDescriptorTableEntry,
|
||||
ThreadEnableAlignmentFaultFixup,
|
||||
ThreadEventPair,
|
||||
ThreadQuerySetWin32StartAddress,
|
||||
ThreadZeroTlsCell,
|
||||
ThreadPerformanceCount,
|
||||
ThreadAmILastThread,
|
||||
ThreadIdealProcessor,
|
||||
ThreadPriorityBoost,
|
||||
ThreadSetTlsArrayAddress,
|
||||
ThreadIsIoPending,
|
||||
ThreadHideFromDebugger
|
||||
} THREAD_INFORMATION_CLASS, *PTHREAD_INFORMATION_CLASS;
|
||||
|
||||
// For NtQueryInformationProcess
|
||||
typedef enum _PROCESSINFOCLASS {
|
||||
ProcessBasicInformation = 0,
|
||||
ProcessQuotaLimits = 1,
|
||||
ProcessIoCounters = 2,
|
||||
ProcessVmCounters = 3,
|
||||
ProcessTimes = 4,
|
||||
ProcessBasePriority = 5,
|
||||
ProcessRaisePriority = 6,
|
||||
ProcessDebugPort = 7,
|
||||
ProcessExceptionPort = 8,
|
||||
ProcessAccessToken = 9,
|
||||
ProcessLdtInformation = 10,
|
||||
ProcessLdtSize = 11,
|
||||
ProcessDefaultHardErrorMode = 12,
|
||||
ProcessIoPortHandlers = 13, // Note: this is kernel mode only
|
||||
ProcessPooledUsageAndLimits = 14,
|
||||
ProcessWorkingSetWatch = 15,
|
||||
ProcessUserModeIOPL = 16,
|
||||
ProcessEnableAlignmentFaultFixup = 17,
|
||||
ProcessPriorityClass = 18,
|
||||
ProcessWx86Information = 19,
|
||||
ProcessHandleCount = 20,
|
||||
ProcessAffinityMask = 21,
|
||||
ProcessPriorityBoost = 22,
|
||||
ProcessDeviceMap = 23,
|
||||
ProcessSessionInformation = 24,
|
||||
ProcessForegroundInformation = 25,
|
||||
ProcessWow64Information = 26,
|
||||
ProcessImageFileName = 27,
|
||||
ProcessLUIDDeviceMapsEnabled = 28,
|
||||
ProcessBreakOnTermination = 29,
|
||||
ProcessDebugObjectHandle = 30,
|
||||
ProcessDebugFlags = 31,
|
||||
ProcessHandleTracing = 32,
|
||||
ProcessIoPriority = 33,
|
||||
ProcessExecuteFlags = 34,
|
||||
ProcessTlsInformation = 35,
|
||||
ProcessCookie = 36,
|
||||
ProcessImageInformation = 37,
|
||||
ProcessCycleTime = 38,
|
||||
ProcessPagePriority = 39,
|
||||
ProcessInstrumentationCallback = 40,
|
||||
ProcessThreadStackAllocation = 41,
|
||||
ProcessWorkingSetWatchEx = 42,
|
||||
ProcessImageFileNameWin32 = 43,
|
||||
ProcessImageFileMapping = 44,
|
||||
ProcessAffinityUpdateMode = 45,
|
||||
ProcessMemoryAllocationMode = 46,
|
||||
ProcessGroupInformation = 47,
|
||||
ProcessTokenVirtualizationEnabled = 48,
|
||||
ProcessOwnerInformation = 49,
|
||||
ProcessWindowInformation = 50,
|
||||
ProcessHandleInformation = 51,
|
||||
ProcessMitigationPolicy = 52,
|
||||
ProcessDynamicFunctionTableInformation = 53,
|
||||
ProcessHandleCheckingMode = 54,
|
||||
ProcessKeepAliveCount = 55,
|
||||
ProcessRevokeFileHandles = 56,
|
||||
ProcessWorkingSetControl = 57,
|
||||
ProcessHandleTable = 58,
|
||||
ProcessCheckStackExtentsMode = 59,
|
||||
ProcessCommandLineInformation = 60,
|
||||
ProcessProtectionInformation = 61,
|
||||
ProcessMemoryExhaustion = 62,
|
||||
ProcessFaultInformation = 63,
|
||||
ProcessTelemetryIdInformation = 64,
|
||||
ProcessCommitReleaseInformation = 65,
|
||||
ProcessReserved1Information = 66,
|
||||
ProcessReserved2Information = 67,
|
||||
ProcessSubsystemProcess = 68,
|
||||
ProcessInPrivate = 70,
|
||||
ProcessRaiseUMExceptionOnInvalidHandleClose = 71,
|
||||
ProcessSubsystemInformation = 75,
|
||||
ProcessWin32kSyscallFilterInformation = 79,
|
||||
ProcessEnergyTrackingState = 82,
|
||||
MaxProcessInfoClass // MaxProcessInfoClass should always be the last enum
|
||||
} PROCESSINFOCLASS;
|
||||
|
||||
// GetProcessInfo
|
||||
typedef enum _PROCESS_INFORMATION_CLASS {
|
||||
ProcessMemoryPriority,
|
||||
ProcessMemoryExhaustionInfo,
|
||||
ProcessAppMemoryInfo,
|
||||
ProcessInPrivateInfo,
|
||||
ProcessPowerThrottling,
|
||||
ProcessReservedValue1,
|
||||
ProcessTelemetryCoverageInfo,
|
||||
ProcessProtectionLevelInfo,
|
||||
ProcessLeapSecondInfo,
|
||||
ProcessMachineTypeInfo, // Map to 0xe6(230) for the syscall NtQueryInformationProcess
|
||||
ProcessOverrideSubsequentPrefetchParameter,
|
||||
ProcessMaxOverridePrefetchParameter,
|
||||
ProcessInformationClassMax
|
||||
} PROCESS_INFORMATION_CLASS;
|
||||
@@ -0,0 +1,11 @@
|
||||
typedef enum _MACHINE_ATTRIBUTES {
|
||||
UserEnabled = 0x00000001,
|
||||
KernelEnabled = 0x00000002,
|
||||
Wow64Container = 0x00000004
|
||||
} MACHINE_ATTRIBUTES;
|
||||
|
||||
typedef struct _PROCESS_MACHINE_INFORMATION {
|
||||
USHORT ProcessMachine;
|
||||
USHORT Res0;
|
||||
MACHINE_ATTRIBUTES MachineAttributes;
|
||||
} PROCESS_MACHINE_INFORMATION;
|
||||
@@ -0,0 +1,29 @@
|
||||
/* Structures that do not depends on anything other that basic type
|
||||
Simplify structure dependancy file graph
|
||||
*/
|
||||
|
||||
typedef struct _LIST_ENTRY {
|
||||
struct _LIST_ENTRY *Flink;
|
||||
struct _LIST_ENTRY *Blink;
|
||||
} LIST_ENTRY, *PLIST_ENTRY, *RESTRICTED_POINTER PRLIST_ENTRY;
|
||||
|
||||
typedef struct _LSA_UNICODE_STRING {
|
||||
USHORT Length;
|
||||
USHORT MaximumLength;
|
||||
PVOID Buffer; // PVOID to prevent ctypes to automatically read the content of the buffer till a \0
|
||||
} LSA_UNICODE_STRING, *PLSA_UNICODE_STRING, UNICODE_STRING, *PUNICODE_STRING;
|
||||
|
||||
typedef struct _CLIENT_ID{
|
||||
HANDLE UniqueProcess;
|
||||
HANDLE UniqueThread;
|
||||
} CLIENT_ID, *PCLIENT_ID;
|
||||
|
||||
typedef struct _CLIENT_ID64{
|
||||
ULONG64 UniqueProcess;
|
||||
ULONG64 UniqueThread;
|
||||
} CLIENT_ID64, *PCLIENT_ID64;
|
||||
|
||||
typedef struct _CLIENT_ID32{
|
||||
ULONG UniqueProcess;
|
||||
ULONG UniqueThread;
|
||||
} CLIENT_ID32, *PCLIENT_ID32;
|
||||
@@ -67,3 +67,22 @@ typedef enum _COMPUTER_NAME_FORMAT {
|
||||
ComputerNamePhysicalDnsFullyQualified,
|
||||
ComputerNameMax
|
||||
} COMPUTER_NAME_FORMAT;
|
||||
|
||||
typedef struct _SYSTEM_INFO {
|
||||
union {
|
||||
DWORD dwOemId;
|
||||
struct {
|
||||
WORD wProcessorArchitecture;
|
||||
WORD wReserved;
|
||||
} DUMMYSTRUCTNAME;
|
||||
} DUMMYUNIONNAME;
|
||||
DWORD dwPageSize;
|
||||
LPVOID lpMinimumApplicationAddress;
|
||||
LPVOID lpMaximumApplicationAddress;
|
||||
DWORD_PTR dwActiveProcessorMask;
|
||||
DWORD dwNumberOfProcessors;
|
||||
DWORD dwProcessorType;
|
||||
DWORD dwAllocationGranularity;
|
||||
WORD wProcessorLevel;
|
||||
WORD wProcessorRevision;
|
||||
} SYSTEM_INFO, *LPSYSTEM_INFO;
|
||||
@@ -0,0 +1,237 @@
|
||||
/* This is the part of RTL_USER_PROCESS_PARAMETERS that works from XP to Windows 10
|
||||
http://terminus.rewolf.pl/terminus/structures/ntdll/_RTL_USER_PROCESS_PARAMETERS_x86.html
|
||||
*/
|
||||
|
||||
typedef struct _CURDIR
|
||||
{
|
||||
UNICODE_STRING DosPath;
|
||||
PVOID Handle;
|
||||
} CURDIR, *PCURDIR;
|
||||
|
||||
typedef struct _RTL_DRIVE_LETTER_CURDIR
|
||||
{
|
||||
WORD Flags;
|
||||
WORD Length;
|
||||
ULONG TimeStamp;
|
||||
UNICODE_STRING DosPath;
|
||||
} RTL_DRIVE_LETTER_CURDIR, *PRTL_DRIVE_LETTER_CURDIR;
|
||||
|
||||
typedef struct _RTL_USER_PROCESS_PARAMETERS
|
||||
{
|
||||
ULONG MaximumLength;
|
||||
ULONG Length;
|
||||
ULONG Flags;
|
||||
ULONG DebugFlags;
|
||||
PVOID ConsoleHandle;
|
||||
ULONG ConsoleFlags;
|
||||
PVOID StandardInput;
|
||||
PVOID StandardOutput;
|
||||
PVOID StandardError;
|
||||
CURDIR CurrentDirectory;
|
||||
UNICODE_STRING DllPath;
|
||||
UNICODE_STRING ImagePathName;
|
||||
UNICODE_STRING CommandLine;
|
||||
PVOID Environment;
|
||||
ULONG StartingX;
|
||||
ULONG StartingY;
|
||||
ULONG CountX;
|
||||
ULONG CountY;
|
||||
ULONG CountCharsX;
|
||||
ULONG CountCharsY;
|
||||
ULONG FillAttribute;
|
||||
ULONG WindowFlags;
|
||||
ULONG ShowWindowFlags;
|
||||
UNICODE_STRING WindowTitle;
|
||||
UNICODE_STRING DesktopInfo;
|
||||
UNICODE_STRING ShellInfo;
|
||||
UNICODE_STRING RuntimeData;
|
||||
RTL_DRIVE_LETTER_CURDIR CurrentDirectores[32];
|
||||
} RTL_USER_PROCESS_PARAMETERS, *PRTL_USER_PROCESS_PARAMETERS;
|
||||
|
||||
// PEB: 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 struct _LDR_DATA_TABLE_ENTRY {
|
||||
PVOID Reserved1[2];
|
||||
LIST_ENTRY InMemoryOrderLinks;
|
||||
PVOID Reserved2[2];
|
||||
PVOID DllBase;
|
||||
PVOID EntryPoint;
|
||||
PVOID SizeOfImage;
|
||||
UNICODE_STRING FullDllName;
|
||||
UNICODE_STRING BaseDllName;
|
||||
PVOID Reserved5[3];
|
||||
ULONG CheckSum;
|
||||
ULONG TimeDateStamp;
|
||||
} LDR_DATA_TABLE_ENTRY, *PLDR_DATA_TABLE_ENTRY;
|
||||
|
||||
/* Definition of WinXP : Still same base in win11 with some extra field */
|
||||
|
||||
typedef struct _PEB_LDR_DATA {
|
||||
ULONG Length;
|
||||
BYTE Initialized;
|
||||
PVOID SsHandle;
|
||||
_LIST_ENTRY InLoadOrderModuleList;
|
||||
_LIST_ENTRY InMemoryOrderModuleList;
|
||||
_LIST_ENTRY InInitializationOrderModuleList;
|
||||
PVOID EntryInProgress;
|
||||
// BYTE ShutdownInProgress; // New field
|
||||
// PVOID ShutdownThreadId; // New field
|
||||
}PEB_LDR_DATA, *PPEB_LDR_DATA;
|
||||
|
||||
|
||||
|
||||
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];
|
||||
BYTE BeingDebugged;
|
||||
BYTE Reserved2[1];
|
||||
PVOID Mutant;
|
||||
PVOID ImageBaseAddress;
|
||||
PPEB_LDR_DATA Ldr;
|
||||
PRTL_USER_PROCESS_PARAMETERS ProcessParameters;
|
||||
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;
|
||||
union {
|
||||
PVOID KernelCallbackTable;
|
||||
PVOID UserSharedInfoPtr;
|
||||
};
|
||||
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;
|
||||
union {
|
||||
PVOID ImageProcessAffinityMask;
|
||||
PVOID ActiveProcessAffinityMask;
|
||||
};
|
||||
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;
|
||||
|
||||
|
||||
/* Partial TEB description
|
||||
Based on:
|
||||
- fields that did not move since XP
|
||||
- https://learn.microsoft.com/en-us/windows/win32/api/winternl/ns-winternl-teb
|
||||
*/
|
||||
|
||||
typedef struct _EXCEPTION_REGISTRATION_RECORD {
|
||||
_EXCEPTION_REGISTRATION_RECORD *Next;
|
||||
PVOID Handler;
|
||||
};
|
||||
|
||||
typedef struct _NT_TIB {
|
||||
struct _EXCEPTION_REGISTRATION_RECORD *ExceptionList;
|
||||
PVOID StackBase;
|
||||
PVOID StackLimit;
|
||||
PVOID SubSystemTib;
|
||||
union {
|
||||
PVOID FiberData;
|
||||
ULONG Version;
|
||||
};
|
||||
PVOID ArbitraryUserPointer;
|
||||
struct _NT_TIB *Self;
|
||||
} NT_TIB;
|
||||
|
||||
typedef struct _TEB {
|
||||
_NT_TIB NtTib;
|
||||
PVOID EnvironmentPointer;
|
||||
_CLIENT_ID ClientId;
|
||||
PVOID ActiveRpcHandle;
|
||||
PVOID ThreadLocalStoragePointer;
|
||||
_PEB *ProcessEnvironmentBlock;
|
||||
ULONG LastErrorValue;
|
||||
ULONG CountOfOwnedCriticalSections;
|
||||
PVOID CsrClientThread;
|
||||
PVOID Win32ThreadInfo;
|
||||
ULONG User32Reserved[26];
|
||||
ULONG UserReserved[5];
|
||||
PVOID WOW32Reserved;
|
||||
ULONG CurrentLocale;
|
||||
ULONG FpSoftwareStatusRegister;
|
||||
} TEB;
|
||||
@@ -0,0 +1,347 @@
|
||||
typedef union _ARM64_NT_NEON128 {
|
||||
struct {
|
||||
ULONGLONG Low;
|
||||
LONGLONG High;
|
||||
} DUMMYSTRUCTNAME;
|
||||
DOUBLE D[2];
|
||||
FLOAT S[4];
|
||||
WORD H[8];
|
||||
BYTE B[16];
|
||||
} ARM64_NT_NEON128, *PARM64_NT_NEON128;
|
||||
|
||||
typedef struct _ARM64_NT_CONTEXT {
|
||||
|
||||
//
|
||||
// Control flags.
|
||||
//
|
||||
|
||||
/* +0x000 */ DWORD ContextFlags;
|
||||
|
||||
//
|
||||
// Integer registers
|
||||
//
|
||||
|
||||
/* +0x004 */ DWORD Cpsr; // NZVF + DAIF + CurrentEL + SPSel
|
||||
/* +0x008 */ union {
|
||||
struct {
|
||||
DWORD64 X0;
|
||||
DWORD64 X1;
|
||||
DWORD64 X2;
|
||||
DWORD64 X3;
|
||||
DWORD64 X4;
|
||||
DWORD64 X5;
|
||||
DWORD64 X6;
|
||||
DWORD64 X7;
|
||||
DWORD64 X8;
|
||||
DWORD64 X9;
|
||||
DWORD64 X10;
|
||||
DWORD64 X11;
|
||||
DWORD64 X12;
|
||||
DWORD64 X13;
|
||||
DWORD64 X14;
|
||||
DWORD64 X15;
|
||||
DWORD64 X16;
|
||||
DWORD64 X17;
|
||||
DWORD64 X18;
|
||||
DWORD64 X19;
|
||||
DWORD64 X20;
|
||||
DWORD64 X21;
|
||||
DWORD64 X22;
|
||||
DWORD64 X23;
|
||||
DWORD64 X24;
|
||||
DWORD64 X25;
|
||||
DWORD64 X26;
|
||||
DWORD64 X27;
|
||||
DWORD64 X28;
|
||||
/* +0x0f0 */ DWORD64 Fp;
|
||||
/* +0x0f8 */ DWORD64 Lr;
|
||||
} DUMMYSTRUCTNAME;
|
||||
DWORD64 X[31];
|
||||
} DUMMYUNIONNAME;
|
||||
/* +0x100 */ DWORD64 Sp;
|
||||
/* +0x108 */ DWORD64 Pc;
|
||||
|
||||
//
|
||||
// Floating Point/NEON Registers
|
||||
//
|
||||
|
||||
/* +0x110 */ ARM64_NT_NEON128 V[32];
|
||||
/* +0x310 */ DWORD Fpcr;
|
||||
/* +0x314 */ DWORD Fpsr;
|
||||
|
||||
//
|
||||
// Debug registers
|
||||
//
|
||||
|
||||
/* +0x318 */ DWORD Bcr[ARM64_MAX_BREAKPOINTS];
|
||||
/* +0x338 */ DWORD64 Bvr[ARM64_MAX_BREAKPOINTS];
|
||||
/* +0x378 */ DWORD Wcr[ARM64_MAX_WATCHPOINTS];
|
||||
/* +0x380 */ DWORD64 Wvr[ARM64_MAX_WATCHPOINTS];
|
||||
/* +0x390 */
|
||||
|
||||
} ARM64_NT_CONTEXT, *PARM64_NT_CONTEXT;
|
||||
|
||||
|
||||
|
||||
|
||||
typedef struct _FLOATING_SAVE_AREA {
|
||||
DWORD ControlWord;
|
||||
DWORD StatusWord;
|
||||
DWORD TagWord;
|
||||
DWORD ErrorOffset;
|
||||
DWORD ErrorSelector;
|
||||
DWORD DataOffset;
|
||||
DWORD DataSelector;
|
||||
BYTE RegisterArea[80];
|
||||
DWORD Cr0NpxState;
|
||||
} FLOATING_SAVE_AREA;
|
||||
|
||||
typedef struct _CONTEXT32 {
|
||||
|
||||
DWORD ContextFlags;
|
||||
|
||||
DWORD Dr0;
|
||||
DWORD Dr1;
|
||||
DWORD Dr2;
|
||||
DWORD Dr3;
|
||||
DWORD Dr6;
|
||||
DWORD Dr7;
|
||||
|
||||
FLOATING_SAVE_AREA FloatSave;
|
||||
|
||||
DWORD SegGs;
|
||||
DWORD SegFs;
|
||||
DWORD SegEs;
|
||||
DWORD SegDs;
|
||||
|
||||
DWORD Edi;
|
||||
DWORD Esi;
|
||||
DWORD Ebx;
|
||||
DWORD Edx;
|
||||
DWORD Ecx;
|
||||
DWORD Eax;
|
||||
|
||||
DWORD Ebp;
|
||||
DWORD Eip;
|
||||
DWORD SegCs;
|
||||
DWORD EFlags;
|
||||
DWORD Esp;
|
||||
DWORD SegSs;
|
||||
|
||||
BYTE ExtendedRegisters[512];
|
||||
|
||||
} CONTEXT32, *PCONTEXT32, *LPCONTEXT32;
|
||||
|
||||
typedef struct _WOW64_FLOATING_SAVE_AREA {
|
||||
DWORD ControlWord;
|
||||
DWORD StatusWord;
|
||||
DWORD TagWord;
|
||||
DWORD ErrorOffset;
|
||||
DWORD ErrorSelector;
|
||||
DWORD DataOffset;
|
||||
DWORD DataSelector;
|
||||
BYTE RegisterArea[WOW64_SIZE_OF_80387_REGISTERS];
|
||||
DWORD Cr0NpxState;
|
||||
} WOW64_FLOATING_SAVE_AREA;
|
||||
|
||||
typedef struct _WOW64_CONTEXT {
|
||||
|
||||
DWORD ContextFlags;
|
||||
|
||||
DWORD Dr0;
|
||||
DWORD Dr1;
|
||||
DWORD Dr2;
|
||||
DWORD Dr3;
|
||||
DWORD Dr6;
|
||||
DWORD Dr7;
|
||||
|
||||
WOW64_FLOATING_SAVE_AREA FloatSave;
|
||||
|
||||
DWORD SegGs;
|
||||
DWORD SegFs;
|
||||
DWORD SegEs;
|
||||
DWORD SegDs;
|
||||
|
||||
DWORD Edi;
|
||||
DWORD Esi;
|
||||
DWORD Ebx;
|
||||
DWORD Edx;
|
||||
DWORD Ecx;
|
||||
DWORD Eax;
|
||||
DWORD Ebp;
|
||||
DWORD Eip;
|
||||
DWORD SegCs;
|
||||
DWORD EFlags;
|
||||
DWORD Esp;
|
||||
DWORD SegSs;
|
||||
|
||||
BYTE ExtendedRegisters[WOW64_MAXIMUM_SUPPORTED_EXTENSION];
|
||||
|
||||
} WOW64_CONTEXT, *PWOW64_CONTEXT;
|
||||
|
||||
|
||||
typedef struct _M128A {
|
||||
ULONGLONG Low;
|
||||
LONGLONG High;
|
||||
} M128A, *PM128A;
|
||||
|
||||
typedef struct _XSAVE_FORMAT_64 {
|
||||
WORD ControlWord;
|
||||
WORD StatusWord;
|
||||
BYTE TagWord;
|
||||
BYTE Reserved1;
|
||||
WORD ErrorOpcode;
|
||||
DWORD ErrorOffset;
|
||||
WORD ErrorSelector;
|
||||
WORD Reserved2;
|
||||
DWORD DataOffset;
|
||||
WORD DataSelector;
|
||||
WORD Reserved3;
|
||||
DWORD MxCsr;
|
||||
DWORD MxCsr_Mask;
|
||||
M128A FloatRegisters[8];
|
||||
M128A XmmRegisters[16];
|
||||
BYTE Reserved4[96];
|
||||
} XSAVE_FORMAT_64, *PXSAVE_FORMAT_64;
|
||||
|
||||
typedef struct _XSAVE_FORMAT_32 {
|
||||
WORD ControlWord;
|
||||
WORD StatusWord;
|
||||
BYTE TagWord;
|
||||
BYTE Reserved1;
|
||||
WORD ErrorOpcode;
|
||||
DWORD ErrorOffset;
|
||||
WORD ErrorSelector;
|
||||
WORD Reserved2;
|
||||
DWORD DataOffset;
|
||||
WORD DataSelector;
|
||||
WORD Reserved3;
|
||||
DWORD MxCsr;
|
||||
DWORD MxCsr_Mask;
|
||||
M128A FloatRegisters[8];
|
||||
M128A XmmRegisters[8];
|
||||
BYTE Reserved4[192];
|
||||
DWORD StackControl[7];
|
||||
DWORD Cr0NpxState;
|
||||
} XSAVE_FORMAT_32, *PXSAVE_FORMAT_32;
|
||||
|
||||
|
||||
typedef struct _CONTEXT64 {
|
||||
|
||||
//
|
||||
// Register parameter home addresses.
|
||||
//
|
||||
// N.B. These fields are for convience - they could be used to extend the
|
||||
// context record in the future.
|
||||
//
|
||||
|
||||
DWORD64 P1Home;
|
||||
DWORD64 P2Home;
|
||||
DWORD64 P3Home;
|
||||
DWORD64 P4Home;
|
||||
DWORD64 P5Home;
|
||||
DWORD64 P6Home;
|
||||
|
||||
//
|
||||
// Control flags.
|
||||
//
|
||||
|
||||
DWORD ContextFlags;
|
||||
DWORD MxCsr;
|
||||
|
||||
//
|
||||
// Segment Registers and processor flags.
|
||||
//
|
||||
|
||||
WORD SegCs;
|
||||
WORD SegDs;
|
||||
WORD SegEs;
|
||||
WORD SegFs;
|
||||
WORD SegGs;
|
||||
WORD SegSs;
|
||||
DWORD EFlags;
|
||||
|
||||
//
|
||||
// Debug registers
|
||||
//
|
||||
|
||||
DWORD64 Dr0;
|
||||
DWORD64 Dr1;
|
||||
DWORD64 Dr2;
|
||||
DWORD64 Dr3;
|
||||
DWORD64 Dr6;
|
||||
DWORD64 Dr7;
|
||||
|
||||
//
|
||||
// Integer registers.
|
||||
//
|
||||
|
||||
DWORD64 Rax;
|
||||
DWORD64 Rcx;
|
||||
DWORD64 Rdx;
|
||||
DWORD64 Rbx;
|
||||
DWORD64 Rsp;
|
||||
DWORD64 Rbp;
|
||||
DWORD64 Rsi;
|
||||
DWORD64 Rdi;
|
||||
DWORD64 R8;
|
||||
DWORD64 R9;
|
||||
DWORD64 R10;
|
||||
DWORD64 R11;
|
||||
DWORD64 R12;
|
||||
DWORD64 R13;
|
||||
DWORD64 R14;
|
||||
DWORD64 R15;
|
||||
|
||||
//
|
||||
// Program counter.
|
||||
//
|
||||
|
||||
DWORD64 Rip;
|
||||
|
||||
//
|
||||
// Floating point state.
|
||||
//
|
||||
|
||||
union {
|
||||
XSAVE_FORMAT_64 FltSave;
|
||||
struct {
|
||||
M128A Header[2];
|
||||
M128A Legacy[8];
|
||||
M128A Xmm0;
|
||||
M128A Xmm1;
|
||||
M128A Xmm2;
|
||||
M128A Xmm3;
|
||||
M128A Xmm4;
|
||||
M128A Xmm5;
|
||||
M128A Xmm6;
|
||||
M128A Xmm7;
|
||||
M128A Xmm8;
|
||||
M128A Xmm9;
|
||||
M128A Xmm10;
|
||||
M128A Xmm11;
|
||||
M128A Xmm12;
|
||||
M128A Xmm13;
|
||||
M128A Xmm14;
|
||||
M128A Xmm15;
|
||||
} DUMMYSTRUCTNAME;
|
||||
} DUMMYUNIONNAME;
|
||||
|
||||
//
|
||||
// Vector registers.
|
||||
//
|
||||
|
||||
M128A VectorRegister[26];
|
||||
DWORD64 VectorControl;
|
||||
|
||||
//
|
||||
// Special debug control registers.
|
||||
//
|
||||
|
||||
DWORD64 DebugControl;
|
||||
DWORD64 LastBranchToRip;
|
||||
DWORD64 LastBranchFromRip;
|
||||
DWORD64 LastExceptionToRip;
|
||||
DWORD64 LastExceptionFromRip;
|
||||
|
||||
} CONTEXT64, *PCONTEXT64, *LPCONTEXT64;
|
||||
@@ -1,188 +1,3 @@
|
||||
typedef struct _LIST_ENTRY {
|
||||
struct _LIST_ENTRY *Flink;
|
||||
struct _LIST_ENTRY *Blink;
|
||||
} LIST_ENTRY, *PLIST_ENTRY, *RESTRICTED_POINTER PRLIST_ENTRY;
|
||||
|
||||
|
||||
typedef struct _PEB_LDR_DATA {
|
||||
BYTE Reserved1[8];
|
||||
PVOID Reserved2[3];
|
||||
LIST_ENTRY InMemoryOrderModuleList;
|
||||
} PEB_LDR_DATA, *PPEB_LDR_DATA;
|
||||
|
||||
|
||||
typedef struct _LSA_UNICODE_STRING {
|
||||
USHORT Length;
|
||||
USHORT MaximumLength;
|
||||
PVOID Buffer; // PVOID to prevent ctypes to automatically read the content of the buffer till a \0
|
||||
} LSA_UNICODE_STRING, *PLSA_UNICODE_STRING, UNICODE_STRING, *PUNICODE_STRING;
|
||||
|
||||
typedef struct _CURDIR
|
||||
{
|
||||
UNICODE_STRING DosPath;
|
||||
PVOID Handle;
|
||||
} CURDIR, *PCURDIR;
|
||||
|
||||
typedef struct _RTL_DRIVE_LETTER_CURDIR
|
||||
{
|
||||
WORD Flags;
|
||||
WORD Length;
|
||||
ULONG TimeStamp;
|
||||
UNICODE_STRING DosPath;
|
||||
} RTL_DRIVE_LETTER_CURDIR, *PRTL_DRIVE_LETTER_CURDIR;
|
||||
|
||||
/* This is the part of RTL_USER_PROCESS_PARAMETERS that works from XP to Windows 10
|
||||
http://terminus.rewolf.pl/terminus/structures/ntdll/_RTL_USER_PROCESS_PARAMETERS_x86.html
|
||||
*/
|
||||
typedef struct _RTL_USER_PROCESS_PARAMETERS
|
||||
{
|
||||
ULONG MaximumLength;
|
||||
ULONG Length;
|
||||
ULONG Flags;
|
||||
ULONG DebugFlags;
|
||||
PVOID ConsoleHandle;
|
||||
ULONG ConsoleFlags;
|
||||
PVOID StandardInput;
|
||||
PVOID StandardOutput;
|
||||
PVOID StandardError;
|
||||
CURDIR CurrentDirectory;
|
||||
UNICODE_STRING DllPath;
|
||||
UNICODE_STRING ImagePathName;
|
||||
UNICODE_STRING CommandLine;
|
||||
PVOID Environment;
|
||||
ULONG StartingX;
|
||||
ULONG StartingY;
|
||||
ULONG CountX;
|
||||
ULONG CountY;
|
||||
ULONG CountCharsX;
|
||||
ULONG CountCharsY;
|
||||
ULONG FillAttribute;
|
||||
ULONG WindowFlags;
|
||||
ULONG ShowWindowFlags;
|
||||
UNICODE_STRING WindowTitle;
|
||||
UNICODE_STRING DesktopInfo;
|
||||
UNICODE_STRING ShellInfo;
|
||||
UNICODE_STRING RuntimeData;
|
||||
RTL_DRIVE_LETTER_CURDIR CurrentDirectores[32];
|
||||
} 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];
|
||||
BYTE BeingDebugged;
|
||||
BYTE Reserved2[1];
|
||||
PVOID Mutant;
|
||||
PVOID ImageBaseAddress;
|
||||
PPEB_LDR_DATA Ldr;
|
||||
PRTL_USER_PROCESS_PARAMETERS ProcessParameters;
|
||||
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;
|
||||
union {
|
||||
PVOID KernelCallbackTable;
|
||||
PVOID UserSharedInfoPtr;
|
||||
};
|
||||
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;
|
||||
union {
|
||||
PVOID ImageProcessAffinityMask;
|
||||
PVOID ActiveProcessAffinityMask;
|
||||
};
|
||||
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;
|
||||
|
||||
|
||||
typedef struct _SECURITY_ATTRIBUTES {
|
||||
DWORD nLength;
|
||||
LPVOID lpSecurityDescriptor;
|
||||
@@ -565,112 +380,7 @@ typedef enum _SECTION_INHERIT {
|
||||
ViewUnmap = 2
|
||||
} SECTION_INHERIT;
|
||||
|
||||
typedef enum _PROCESSINFOCLASS {
|
||||
ProcessBasicInformation = 0,
|
||||
ProcessQuotaLimits = 1,
|
||||
ProcessIoCounters = 2,
|
||||
ProcessVmCounters = 3,
|
||||
ProcessTimes = 4,
|
||||
ProcessBasePriority = 5,
|
||||
ProcessRaisePriority = 6,
|
||||
ProcessDebugPort = 7,
|
||||
ProcessExceptionPort = 8,
|
||||
ProcessAccessToken = 9,
|
||||
ProcessLdtInformation = 10,
|
||||
ProcessLdtSize = 11,
|
||||
ProcessDefaultHardErrorMode = 12,
|
||||
ProcessIoPortHandlers = 13, // Note: this is kernel mode only
|
||||
ProcessPooledUsageAndLimits = 14,
|
||||
ProcessWorkingSetWatch = 15,
|
||||
ProcessUserModeIOPL = 16,
|
||||
ProcessEnableAlignmentFaultFixup = 17,
|
||||
ProcessPriorityClass = 18,
|
||||
ProcessWx86Information = 19,
|
||||
ProcessHandleCount = 20,
|
||||
ProcessAffinityMask = 21,
|
||||
ProcessPriorityBoost = 22,
|
||||
ProcessDeviceMap = 23,
|
||||
ProcessSessionInformation = 24,
|
||||
ProcessForegroundInformation = 25,
|
||||
ProcessWow64Information = 26,
|
||||
ProcessImageFileName = 27,
|
||||
ProcessLUIDDeviceMapsEnabled = 28,
|
||||
ProcessBreakOnTermination = 29,
|
||||
ProcessDebugObjectHandle = 30,
|
||||
ProcessDebugFlags = 31,
|
||||
ProcessHandleTracing = 32,
|
||||
ProcessIoPriority = 33,
|
||||
ProcessExecuteFlags = 34,
|
||||
ProcessTlsInformation = 35,
|
||||
ProcessCookie = 36,
|
||||
ProcessImageInformation = 37,
|
||||
ProcessCycleTime = 38,
|
||||
ProcessPagePriority = 39,
|
||||
ProcessInstrumentationCallback = 40,
|
||||
ProcessThreadStackAllocation = 41,
|
||||
ProcessWorkingSetWatchEx = 42,
|
||||
ProcessImageFileNameWin32 = 43,
|
||||
ProcessImageFileMapping = 44,
|
||||
ProcessAffinityUpdateMode = 45,
|
||||
ProcessMemoryAllocationMode = 46,
|
||||
ProcessGroupInformation = 47,
|
||||
ProcessTokenVirtualizationEnabled = 48,
|
||||
ProcessOwnerInformation = 49,
|
||||
ProcessWindowInformation = 50,
|
||||
ProcessHandleInformation = 51,
|
||||
ProcessMitigationPolicy = 52,
|
||||
ProcessDynamicFunctionTableInformation = 53,
|
||||
ProcessHandleCheckingMode = 54,
|
||||
ProcessKeepAliveCount = 55,
|
||||
ProcessRevokeFileHandles = 56,
|
||||
ProcessWorkingSetControl = 57,
|
||||
ProcessHandleTable = 58,
|
||||
ProcessCheckStackExtentsMode = 59,
|
||||
ProcessCommandLineInformation = 60,
|
||||
ProcessProtectionInformation = 61,
|
||||
ProcessMemoryExhaustion = 62,
|
||||
ProcessFaultInformation = 63,
|
||||
ProcessTelemetryIdInformation = 64,
|
||||
ProcessCommitReleaseInformation = 65,
|
||||
ProcessReserved1Information = 66,
|
||||
ProcessReserved2Information = 67,
|
||||
ProcessSubsystemProcess = 68,
|
||||
ProcessInPrivate = 70,
|
||||
ProcessRaiseUMExceptionOnInvalidHandleClose = 71,
|
||||
ProcessSubsystemInformation = 75,
|
||||
ProcessWin32kSyscallFilterInformation = 79,
|
||||
ProcessEnergyTrackingState = 82,
|
||||
MaxProcessInfoClass // MaxProcessInfoClass should always be the last enum
|
||||
} PROCESSINFOCLASS;
|
||||
|
||||
typedef enum _MEMORY_INFORMATION_CLASS {
|
||||
MemoryBasicInformation,
|
||||
MemoryWorkingSetList,
|
||||
MemorySectionName,
|
||||
MemoryBasicVlmInformation,
|
||||
MemoryWorkingSetListEx
|
||||
} MEMORY_INFORMATION_CLASS;
|
||||
|
||||
typedef enum _THREAD_INFORMATION_CLASS {
|
||||
ThreadBasicInformation,
|
||||
ThreadTimes,
|
||||
ThreadPriority,
|
||||
ThreadBasePriority,
|
||||
ThreadAffinityMask,
|
||||
ThreadImpersonationToken,
|
||||
ThreadDescriptorTableEntry,
|
||||
ThreadEnableAlignmentFaultFixup,
|
||||
ThreadEventPair,
|
||||
ThreadQuerySetWin32StartAddress,
|
||||
ThreadZeroTlsCell,
|
||||
ThreadPerformanceCount,
|
||||
ThreadAmILastThread,
|
||||
ThreadIdealProcessor,
|
||||
ThreadPriorityBoost,
|
||||
ThreadSetTlsArrayAddress,
|
||||
ThreadIsIoPending,
|
||||
ThreadHideFromDebugger
|
||||
} THREAD_INFORMATION_CLASS, *PTHREAD_INFORMATION_CLASS;
|
||||
|
||||
|
||||
|
||||
@@ -863,34 +573,7 @@ typedef enum _SE_OBJECT_TYPE {
|
||||
} SE_OBJECT_TYPE;
|
||||
|
||||
|
||||
typedef struct _CLIENT_ID{
|
||||
HANDLE UniqueProcess;
|
||||
HANDLE UniqueThread;
|
||||
} CLIENT_ID, *PCLIENT_ID;
|
||||
|
||||
typedef struct _CLIENT_ID64{
|
||||
ULONG64 UniqueProcess;
|
||||
ULONG64 UniqueThread;
|
||||
} CLIENT_ID64, *PCLIENT_ID64;
|
||||
|
||||
typedef struct _CLIENT_ID32{
|
||||
ULONG UniqueProcess;
|
||||
ULONG UniqueThread;
|
||||
} CLIENT_ID32, *PCLIENT_ID32;
|
||||
|
||||
typedef struct _LDR_DATA_TABLE_ENTRY {
|
||||
PVOID Reserved1[2];
|
||||
LIST_ENTRY InMemoryOrderLinks;
|
||||
PVOID Reserved2[2];
|
||||
PVOID DllBase;
|
||||
PVOID EntryPoint;
|
||||
PVOID SizeOfImage;
|
||||
UNICODE_STRING FullDllName;
|
||||
UNICODE_STRING BaseDllName;
|
||||
PVOID Reserved5[3];
|
||||
ULONG CheckSum;
|
||||
ULONG TimeDateStamp;
|
||||
} LDR_DATA_TABLE_ENTRY, *PLDR_DATA_TABLE_ENTRY;
|
||||
|
||||
|
||||
typedef struct _MEMORY_BASIC_INFORMATION {
|
||||
@@ -1054,232 +737,7 @@ typedef struct _PROCESS_INFORMATION {
|
||||
} PROCESS_INFORMATION, *PPROCESS_INFORMATION, *LPPROCESS_INFORMATION;
|
||||
|
||||
|
||||
typedef struct _FLOATING_SAVE_AREA {
|
||||
DWORD ControlWord;
|
||||
DWORD StatusWord;
|
||||
DWORD TagWord;
|
||||
DWORD ErrorOffset;
|
||||
DWORD ErrorSelector;
|
||||
DWORD DataOffset;
|
||||
DWORD DataSelector;
|
||||
BYTE RegisterArea[80];
|
||||
DWORD Cr0NpxState;
|
||||
} FLOATING_SAVE_AREA;
|
||||
|
||||
typedef struct _CONTEXT32 {
|
||||
|
||||
DWORD ContextFlags;
|
||||
|
||||
DWORD Dr0;
|
||||
DWORD Dr1;
|
||||
DWORD Dr2;
|
||||
DWORD Dr3;
|
||||
DWORD Dr6;
|
||||
DWORD Dr7;
|
||||
|
||||
FLOATING_SAVE_AREA FloatSave;
|
||||
|
||||
DWORD SegGs;
|
||||
DWORD SegFs;
|
||||
DWORD SegEs;
|
||||
DWORD SegDs;
|
||||
|
||||
DWORD Edi;
|
||||
DWORD Esi;
|
||||
DWORD Ebx;
|
||||
DWORD Edx;
|
||||
DWORD Ecx;
|
||||
DWORD Eax;
|
||||
|
||||
DWORD Ebp;
|
||||
DWORD Eip;
|
||||
DWORD SegCs;
|
||||
DWORD EFlags;
|
||||
DWORD Esp;
|
||||
DWORD SegSs;
|
||||
|
||||
BYTE ExtendedRegisters[512];
|
||||
|
||||
} CONTEXT32, *PCONTEXT32, *LPCONTEXT32;
|
||||
|
||||
typedef struct _WOW64_FLOATING_SAVE_AREA {
|
||||
DWORD ControlWord;
|
||||
DWORD StatusWord;
|
||||
DWORD TagWord;
|
||||
DWORD ErrorOffset;
|
||||
DWORD ErrorSelector;
|
||||
DWORD DataOffset;
|
||||
DWORD DataSelector;
|
||||
BYTE RegisterArea[WOW64_SIZE_OF_80387_REGISTERS];
|
||||
DWORD Cr0NpxState;
|
||||
} WOW64_FLOATING_SAVE_AREA;
|
||||
|
||||
typedef struct _WOW64_CONTEXT {
|
||||
|
||||
DWORD ContextFlags;
|
||||
|
||||
DWORD Dr0;
|
||||
DWORD Dr1;
|
||||
DWORD Dr2;
|
||||
DWORD Dr3;
|
||||
DWORD Dr6;
|
||||
DWORD Dr7;
|
||||
|
||||
WOW64_FLOATING_SAVE_AREA FloatSave;
|
||||
|
||||
DWORD SegGs;
|
||||
DWORD SegFs;
|
||||
DWORD SegEs;
|
||||
DWORD SegDs;
|
||||
|
||||
DWORD Edi;
|
||||
DWORD Esi;
|
||||
DWORD Ebx;
|
||||
DWORD Edx;
|
||||
DWORD Ecx;
|
||||
DWORD Eax;
|
||||
DWORD Ebp;
|
||||
DWORD Eip;
|
||||
DWORD SegCs;
|
||||
DWORD EFlags;
|
||||
DWORD Esp;
|
||||
DWORD SegSs;
|
||||
|
||||
BYTE ExtendedRegisters[WOW64_MAXIMUM_SUPPORTED_EXTENSION];
|
||||
|
||||
} WOW64_CONTEXT, *PWOW64_CONTEXT;
|
||||
|
||||
|
||||
typedef struct _M128A {
|
||||
ULONGLONG Low;
|
||||
LONGLONG High;
|
||||
} M128A, *PM128A;
|
||||
|
||||
typedef struct _XSAVE_FORMAT_64 {
|
||||
WORD ControlWord;
|
||||
WORD StatusWord;
|
||||
BYTE TagWord;
|
||||
BYTE Reserved1;
|
||||
WORD ErrorOpcode;
|
||||
DWORD ErrorOffset;
|
||||
WORD ErrorSelector;
|
||||
WORD Reserved2;
|
||||
DWORD DataOffset;
|
||||
WORD DataSelector;
|
||||
WORD Reserved3;
|
||||
DWORD MxCsr;
|
||||
DWORD MxCsr_Mask;
|
||||
M128A FloatRegisters[8];
|
||||
M128A XmmRegisters[16];
|
||||
BYTE Reserved4[96];
|
||||
} XSAVE_FORMAT_64, *PXSAVE_FORMAT_64;
|
||||
|
||||
typedef struct _XSAVE_FORMAT_32 {
|
||||
WORD ControlWord;
|
||||
WORD StatusWord;
|
||||
BYTE TagWord;
|
||||
BYTE Reserved1;
|
||||
WORD ErrorOpcode;
|
||||
DWORD ErrorOffset;
|
||||
WORD ErrorSelector;
|
||||
WORD Reserved2;
|
||||
DWORD DataOffset;
|
||||
WORD DataSelector;
|
||||
WORD Reserved3;
|
||||
DWORD MxCsr;
|
||||
DWORD MxCsr_Mask;
|
||||
M128A FloatRegisters[8];
|
||||
M128A XmmRegisters[8];
|
||||
BYTE Reserved4[192];
|
||||
DWORD StackControl[7];
|
||||
DWORD Cr0NpxState;
|
||||
} XSAVE_FORMAT_32, *PXSAVE_FORMAT_32;
|
||||
|
||||
typedef struct _TMP_DUMMYSTRUCTNAME {
|
||||
M128A Header[2];
|
||||
M128A Legacy[8];
|
||||
M128A Xmm0;
|
||||
M128A Xmm1;
|
||||
M128A Xmm2;
|
||||
M128A Xmm3;
|
||||
M128A Xmm4;
|
||||
M128A Xmm5;
|
||||
M128A Xmm6;
|
||||
M128A Xmm7;
|
||||
M128A Xmm8;
|
||||
M128A Xmm9;
|
||||
M128A Xmm10;
|
||||
M128A Xmm11;
|
||||
M128A Xmm12;
|
||||
M128A Xmm13;
|
||||
M128A Xmm14;
|
||||
M128A Xmm15;
|
||||
} TMP_DUMMYSTRUCTNAME;
|
||||
|
||||
|
||||
typedef union _TMP_CONTEXT64_SUBUNION {
|
||||
XSAVE_FORMAT_64 FltSave;
|
||||
TMP_DUMMYSTRUCTNAME DUMMYSTRUCTNAME;
|
||||
} TMP_CONTEXT64_SUBUNION;
|
||||
|
||||
typedef struct _CONTEXT64 {
|
||||
|
||||
DWORD64 P1Home;
|
||||
DWORD64 P2Home;
|
||||
DWORD64 P3Home;
|
||||
DWORD64 P4Home;
|
||||
DWORD64 P5Home;
|
||||
DWORD64 P6Home;
|
||||
|
||||
DWORD ContextFlags;
|
||||
DWORD MxCsr;
|
||||
|
||||
WORD SegCs;
|
||||
WORD SegDs;
|
||||
WORD SegEs;
|
||||
WORD SegFs;
|
||||
WORD SegGs;
|
||||
WORD SegSs;
|
||||
DWORD EFlags;
|
||||
|
||||
DWORD64 Dr0;
|
||||
DWORD64 Dr1;
|
||||
DWORD64 Dr2;
|
||||
DWORD64 Dr3;
|
||||
DWORD64 Dr6;
|
||||
DWORD64 Dr7;
|
||||
|
||||
|
||||
DWORD64 Rax;
|
||||
DWORD64 Rcx;
|
||||
DWORD64 Rdx;
|
||||
DWORD64 Rbx;
|
||||
DWORD64 Rsp;
|
||||
DWORD64 Rbp;
|
||||
DWORD64 Rsi;
|
||||
DWORD64 Rdi;
|
||||
DWORD64 R8;
|
||||
DWORD64 R9;
|
||||
DWORD64 R10;
|
||||
DWORD64 R11;
|
||||
DWORD64 R12;
|
||||
DWORD64 R13;
|
||||
DWORD64 R14;
|
||||
DWORD64 R15;
|
||||
|
||||
DWORD64 Rip;
|
||||
|
||||
TMP_CONTEXT64_SUBUNION DUMMYUNIONNAME;
|
||||
|
||||
M128A VectorRegister[26];
|
||||
DWORD64 VectorControl;
|
||||
|
||||
DWORD64 DebugControl;
|
||||
DWORD64 LastBranchToRip;
|
||||
DWORD64 LastBranchFromRip;
|
||||
DWORD64 LastExceptionToRip;
|
||||
DWORD64 LastExceptionFromRip;
|
||||
} CONTEXT64, *PCONTEXT64, *LPCONTEXT64;
|
||||
|
||||
|
||||
typedef struct tagPROCESSENTRY32W
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
# From: ctypes_generation\extended_structs\_LIST_ENTRY.py
|
||||
# _LIST_ENTRY is a self referencing structure
|
||||
# Currently ctypes generation does not support extending self referencing structures
|
||||
# Ass the _fields_ assignement should happen after the extended structure definition
|
||||
# So we just redefine fully _LIST_ENTRY without inheriting the real one
|
||||
|
||||
class _LIST_ENTRY(Structure):
|
||||
def get_real_struct(self, targetcls, target_field):
|
||||
# >>> gdef.LDR_DATA_TABLE_ENTRY.InMemoryOrderLinks
|
||||
# <Field type=_LIST_ENTRY, ofs=16, size=16>
|
||||
# This field object does not allow to retrieve the type..
|
||||
# So we need to basse the target class AND the target field..
|
||||
return targetcls.from_address(ctypes.addressof(self) - target_field.offset)
|
||||
|
||||
_LIST_ENTRY._fields_ = [
|
||||
("Flink", POINTER(_LIST_ENTRY)),
|
||||
("Blink", POINTER(_LIST_ENTRY)),
|
||||
]
|
||||
@@ -123,8 +123,9 @@ 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 += ["""class {0}(Structure):""".format(self.name)]
|
||||
# We need some code in the def of anon is empty -> insert path
|
||||
res += [self.generate_anonymous_union() or " pass"]
|
||||
res += [self.generate_typedef_ctypes()]
|
||||
|
||||
if self.pack:
|
||||
|
||||
Vendored
+1
-1
@@ -1,4 +1,4 @@
|
||||
# Sphinx build info version 1
|
||||
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
|
||||
config: 01121266b90a8b5351869d0cc2981bae
|
||||
config: 0e250b469303f551736a785b66f0d36c
|
||||
tags: 645f666f9bcd5a90fca523b33c5a78b7
|
||||
|
||||
Vendored
+4
-4
@@ -4,12 +4,12 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Overview: module code — PythonForWindows 1.0.1 documentation</title>
|
||||
<title>Overview: module code — PythonForWindows 1.0.4 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="../_static/documentation_options.js?v=292eb321"></script>
|
||||
<script src="../_static/documentation_options.js?v=71272d9f"></script>
|
||||
<script src="../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<li class="right" >
|
||||
<a href="../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../index.html">PythonForWindows 1.0.1 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../index.html">PythonForWindows 1.0.4 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">Overview: module code</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -115,7 +115,7 @@
|
||||
<li class="right" >
|
||||
<a href="../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../index.html">PythonForWindows 1.0.1 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../index.html">PythonForWindows 1.0.4 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">Overview: module code</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
+8
-4
@@ -4,12 +4,12 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>windows.alpc — PythonForWindows 1.0.0 documentation</title>
|
||||
<title>windows.alpc — PythonForWindows 1.0.3 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="../../_static/documentation_options.js?v=8d563738"></script>
|
||||
<script src="../../_static/documentation_options.js?v=baaebd52"></script>
|
||||
<script src="../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 1.0.3 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.alpc</a></li>
|
||||
</ul>
|
||||
@@ -505,6 +505,8 @@
|
||||
<span class="k">def</span> <span class="nf">disconnect</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_close_port</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">handle</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="fm">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">sys</span><span class="o">.</span><span class="n">path</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
@@ -608,8 +610,10 @@
|
||||
<span class="k">def</span> <span class="nf">disconnect</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_close_port</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">handle</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="k">for</span> <span class="n">com_port_handle</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">communication_port_list</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_close_port</span><span class="p">(</span><span class="n">com_port_handle</span><span class="p">)</span>
|
||||
<span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">communication_port_list</span><span class="p">[:]</span>
|
||||
|
||||
<span class="c1"># TODO: add an API to close a communication port ?</span>
|
||||
|
||||
@@ -648,7 +652,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 1.0.3 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../index.html" >Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.alpc</a></li>
|
||||
</ul>
|
||||
|
||||
+11
-5
@@ -4,12 +4,12 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>windows.com — PythonForWindows 1.0.0 documentation</title>
|
||||
<title>windows.com — PythonForWindows 1.0.3 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="../../_static/documentation_options.js?v=8d563738"></script>
|
||||
<script src="../../_static/documentation_options.js?v=baaebd52"></script>
|
||||
<script src="../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 1.0.3 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.com</a></li>
|
||||
</ul>
|
||||
@@ -75,7 +75,13 @@
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">initsecurity</span><span class="p">():</span> <span class="c1"># Should take some parameters..</span>
|
||||
<span class="k">return</span> <span class="n">winproxy</span><span class="o">.</span><span class="n">CoInitializeSecurity</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">RPC_C_IMP_LEVEL_IMPERSONATE</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">)</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">winproxy</span><span class="o">.</span><span class="n">CoInitializeSecurity</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">RPC_C_IMP_LEVEL_IMPERSONATE</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">OSError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">e</span><span class="o">.</span><span class="n">winerror</span> <span class="o">&</span> <span class="mh">0xFFFFFFFF</span> <span class="o">!=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">RPC_E_TOO_LATE</span><span class="p">:</span>
|
||||
<span class="c1"># RPC_E_TOO_LATE can happen when the python environment invokes CoInitializeSecurity before we get to it</span>
|
||||
<span class="c1"># mspython builds do this consistently.</span>
|
||||
<span class="k">raise</span> <span class="n">e</span>
|
||||
|
||||
|
||||
<span class="k">class</span> <span class="nc">Dispatch</span><span class="p">(</span><span class="n">interfaces</span><span class="o">.</span><span class="n">IDispatch</span><span class="p">):</span>
|
||||
@@ -489,7 +495,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 1.0.3 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../index.html" >Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.com</a></li>
|
||||
</ul>
|
||||
|
||||
+39
-7
@@ -4,12 +4,12 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>windows.crypto.certificate — PythonForWindows 1.0.0 documentation</title>
|
||||
<title>windows.crypto.certificate — PythonForWindows 1.0.4 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="../../../_static/documentation_options.js?v=8d563738"></script>
|
||||
<script src="../../../_static/documentation_options.js?v=71272d9f"></script>
|
||||
<script src="../../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.4 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.crypto.certificate</a></li>
|
||||
</ul>
|
||||
@@ -45,7 +45,7 @@
|
||||
<span class="kn">import</span> <span class="nn">windows.generated_def</span> <span class="k">as</span> <span class="nn">gdef</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">windows.crypto</span> <span class="kn">import</span> <span class="n">DEFAULT_ENCODING</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.pycompat</span> <span class="kn">import</span> <span class="n">urepr_encode</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.pycompat</span> <span class="kn">import</span> <span class="n">urepr_encode</span><span class="p">,</span> <span class="n">unicode_type</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">windows.crypto.cryptmsg</span>
|
||||
|
||||
@@ -99,7 +99,8 @@
|
||||
<span class="n">gdef</span><span class="o">.</span><span class="n">LPWSTR</span><span class="p">(</span><span class="n">filename</span><span class="p">),</span>
|
||||
<span class="c1"># filename,</span>
|
||||
<span class="n">content_type</span><span class="p">,</span>
|
||||
<span class="n">gdef</span><span class="o">.</span><span class="n">CERT_QUERY_FORMAT_FLAG_BINARY</span><span class="p">,</span>
|
||||
<span class="c1"># gdef.CERT_QUERY_FORMAT_FLAG_BINARY,</span>
|
||||
<span class="n">gdef</span><span class="o">.</span><span class="n">CERT_QUERY_FORMAT_FLAG_ALL</span><span class="p">,</span>
|
||||
<span class="mi">0</span><span class="p">,</span>
|
||||
<span class="n">dwEncoding</span><span class="p">,</span>
|
||||
<span class="n">dwContentType</span><span class="p">,</span>
|
||||
@@ -201,7 +202,22 @@
|
||||
<span class="w"> </span><span class="sd">"""Create a new :class:`CertificateStore` from system store ``store_name``</span>
|
||||
<span class="sd"> (see `System Store Locations <https://msdn.microsoft.com/en-us/library/windows/desktop/aa388136(v=vs.85).aspx>`_)</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">res</span> <span class="o">=</span> <span class="n">winproxy</span><span class="o">.</span><span class="n">CertOpenStore</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">CERT_STORE_PROV_SYSTEM_A</span><span class="p">,</span> <span class="n">DEFAULT_ENCODING</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">CERT_SYSTEM_STORE_LOCAL_MACHINE</span> <span class="o">|</span> <span class="n">gdef</span><span class="o">.</span><span class="n">CERT_STORE_READONLY_FLAG</span><span class="p">,</span> <span class="n">store_name</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">store_name</span><span class="p">,</span> <span class="n">unicode_type</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"store_name should be an unicode string not </span><span class="si">{0}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="n">store_name</span><span class="p">)))</span>
|
||||
<span class="n">res</span> <span class="o">=</span> <span class="n">winproxy</span><span class="o">.</span><span class="n">CertOpenStore</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">CERT_STORE_PROV_SYSTEM_W</span><span class="p">,</span> <span class="n">DEFAULT_ENCODING</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">CERT_SYSTEM_STORE_LOCAL_MACHINE</span> <span class="o">|</span> <span class="n">gdef</span><span class="o">.</span><span class="n">CERT_STORE_READONLY_FLAG</span><span class="p">,</span> <span class="n">store_name</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">res</span><span class="p">,</span> <span class="bp">cls</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="CertificateStore.from_user_store">
|
||||
<a class="viewcode-back" href="../../../crypto.html#windows.crypto.CertificateStore.from_user_store">[docs]</a>
|
||||
<span class="nd">@classmethod</span>
|
||||
<span class="k">def</span> <span class="nf">from_user_store</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">store_name</span><span class="p">,</span> <span class="n">user</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Create a new :class:`CertificateStore` from system store ``store_name``</span>
|
||||
<span class="sd"> (see `System Store Locations <https://msdn.microsoft.com/en-us/library/windows/desktop/aa388136(v=vs.85).aspx>`_)</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">store_name</span><span class="p">,</span> <span class="n">unicode_type</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"store_name should be an unicode string not </span><span class="si">{0}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="n">store_name</span><span class="p">)))</span>
|
||||
<span class="n">res</span> <span class="o">=</span> <span class="n">winproxy</span><span class="o">.</span><span class="n">CertOpenStore</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">CERT_STORE_PROV_SYSTEM_W</span><span class="p">,</span> <span class="n">DEFAULT_ENCODING</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">CERT_SYSTEM_STORE_CURRENT_USER</span> <span class="o">|</span> <span class="n">gdef</span><span class="o">.</span><span class="n">CERT_STORE_READONLY_FLAG</span><span class="p">,</span> <span class="n">store_name</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">res</span><span class="p">,</span> <span class="bp">cls</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
@@ -508,6 +524,22 @@
|
||||
<span class="k">return</span> <span class="nb">bytearray</span><span class="p">(</span><span class="n">buf</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="Certificate.get_private_key">
|
||||
<a class="viewcode-back" href="../../../crypto.html#windows.crypto.Certificate.get_private_key">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">get_private_key</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">flags</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Tmp API: return value will change"""</span>
|
||||
<span class="n">keyhandle</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">HCRYPTPROV_OR_NCRYPT_KEY_HANDLE</span><span class="p">()</span>
|
||||
<span class="n">keyspec</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">DWORD</span><span class="p">()</span>
|
||||
<span class="n">must_free_handle</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">BOOL</span><span class="p">()</span>
|
||||
<span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">CryptAcquireCertificatePrivateKey</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">flags</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="n">keyhandle</span><span class="p">,</span> <span class="n">keyspec</span><span class="p">,</span> <span class="n">must_free_handle</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="p">(</span><span class="n">keyhandle</span><span class="p">,</span> <span class="n">keyspec</span><span class="p">,</span> <span class="n">must_free_handle</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">private_key</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Tmp API: return value will change"""</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_private_key</span><span class="p">(</span><span class="n">flags</span><span class="o">=</span><span class="n">gdef</span><span class="o">.</span><span class="n">CRYPT_ACQUIRE_COMPARE_KEY_FLAG</span> <span class="o">|</span> <span class="n">gdef</span><span class="o">.</span><span class="n">CRYPT_ACQUIRE_ALLOW_NCRYPT_KEY_FLAG</span> <span class="o">|</span> <span class="n">gdef</span><span class="o">.</span><span class="n">CRYPT_ACQUIRE_USE_PROV_INFO_FLAG</span><span class="p">)</span>
|
||||
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">encoded</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
@@ -697,7 +729,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.4 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.crypto.certificate</a></li>
|
||||
</ul>
|
||||
|
||||
+9
-5
@@ -4,12 +4,12 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>windows.crypto.cryptmsg — PythonForWindows 1.0.0 documentation</title>
|
||||
<title>windows.crypto.cryptmsg — PythonForWindows 1.0.4 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="../../../_static/documentation_options.js?v=8d563738"></script>
|
||||
<script src="../../../_static/documentation_options.js?v=71272d9f"></script>
|
||||
<script src="../../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.4 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.crypto.cryptmsg</a></li>
|
||||
</ul>
|
||||
@@ -156,10 +156,14 @@
|
||||
<span class="k">def</span> <span class="nf">content</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_param</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">CMSG_CONTENT_PARAM</span><span class="p">)[:]</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">bare_content</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_param</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">CMSG_BARE_CONTENT_PARAM</span><span class="p">)[:]</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">content_type</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="n">data</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_param</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">CMSG_INNER_CONTENT_TYPE_PARAM</span><span class="p">)</span>
|
||||
<span class="k">assert</span> <span class="n">data</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="s2">"</span><span class="se">\x00</span><span class="s2">"</span><span class="p">,</span> <span class="s2">"CMSG_INNER_CONTENT_TYPE_PARAM not NULL TERMINATED"</span>
|
||||
<span class="k">assert</span> <span class="n">data</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="sa">b</span><span class="s2">"</span><span class="se">\x00</span><span class="s2">"</span><span class="p">,</span> <span class="s2">"CMSG_INNER_CONTENT_TYPE_PARAM not NULL TERMINATED"</span>
|
||||
<span class="k">return</span> <span class="n">data</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
|
||||
|
||||
|
||||
@@ -216,7 +220,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.4 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.crypto.cryptmsg</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -4,12 +4,12 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>windows.crypto.encrypt_decrypt — PythonForWindows 1.0.0 documentation</title>
|
||||
<title>windows.crypto.encrypt_decrypt — PythonForWindows 1.0.2 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="../../../_static/documentation_options.js?v=8d563738"></script>
|
||||
<script src="../../../_static/documentation_options.js?v=1ed6394b"></script>
|
||||
<script src="../../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.2 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.crypto.encrypt_decrypt</a></li>
|
||||
</ul>
|
||||
@@ -193,7 +193,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.2 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.crypto.encrypt_decrypt</a></li>
|
||||
</ul>
|
||||
|
||||
+4
-4
@@ -4,12 +4,12 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>windows.crypto.generation — PythonForWindows 1.0.0 documentation</title>
|
||||
<title>windows.crypto.generation — PythonForWindows 1.0.2 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="../../../_static/documentation_options.js?v=8d563738"></script>
|
||||
<script src="../../../_static/documentation_options.js?v=1ed6394b"></script>
|
||||
<script src="../../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.2 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.crypto.generation</a></li>
|
||||
</ul>
|
||||
@@ -130,7 +130,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.2 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.crypto.generation</a></li>
|
||||
</ul>
|
||||
|
||||
+9
-15
@@ -4,12 +4,12 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>windows.debug.breakpoints — PythonForWindows 1.0.0 documentation</title>
|
||||
<title>windows.debug.breakpoints — PythonForWindows 1.0.3 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="../../../_static/documentation_options.js?v=8d563738"></script>
|
||||
<script src="../../../_static/documentation_options.js?v=baaebd52"></script>
|
||||
<script src="../../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.3 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.debug.breakpoints</a></li>
|
||||
</ul>
|
||||
@@ -190,17 +190,11 @@
|
||||
<span class="n">t</span> <span class="o">=</span> <span class="n">rt</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">cproc</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">t</span> <span class="o">=</span> <span class="n">rt</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
||||
|
||||
<span class="n">content</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">content</span> <span class="o">=</span> <span class="n">t</span><span class="o">.</span><span class="n">contents</span>
|
||||
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
||||
<span class="c1"># contents will fail on basic type</span>
|
||||
<span class="c1"># Not really an expected behavior</span>
|
||||
<span class="c1"># But it works for now.. (and since a while)</span>
|
||||
<span class="k">pass</span>
|
||||
<span class="k">if</span> <span class="n">content</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">t</span> <span class="o">=</span> <span class="n">t</span><span class="o">.</span><span class="n">value</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">t</span><span class="p">,</span> <span class="s2">"contents"</span><span class="p">):</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">t</span> <span class="o">=</span> <span class="n">t</span><span class="o">.</span><span class="n">value</span>
|
||||
<span class="k">except</span> <span class="ne">AttributeError</span><span class="p">:</span>
|
||||
<span class="k">pass</span>
|
||||
<span class="n">res</span><span class="p">[</span><span class="n">name</span><span class="p">[</span><span class="mi">1</span><span class="p">]]</span> <span class="o">=</span> <span class="n">t</span>
|
||||
<span class="k">return</span> <span class="n">res</span>
|
||||
|
||||
@@ -365,7 +359,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.3 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.debug.breakpoints</a></li>
|
||||
</ul>
|
||||
|
||||
+23
-8
@@ -4,12 +4,12 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>windows.debug.debugger — PythonForWindows 1.0.0 documentation</title>
|
||||
<title>windows.debug.debugger — PythonForWindows 1.0.4 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="../../../_static/documentation_options.js?v=8d563738"></script>
|
||||
<script src="../../../_static/documentation_options.js?v=71272d9f"></script>
|
||||
<script src="../../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.4 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.debug.debugger</a></li>
|
||||
</ul>
|
||||
@@ -475,8 +475,9 @@
|
||||
<span class="k">return</span> <span class="kc">True</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_restore_breakpoint_MEMBP</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bp</span><span class="p">,</span> <span class="n">target</span><span class="p">):</span>
|
||||
<span class="p">(</span><span class="n">page_addr</span><span class="p">,</span> <span class="n">page_prot</span><span class="p">)</span> <span class="o">=</span> <span class="n">bp</span><span class="o">.</span><span class="n">_reput_page</span>
|
||||
<span class="k">return</span> <span class="n">target</span><span class="o">.</span><span class="n">virtual_protect</span><span class="p">(</span><span class="n">page_addr</span><span class="p">,</span> <span class="n">PAGE_SIZE</span><span class="p">,</span> <span class="n">page_prot</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="p">(</span><span class="n">page_addr</span><span class="p">,</span> <span class="n">page_prot</span><span class="p">)</span> <span class="ow">in</span> <span class="n">bp</span><span class="o">.</span><span class="n">_reput_pages</span><span class="p">:</span>
|
||||
<span class="n">target</span><span class="o">.</span><span class="n">virtual_protect</span><span class="p">(</span><span class="n">page_addr</span><span class="p">,</span> <span class="n">PAGE_SIZE</span><span class="p">,</span> <span class="n">page_prot</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
||||
<span class="k">del</span> <span class="n">bp</span><span class="o">.</span><span class="n">_reput_pages</span><span class="p">[:]</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">_remove_breakpoint_MEMBP</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bp</span><span class="p">,</span> <span class="n">target</span><span class="p">):</span>
|
||||
@@ -595,7 +596,7 @@
|
||||
<span class="n">ctx</span> <span class="o">=</span> <span class="n">thread</span><span class="o">.</span><span class="n">context</span>
|
||||
<span class="n">ctx</span><span class="o">.</span><span class="n">EEFlags</span><span class="o">.</span><span class="n">TF</span> <span class="o">=</span> <span class="mi">1</span>
|
||||
<span class="n">thread</span><span class="o">.</span><span class="n">set_context</span><span class="p">(</span><span class="n">ctx</span><span class="p">)</span>
|
||||
<span class="n">bp</span><span class="o">.</span><span class="n">_reput_page</span> <span class="o">=</span> <span class="p">(</span><span class="n">fault_page</span><span class="p">,</span> <span class="n">page_prot</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
|
||||
<span class="n">bp</span><span class="o">.</span><span class="n">_reput_pages</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">fault_page</span><span class="p">,</span> <span class="n">page_prot</span><span class="o">.</span><span class="n">value</span><span class="p">))</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_breakpoint_to_reput</span><span class="p">[</span><span class="n">cp</span><span class="o">.</span><span class="n">pid</span><span class="p">]</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">bp</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># debug event handlers</span>
|
||||
@@ -718,6 +719,7 @@
|
||||
<span class="n">fault_type</span> <span class="o">=</span> <span class="n">exception</span><span class="o">.</span><span class="n">ExceptionRecord</span><span class="o">.</span><span class="n">ExceptionInformation</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="n">fault_addr</span> <span class="o">=</span> <span class="n">exception</span><span class="o">.</span><span class="n">ExceptionRecord</span><span class="o">.</span><span class="n">ExceptionInformation</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
|
||||
<span class="n">pc_addr</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">current_thread</span><span class="o">.</span><span class="n">context</span><span class="o">.</span><span class="n">pc</span>
|
||||
<span class="n">dbgprint</span><span class="p">(</span><span class="s2">"Handling access_violation at pc=</span><span class="si">{0:#x}</span><span class="s2"> addr=</span><span class="si">{1:#x}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">pc_addr</span><span class="p">,</span> <span class="n">fault_addr</span><span class="p">),</span> <span class="s2">"DBG"</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">fault_addr</span> <span class="o">==</span> <span class="n">pc_addr</span><span class="p">:</span>
|
||||
<span class="n">fault_type</span> <span class="o">=</span> <span class="n">EXEC</span>
|
||||
<span class="n">event</span> <span class="o">=</span> <span class="n">EVENT_STR</span><span class="p">[</span><span class="n">fault_type</span><span class="p">]</span>
|
||||
@@ -736,11 +738,24 @@
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_pass_memory_breakpoint</span><span class="p">(</span><span class="n">bp</span><span class="p">,</span> <span class="n">original_prot</span><span class="p">,</span> <span class="n">fault_page</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">DBG_CONTINUE</span>
|
||||
|
||||
<span class="c1"># We may have setup the "EEFlags.TF" ourself if the membreakpoint triggered twice on the same instruction</span>
|
||||
<span class="c1"># Ex: write on two pages handled by our breakpoint (unaligned write on 0xfff-0x1000)</span>
|
||||
|
||||
<span class="n">originalctx</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">current_thread</span><span class="o">.</span><span class="n">context</span>
|
||||
<span class="n">original_tf</span> <span class="o">=</span> <span class="n">originalctx</span><span class="o">.</span><span class="n">EEFlags</span><span class="o">.</span><span class="n">TF</span>
|
||||
<span class="c1"># Temporary disable EEFlags.TF to see if user callback explicit ask for it</span>
|
||||
<span class="n">originalctx</span><span class="o">.</span><span class="n">EEFlags</span><span class="o">.</span><span class="n">TF</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">current_thread</span><span class="o">.</span><span class="n">set_context</span><span class="p">(</span><span class="n">originalctx</span><span class="p">)</span>
|
||||
|
||||
<span class="k">with</span> <span class="bp">self</span><span class="o">.</span><span class="n">DisabledMemoryBreakpoint</span><span class="p">():</span>
|
||||
<span class="n">continue_flag</span> <span class="o">=</span> <span class="n">mem_bp</span><span class="o">.</span><span class="n">trigger</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exception</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_killed_in_action</span><span class="p">():</span>
|
||||
<span class="k">return</span> <span class="n">continue_flag</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_explicit_single_step</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">current_thread</span><span class="o">.</span><span class="n">tid</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">current_thread</span><span class="o">.</span><span class="n">context</span><span class="o">.</span><span class="n">EEFlags</span><span class="o">.</span><span class="n">TF</span>
|
||||
<span class="c1"># Update explicit trigger based on new value of EEFlags.TF</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_explicit_single_step</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">current_thread</span><span class="o">.</span><span class="n">tid</span><span class="p">]</span> <span class="o">|=</span> <span class="bp">self</span><span class="o">.</span><span class="n">current_thread</span><span class="o">.</span><span class="n">context</span><span class="o">.</span><span class="n">EEFlags</span><span class="o">.</span><span class="n">TF</span>
|
||||
<span class="c1"># Reupdate the real EEFlags.TF based on its current value and the original one</span>
|
||||
<span class="k">if</span> <span class="n">original_tf</span> <span class="o">!=</span> <span class="mi">0</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">current_thread</span><span class="o">.</span><span class="n">context</span><span class="o">.</span><span class="n">EEFlags</span><span class="o">.</span><span class="n">TF</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">single_step</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_explicit_single_step</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">current_thread</span><span class="o">.</span><span class="n">tid</span><span class="p">]:</span>
|
||||
<span class="n">dbgprint</span><span class="p">(</span><span class="s2">"Someone ask for an explicit Single step - 5"</span><span class="p">,</span> <span class="s2">"DBG"</span><span class="p">)</span>
|
||||
<span class="c1"># If BP has not been removed in trigger, pas it</span>
|
||||
@@ -1300,7 +1315,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.4 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.debug.debugger</a></li>
|
||||
</ul>
|
||||
|
||||
+4
-4
@@ -4,12 +4,12 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>windows.debug.localdbg — PythonForWindows 1.0.0 documentation</title>
|
||||
<title>windows.debug.localdbg — PythonForWindows 1.0.2 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="../../../_static/documentation_options.js?v=8d563738"></script>
|
||||
<script src="../../../_static/documentation_options.js?v=1ed6394b"></script>
|
||||
<script src="../../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.2 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.debug.localdbg</a></li>
|
||||
</ul>
|
||||
@@ -394,7 +394,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.2 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.debug.localdbg</a></li>
|
||||
</ul>
|
||||
|
||||
+4
-4
@@ -4,12 +4,12 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>windows.debug.symboldbg — PythonForWindows 1.0.0 documentation</title>
|
||||
<title>windows.debug.symboldbg — PythonForWindows 1.0.2 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="../../../_static/documentation_options.js?v=8d563738"></script>
|
||||
<script src="../../../_static/documentation_options.js?v=1ed6394b"></script>
|
||||
<script src="../../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.2 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.debug.symboldbg</a></li>
|
||||
</ul>
|
||||
@@ -119,7 +119,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.2 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.debug.symboldbg</a></li>
|
||||
</ul>
|
||||
|
||||
+13
-9
@@ -4,12 +4,12 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>windows.debug.symbols — PythonForWindows 1.0.0 documentation</title>
|
||||
<title>windows.debug.symbols — PythonForWindows 1.0.3 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="../../../_static/documentation_options.js?v=8d563738"></script>
|
||||
<script src="../../../_static/documentation_options.js?v=baaebd52"></script>
|
||||
<script src="../../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.3 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.debug.symbols</a></li>
|
||||
</ul>
|
||||
@@ -54,7 +54,7 @@
|
||||
<div class="viewcode-block" id="set_dbghelp_path">
|
||||
<a class="viewcode-back" href="../../../debug.html#windows.debug.symbols.set_dbghelp_path">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">set_dbghelp_path</span><span class="p">(</span><span class="n">path</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Set the path of the ``dbghelp.dll`` file to use. It allow to configure a different version of the DLL handling PDB downloading.</span>
|
||||
<span class="w"> </span><span class="sa">r</span><span class="sd">"""Set the path of the ``dbghelp.dll`` file to use. It allow to configure a different version of the DLL handling PDB downloading.</span>
|
||||
|
||||
<span class="sd"> If ``path`` is a directory, the final ``dbghelp.dll`` will be computed as</span>
|
||||
<span class="sd"> ``path\<current_process_bitness>\dbghelp.dll``.</span>
|
||||
@@ -169,7 +169,7 @@
|
||||
|
||||
|
||||
<span class="k">class</span> <span class="nc">SymbolInfoW</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">SYMBOL_INFOW</span><span class="p">,</span> <span class="n">SymbolInfoBase</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Represent a Symbol.</span>
|
||||
<span class="w"> </span><span class="sa">r</span><span class="sd">"""Represent a Symbol.</span>
|
||||
<span class="sd"> This class in based on the class `SYMBOL_INFO <https://docs.microsoft.com/en-us/windows/win32/api/dbghelp/ns-dbghelp-symbol_info>`_</span>
|
||||
<span class="sd"> with the handling on displacement embeded into it.s</span>
|
||||
|
||||
@@ -222,6 +222,10 @@
|
||||
<span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">LocalFree</span><span class="p">(</span><span class="n">res</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">newres</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">module</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">resolver</span><span class="o">.</span><span class="n">get_module</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">modbase</span><span class="p">)</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_type_info</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">TI_GET_SYMNAME</span><span class="p">)</span>
|
||||
@@ -373,7 +377,7 @@
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">pdb</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""The local path of the loaded PDB if present</span>
|
||||
<span class="w"> </span><span class="sa">r</span><span class="sd">"""The local path of the loaded PDB if present</span>
|
||||
|
||||
<span class="sd"> Exemple:</span>
|
||||
<span class="sd"> >>> sh = windows.debug.symbols.VirtualSymbolHandler()</span>
|
||||
@@ -503,7 +507,7 @@
|
||||
<span class="k">return</span> <span class="n">sym</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">resolve</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name_or_addr</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Resolve ``name_or_addr``.</span>
|
||||
<span class="w"> </span><span class="sa">r</span><span class="sd">"""Resolve ``name_or_addr``.</span>
|
||||
|
||||
<span class="sd"> If its an int -> Return the :class:`SymbolInfo` at the address.</span>
|
||||
<span class="sd"> If its a string -> Return the :class:`SymbolInfo` corresponding to the symbol name</span>
|
||||
@@ -552,7 +556,7 @@
|
||||
<span class="k">return</span> <span class="kc">True</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">search</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">mask</span><span class="p">,</span> <span class="n">mod</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">tag</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">options</span><span class="o">=</span><span class="n">gdef</span><span class="o">.</span><span class="n">SYMSEARCH_ALLITEMS</span><span class="p">,</span> <span class="n">callback</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Search the symbols matching ``mask`` (``Windbg`` like).</span>
|
||||
<span class="w"> </span><span class="sa">r</span><span class="sd">"""Search the symbols matching ``mask`` (``Windbg`` like).</span>
|
||||
|
||||
<span class="sd"> :return: [:class:`SymbolInfo`] -- A list of :class:`SymbolInfo`</span>
|
||||
|
||||
@@ -863,7 +867,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.3 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.debug.symbols</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -4,12 +4,12 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>windows.generated_def.flag — PythonForWindows 1.0.0 documentation</title>
|
||||
<title>windows.generated_def.flag — PythonForWindows 1.0.3 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="../../../_static/documentation_options.js?v=8d563738"></script>
|
||||
<script src="../../../_static/documentation_options.js?v=baaebd52"></script>
|
||||
<script src="../../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.3 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.generated_def.flag</a></li>
|
||||
</ul>
|
||||
@@ -145,7 +145,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.3 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.generated_def.flag</a></li>
|
||||
</ul>
|
||||
|
||||
+25
-25
@@ -4,12 +4,12 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>windows.generated_def.interfaces — PythonForWindows 1.0.0 documentation</title>
|
||||
<title>windows.generated_def.interfaces — PythonForWindows 1.0.3 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="../../../_static/documentation_options.js?v=8d563738"></script>
|
||||
<script src="../../../_static/documentation_options.js?v=baaebd52"></script>
|
||||
<script src="../../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.3 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.generated_def.interfaces</a></li>
|
||||
</ul>
|
||||
@@ -117,12 +117,6 @@
|
||||
|
||||
|
||||
|
||||
<div class="viewcode-block" id="IActivationStageInfo">
|
||||
<a class="viewcode-back" href="../../../interfaces_generated.html#windows.generated_def.interfaces.IActivationStageInfo">[docs]</a>
|
||||
<span class="k">class</span> <span class="nc">IActivationStageInfo</span><span class="p">(</span><span class="n">COMInterface</span><span class="p">):</span>
|
||||
<span class="n">IID</span> <span class="o">=</span> <span class="n">generate_IID</span><span class="p">(</span><span class="mh">0x000001A8</span><span class="p">,</span> <span class="mh">0x0000</span><span class="p">,</span> <span class="mh">0x0000</span><span class="p">,</span> <span class="mh">0xC0</span><span class="p">,</span> <span class="mh">0x00</span><span class="p">,</span> <span class="mh">0x00</span><span class="p">,</span> <span class="mh">0x00</span><span class="p">,</span> <span class="mh">0x00</span><span class="p">,</span> <span class="mh">0x00</span><span class="p">,</span> <span class="mh">0x00</span><span class="p">,</span> <span class="mh">0x46</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s2">"IActivationStageInfo"</span><span class="p">,</span> <span class="n">strid</span><span class="o">=</span><span class="s2">"000001A8-0000-0000-C000-000000000046"</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="ICallFactory">
|
||||
<a class="viewcode-back" href="../../../interfaces_generated.html#windows.generated_def.interfaces.ICallFactory">[docs]</a>
|
||||
<span class="k">class</span> <span class="nc">ICallFactory</span><span class="p">(</span><span class="n">COMInterface</span><span class="p">):</span>
|
||||
@@ -405,6 +399,12 @@
|
||||
<span class="n">IID</span> <span class="o">=</span> <span class="n">generate_IID</span><span class="p">(</span><span class="mh">0x000001A2</span><span class="p">,</span> <span class="mh">0x0000</span><span class="p">,</span> <span class="mh">0x0000</span><span class="p">,</span> <span class="mh">0xC0</span><span class="p">,</span> <span class="mh">0x00</span><span class="p">,</span> <span class="mh">0x00</span><span class="p">,</span> <span class="mh">0x00</span><span class="p">,</span> <span class="mh">0x00</span><span class="p">,</span> <span class="mh">0x00</span><span class="p">,</span> <span class="mh">0x00</span><span class="p">,</span> <span class="mh">0x46</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s2">"IActivationPropertiesIn"</span><span class="p">,</span> <span class="n">strid</span><span class="o">=</span><span class="s2">"000001A2-0000-0000-C000-000000000046"</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="IActivationStageInfo">
|
||||
<a class="viewcode-back" href="../../../interfaces_generated.html#windows.generated_def.interfaces.IActivationStageInfo">[docs]</a>
|
||||
<span class="k">class</span> <span class="nc">IActivationStageInfo</span><span class="p">(</span><span class="n">COMInterface</span><span class="p">):</span>
|
||||
<span class="n">IID</span> <span class="o">=</span> <span class="n">generate_IID</span><span class="p">(</span><span class="mh">0x000001A8</span><span class="p">,</span> <span class="mh">0x0000</span><span class="p">,</span> <span class="mh">0x0000</span><span class="p">,</span> <span class="mh">0xC0</span><span class="p">,</span> <span class="mh">0x00</span><span class="p">,</span> <span class="mh">0x00</span><span class="p">,</span> <span class="mh">0x00</span><span class="p">,</span> <span class="mh">0x00</span><span class="p">,</span> <span class="mh">0x00</span><span class="p">,</span> <span class="mh">0x00</span><span class="p">,</span> <span class="mh">0x46</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s2">"IActivationStageInfo"</span><span class="p">,</span> <span class="n">strid</span><span class="o">=</span><span class="s2">"000001A8-0000-0000-C000-000000000046"</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="IClassClassicInfo">
|
||||
<a class="viewcode-back" href="../../../interfaces_generated.html#windows.generated_def.interfaces.IClassClassicInfo">[docs]</a>
|
||||
<span class="k">class</span> <span class="nc">IClassClassicInfo</span><span class="p">(</span><span class="n">COMInterface</span><span class="p">):</span>
|
||||
@@ -801,21 +801,6 @@
|
||||
<span class="n">IID</span> <span class="o">=</span> <span class="n">generate_IID</span><span class="p">(</span><span class="mh">0x0EFA6E54</span><span class="p">,</span> <span class="mh">0xF313</span><span class="p">,</span> <span class="mh">0x405D</span><span class="p">,</span> <span class="mh">0xB5</span><span class="p">,</span> <span class="mh">0xD8</span><span class="p">,</span> <span class="mh">0x83</span><span class="p">,</span> <span class="mh">0x0A</span><span class="p">,</span> <span class="mh">0x91</span><span class="p">,</span> <span class="mh">0x4F</span><span class="p">,</span> <span class="mh">0x64</span><span class="p">,</span> <span class="mh">0x96</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s2">"IWbemServices"</span><span class="p">,</span> <span class="n">strid</span><span class="o">=</span><span class="s2">"0EFA6E54-F313-405D-B5D8-830A914F6496"</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<span class="n">IActivationStageInfo</span><span class="o">.</span><span class="n">_functions_</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="c1"># QueryInterface -> riid:REFIID, ppvObject:**void</span>
|
||||
<span class="s2">"QueryInterface"</span><span class="p">:</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">WINFUNCTYPE</span><span class="p">(</span><span class="n">HRESULT</span><span class="p">,</span> <span class="n">REFIID</span><span class="p">,</span> <span class="n">POINTER</span><span class="p">(</span><span class="n">PVOID</span><span class="p">))(</span><span class="mi">0</span><span class="p">,</span> <span class="s2">"QueryInterface"</span><span class="p">),</span>
|
||||
<span class="c1"># AddRef -> </span>
|
||||
<span class="s2">"AddRef"</span><span class="p">:</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">WINFUNCTYPE</span><span class="p">(</span><span class="n">ULONG</span><span class="p">)(</span><span class="mi">1</span><span class="p">,</span> <span class="s2">"AddRef"</span><span class="p">),</span>
|
||||
<span class="c1"># Release -> </span>
|
||||
<span class="s2">"Release"</span><span class="p">:</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">WINFUNCTYPE</span><span class="p">(</span><span class="n">ULONG</span><span class="p">)(</span><span class="mi">2</span><span class="p">,</span> <span class="s2">"Release"</span><span class="p">),</span>
|
||||
<span class="c1"># SetStageAndIndex -> stage:ACTIVATION_STAGE, index:INT</span>
|
||||
<span class="s2">"SetStageAndIndex"</span><span class="p">:</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">WINFUNCTYPE</span><span class="p">(</span><span class="n">HRESULT</span><span class="p">,</span> <span class="n">ACTIVATION_STAGE</span><span class="p">,</span> <span class="n">INT</span><span class="p">)(</span><span class="mi">3</span><span class="p">,</span> <span class="s2">"SetStageAndIndex"</span><span class="p">),</span>
|
||||
<span class="c1"># GetStage -> pstage:*ACTIVATION_STAGE</span>
|
||||
<span class="s2">"GetStage"</span><span class="p">:</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">WINFUNCTYPE</span><span class="p">(</span><span class="n">HRESULT</span><span class="p">,</span> <span class="n">POINTER</span><span class="p">(</span><span class="n">ACTIVATION_STAGE</span><span class="p">))(</span><span class="mi">4</span><span class="p">,</span> <span class="s2">"GetStage"</span><span class="p">),</span>
|
||||
<span class="c1"># GetIndex -> pindex:*INT</span>
|
||||
<span class="s2">"GetIndex"</span><span class="p">:</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">WINFUNCTYPE</span><span class="p">(</span><span class="n">HRESULT</span><span class="p">,</span> <span class="n">POINTER</span><span class="p">(</span><span class="n">INT</span><span class="p">))(</span><span class="mi">5</span><span class="p">,</span> <span class="s2">"GetIndex"</span><span class="p">),</span>
|
||||
<span class="p">}</span>
|
||||
|
||||
<span class="n">ICallFactory</span><span class="o">.</span><span class="n">_functions_</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="c1"># QueryInterface -> riid:REFIID, ppvObject:**void</span>
|
||||
<span class="s2">"QueryInterface"</span><span class="p">:</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">WINFUNCTYPE</span><span class="p">(</span><span class="n">HRESULT</span><span class="p">,</span> <span class="n">REFIID</span><span class="p">,</span> <span class="n">POINTER</span><span class="p">(</span><span class="n">PVOID</span><span class="p">))(</span><span class="mi">0</span><span class="p">,</span> <span class="s2">"QueryInterface"</span><span class="p">),</span>
|
||||
@@ -2021,6 +2006,21 @@
|
||||
<span class="s2">"GetReturnActivationProperties"</span><span class="p">:</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">WINFUNCTYPE</span><span class="p">(</span><span class="n">HRESULT</span><span class="p">,</span> <span class="n">IUnknown</span><span class="p">,</span> <span class="n">POINTER</span><span class="p">(</span><span class="n">IActivationPropertiesOut</span><span class="p">))(</span><span class="mi">12</span><span class="p">,</span> <span class="s2">"GetReturnActivationProperties"</span><span class="p">),</span>
|
||||
<span class="p">}</span>
|
||||
|
||||
<span class="n">IActivationStageInfo</span><span class="o">.</span><span class="n">_functions_</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="c1"># QueryInterface -> riid:REFIID, ppvObject:**void</span>
|
||||
<span class="s2">"QueryInterface"</span><span class="p">:</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">WINFUNCTYPE</span><span class="p">(</span><span class="n">HRESULT</span><span class="p">,</span> <span class="n">REFIID</span><span class="p">,</span> <span class="n">POINTER</span><span class="p">(</span><span class="n">PVOID</span><span class="p">))(</span><span class="mi">0</span><span class="p">,</span> <span class="s2">"QueryInterface"</span><span class="p">),</span>
|
||||
<span class="c1"># AddRef -> </span>
|
||||
<span class="s2">"AddRef"</span><span class="p">:</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">WINFUNCTYPE</span><span class="p">(</span><span class="n">ULONG</span><span class="p">)(</span><span class="mi">1</span><span class="p">,</span> <span class="s2">"AddRef"</span><span class="p">),</span>
|
||||
<span class="c1"># Release -> </span>
|
||||
<span class="s2">"Release"</span><span class="p">:</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">WINFUNCTYPE</span><span class="p">(</span><span class="n">ULONG</span><span class="p">)(</span><span class="mi">2</span><span class="p">,</span> <span class="s2">"Release"</span><span class="p">),</span>
|
||||
<span class="c1"># SetStageAndIndex -> stage:ACTIVATION_STAGE, index:INT</span>
|
||||
<span class="s2">"SetStageAndIndex"</span><span class="p">:</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">WINFUNCTYPE</span><span class="p">(</span><span class="n">HRESULT</span><span class="p">,</span> <span class="n">ACTIVATION_STAGE</span><span class="p">,</span> <span class="n">INT</span><span class="p">)(</span><span class="mi">3</span><span class="p">,</span> <span class="s2">"SetStageAndIndex"</span><span class="p">),</span>
|
||||
<span class="c1"># GetStage -> pstage:*ACTIVATION_STAGE</span>
|
||||
<span class="s2">"GetStage"</span><span class="p">:</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">WINFUNCTYPE</span><span class="p">(</span><span class="n">HRESULT</span><span class="p">,</span> <span class="n">POINTER</span><span class="p">(</span><span class="n">ACTIVATION_STAGE</span><span class="p">))(</span><span class="mi">4</span><span class="p">,</span> <span class="s2">"GetStage"</span><span class="p">),</span>
|
||||
<span class="c1"># GetIndex -> pindex:*INT</span>
|
||||
<span class="s2">"GetIndex"</span><span class="p">:</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">WINFUNCTYPE</span><span class="p">(</span><span class="n">HRESULT</span><span class="p">,</span> <span class="n">POINTER</span><span class="p">(</span><span class="n">INT</span><span class="p">))(</span><span class="mi">5</span><span class="p">,</span> <span class="s2">"GetIndex"</span><span class="p">),</span>
|
||||
<span class="p">}</span>
|
||||
|
||||
<span class="n">IClassClassicInfo</span><span class="o">.</span><span class="n">_functions_</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="c1"># QueryInterface -> riid:REFIID, ppvObject:**void</span>
|
||||
<span class="s2">"QueryInterface"</span><span class="p">:</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">WINFUNCTYPE</span><span class="p">(</span><span class="n">HRESULT</span><span class="p">,</span> <span class="n">REFIID</span><span class="p">,</span> <span class="n">POINTER</span><span class="p">(</span><span class="n">PVOID</span><span class="p">))(</span><span class="mi">0</span><span class="p">,</span> <span class="s2">"QueryInterface"</span><span class="p">),</span>
|
||||
@@ -3998,7 +3998,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.3 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.generated_def.interfaces</a></li>
|
||||
</ul>
|
||||
|
||||
+1457
-866
File diff suppressed because one or more lines are too long
+4
-4
@@ -4,12 +4,12 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>windows.hooks — PythonForWindows 1.0.0 documentation</title>
|
||||
<title>windows.hooks — PythonForWindows 1.0.2 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="../../_static/documentation_options.js?v=8d563738"></script>
|
||||
<script src="../../_static/documentation_options.js?v=1ed6394b"></script>
|
||||
<script src="../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 1.0.2 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.hooks</a></li>
|
||||
</ul>
|
||||
@@ -210,7 +210,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 1.0.2 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../index.html" >Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.hooks</a></li>
|
||||
</ul>
|
||||
|
||||
+4
-4
@@ -4,12 +4,12 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>windows.native_exec.cpuid — PythonForWindows 1.0.0 documentation</title>
|
||||
<title>windows.native_exec.cpuid — PythonForWindows 1.0.2 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="../../../_static/documentation_options.js?v=8d563738"></script>
|
||||
<script src="../../../_static/documentation_options.js?v=1ed6394b"></script>
|
||||
<script src="../../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.2 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.native_exec.cpuid</a></li>
|
||||
</ul>
|
||||
@@ -260,7 +260,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.2 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.native_exec.cpuid</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -4,12 +4,12 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>windows.native_exec.native_function — PythonForWindows 1.0.0 documentation</title>
|
||||
<title>windows.native_exec.native_function — PythonForWindows 1.0.2 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="../../../_static/documentation_options.js?v=8d563738"></script>
|
||||
<script src="../../../_static/documentation_options.js?v=1ed6394b"></script>
|
||||
<script src="../../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.2 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.native_exec.native_function</a></li>
|
||||
</ul>
|
||||
@@ -158,7 +158,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.2 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.native_exec.native_function</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -4,12 +4,12 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>windows.native_exec.simple_x86 — PythonForWindows 1.0.0 documentation</title>
|
||||
<title>windows.native_exec.simple_x86 — PythonForWindows 1.0.2 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="../../../_static/documentation_options.js?v=8d563738"></script>
|
||||
<script src="../../../_static/documentation_options.js?v=1ed6394b"></script>
|
||||
<script src="../../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.2 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.native_exec.simple_x86</a></li>
|
||||
</ul>
|
||||
@@ -1273,7 +1273,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.2 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.native_exec.simple_x86</a></li>
|
||||
</ul>
|
||||
|
||||
+22
-8
@@ -4,12 +4,12 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>windows.pe_parse — PythonForWindows 1.0.0 documentation</title>
|
||||
<title>windows.pe_parse — PythonForWindows 1.0.3 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="../../_static/documentation_options.js?v=8d563738"></script>
|
||||
<script src="../../_static/documentation_options.js?v=baaebd52"></script>
|
||||
<script src="../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 1.0.3 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.pe_parse</a></li>
|
||||
</ul>
|
||||
@@ -42,6 +42,7 @@
|
||||
<span class="kn">import</span> <span class="nn">windows.hooks</span> <span class="k">as</span> <span class="nn">hooks</span>
|
||||
<span class="kn">import</span> <span class="nn">windows.utils</span> <span class="k">as</span> <span class="nn">utils</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">windows.generated_def</span> <span class="k">as</span> <span class="nn">gdef</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.generated_def.winstructs</span> <span class="kn">import</span> <span class="o">*</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.utils</span> <span class="kn">import</span> <span class="n">transform_ctypes_fields</span>
|
||||
<span class="kn">import</span> <span class="nn">windows.remotectypes</span> <span class="k">as</span> <span class="nn">rctypes</span>
|
||||
@@ -77,9 +78,9 @@
|
||||
<span class="c1"># We can force bitness as the field we access are bitness-independant</span>
|
||||
<span class="n">pe</span> <span class="o">=</span> <span class="n">GetPEFile</span><span class="p">(</span><span class="n">baseaddr</span><span class="p">,</span> <span class="n">target</span><span class="p">,</span> <span class="n">force_bitness</span><span class="o">=</span><span class="mi">32</span><span class="p">)</span>
|
||||
<span class="n">machine</span> <span class="o">=</span> <span class="n">pe</span><span class="o">.</span><span class="n">get_NT_HEADER</span><span class="p">()</span><span class="o">.</span><span class="n">FileHeader</span><span class="o">.</span><span class="n">Machine</span>
|
||||
<span class="k">if</span> <span class="n">machine</span> <span class="o">==</span> <span class="mh">0x14c</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">machine</span> <span class="o">==</span> <span class="n">gdef</span><span class="o">.</span><span class="n">IMAGE_FILE_MACHINE_I386</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="mi">32</span>
|
||||
<span class="k">elif</span> <span class="n">machine</span> <span class="o">==</span> <span class="mh">0x8664</span><span class="p">:</span>
|
||||
<span class="k">elif</span> <span class="n">machine</span> <span class="ow">in</span> <span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">IMAGE_FILE_MACHINE_AMD64</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">IMAGE_FILE_MACHINE_ARM64</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="mi">64</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Unknow PE target machine <0x</span><span class="si">{0:x}</span><span class="s2">>"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">machine</span><span class="p">))</span>
|
||||
@@ -150,7 +151,7 @@
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">target</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">name</span> <span class="o">=</span> <span class="n">get_string</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">target</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">addressof</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">Name</span><span class="p">))[:</span><span class="mi">8</span><span class="p">]</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">name</span> <span class="o">=</span> <span class="n">get_string</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">target</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_base_addr</span><span class="p">)[:</span><span class="mi">8</span><span class="p">]</span>
|
||||
<span class="n">name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">target</span><span class="o">.</span><span class="n">read_memory</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_base_addr</span><span class="p">,</span> <span class="mi">8</span><span class="p">)</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="sa">b</span><span class="s2">"</span><span class="se">\x00</span><span class="s2">"</span><span class="p">,</span> <span class="mi">1</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="s2">"ascii"</span><span class="p">)</span>
|
||||
<span class="c1"># Decode as UTF-8 as the MS doc say ?</span>
|
||||
<span class="k">return</span> <span class="n">name</span>
|
||||
|
||||
@@ -503,7 +504,20 @@
|
||||
<span class="n">iat_entry</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">name</span><span class="p">)</span> <span class="k">if</span> <span class="n">name</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
<span class="n">name</span> <span class="o">=</span> <span class="n">get_string</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">target</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">baseaddr</span> <span class="o">+</span> <span class="n">import_descriptor</span><span class="o">.</span><span class="n">Name</span><span class="p">)</span>
|
||||
<span class="n">res</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="n">name</span><span class="o">.</span><span class="n">lower</span><span class="p">(),</span> <span class="p">[])</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">IAT</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">res</span></div>
|
||||
<span class="k">return</span> <span class="n">res</span>
|
||||
|
||||
<span class="nd">@utils</span><span class="o">.</span><span class="n">fixedpropety</span>
|
||||
<span class="k">def</span> <span class="nf">binid</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Return the hex-string {TimeStamp}{SizeOfCode} used by PDB to identify a PE.</span>
|
||||
|
||||
<span class="sd"> I do not know the official name of this value...</span>
|
||||
|
||||
<span class="sd"> :type: :class:`str`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">nth</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_NT_HEADER</span><span class="p">()</span>
|
||||
<span class="n">timestamp</span> <span class="o">=</span> <span class="n">nth</span><span class="o">.</span><span class="n">FileHeader</span><span class="o">.</span><span class="n">TimeDateStamp</span>
|
||||
<span class="n">image_size</span> <span class="o">=</span> <span class="n">nth</span><span class="o">.</span><span class="n">OptionalHeader</span><span class="o">.</span><span class="n">SizeOfImage</span>
|
||||
<span class="k">return</span> <span class="s2">"</span><span class="si">{timestamp:08x}{image_size:x}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">timestamp</span><span class="o">=</span><span class="n">timestamp</span><span class="p">,</span> <span class="n">image_size</span><span class="o">=</span><span class="n">image_size</span><span class="p">)</span></div>
|
||||
|
||||
</pre></div>
|
||||
|
||||
@@ -536,7 +550,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 1.0.3 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../index.html" >Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.pe_parse</a></li>
|
||||
</ul>
|
||||
|
||||
+4
-4
@@ -4,12 +4,12 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>windows.pipe — PythonForWindows 1.0.0 documentation</title>
|
||||
<title>windows.pipe — PythonForWindows 1.0.2 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="../../_static/documentation_options.js?v=8d563738"></script>
|
||||
<script src="../../_static/documentation_options.js?v=1ed6394b"></script>
|
||||
<script src="../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 1.0.2 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.pipe</a></li>
|
||||
</ul>
|
||||
@@ -228,7 +228,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 1.0.2 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../index.html" >Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.pipe</a></li>
|
||||
</ul>
|
||||
|
||||
+4
-4
@@ -4,12 +4,12 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>windows.remotectypes — PythonForWindows 1.0.0 documentation</title>
|
||||
<title>windows.remotectypes — PythonForWindows 1.0.3 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="../../_static/documentation_options.js?v=8d563738"></script>
|
||||
<script src="../../_static/documentation_options.js?v=baaebd52"></script>
|
||||
<script src="../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 1.0.3 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.remotectypes</a></li>
|
||||
</ul>
|
||||
@@ -599,7 +599,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 1.0.3 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../index.html" >Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.remotectypes</a></li>
|
||||
</ul>
|
||||
|
||||
+182
-20
@@ -4,12 +4,12 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>windows.rpc.client — PythonForWindows 1.0.1 documentation</title>
|
||||
<title>windows.rpc.client — PythonForWindows 1.0.3 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="../../../_static/documentation_options.js?v=292eb321"></script>
|
||||
<script src="../../../_static/documentation_options.js?v=baaebd52"></script>
|
||||
<script src="../../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.1 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.3 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.rpc.client</a></li>
|
||||
</ul>
|
||||
@@ -101,11 +101,28 @@
|
||||
<span class="p">(</span><span class="s2">"orpc_ipid"</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">GUID</span><span class="p">)</span>
|
||||
<span class="p">]</span>
|
||||
|
||||
<span class="c1"># Was an array of 6 DWORD, new class inspired by :</span>
|
||||
<span class="c1"># https://github.com/googleprojectzero/sandbox-attacksurface-analysis-tools/blob/main/NtCoreLib/Win32/Rpc/Transport/Alpc/LRPC_IMMEDIATE_RESPONSE_MESSAGE.cs#L22</span>
|
||||
|
||||
<span class="k">class</span> <span class="nc">ALPC_RPC_RESPONSE</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">Structure</span><span class="p">):</span>
|
||||
<span class="n">_pack_</span> <span class="o">=</span> <span class="mi">1</span>
|
||||
<span class="n">_fields_</span> <span class="o">=</span> <span class="p">[</span>
|
||||
<span class="p">(</span><span class="s2">"request_type"</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">DWORD</span><span class="p">),</span>
|
||||
<span class="p">(</span><span class="s2">"UNK1"</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">DWORD</span><span class="p">),</span>
|
||||
<span class="p">(</span><span class="s2">"flags"</span><span class="p">,</span><span class="n">gdef</span><span class="o">.</span><span class="n">DWORD</span><span class="p">),</span>
|
||||
<span class="p">(</span><span class="s2">"request_id"</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">DWORD</span><span class="p">),</span>
|
||||
<span class="p">(</span><span class="s2">"UNK2"</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">DWORD</span><span class="p">),</span>
|
||||
<span class="p">(</span><span class="s2">"UNK3"</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">DWORD</span><span class="p">),</span>
|
||||
<span class="p">]</span>
|
||||
|
||||
<div class="viewcode-block" id="RPCClient">
|
||||
<a class="viewcode-back" href="../../../rpc.html#windows.rpc.RPCClient">[docs]</a>
|
||||
<span class="k">class</span> <span class="nc">RPCClient</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""A client for RPC-over-ALPC able to bind to interface and perform calls using NDR32 marshalling"""</span>
|
||||
<span class="n">REQUEST_IDENTIFIER</span> <span class="o">=</span> <span class="mh">0x11223344</span>
|
||||
<span class="n">REQUEST_IDENTIFIER</span> <span class="o">=</span> <span class="mh">0x42424242</span>
|
||||
<span class="c1"># Used to recognize ORPC call we made</span>
|
||||
<span class="c1"># thus we know the response contains a orpcthat & localthat</span>
|
||||
<span class="n">REQUEST_IDENTIFIER_ORPC</span> <span class="o">=</span> <span class="mh">0x43434343</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">port</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">alpc_client</span> <span class="o">=</span> <span class="n">alpc</span><span class="o">.</span><span class="n">AlpcClient</span><span class="p">(</span><span class="n">port</span><span class="p">)</span> <span class="c1">#: The :class:`windows.alpc.AlpcClient` used to communicate with the server</span>
|
||||
@@ -160,6 +177,10 @@
|
||||
<span class="sd"> :param str params: The mashalled parameters (NDR32)</span>
|
||||
<span class="sd"> :param GUID ipid: The IPID for `ORPC calls <https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-dcom/db1d5ce1-a783-4f3d-854c-dc44308e78fb>`_</span>
|
||||
<span class="sd"> :returns: :class:`str`</span>
|
||||
|
||||
<span class="sd"> .. note::</span>
|
||||
|
||||
<span class="sd"> Since `1.0.3` if the call is an ORPC call, the `ORPCTHAT` & `LOCALTHAT` present in the response are parsed and striped from the result.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">request</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">forge_alpc_request</span><span class="p">(</span><span class="n">IID</span><span class="p">,</span> <span class="n">method_offset</span><span class="p">,</span> <span class="n">params</span><span class="p">,</span> <span class="n">ipid</span><span class="o">=</span><span class="n">ipid</span><span class="p">)</span>
|
||||
<span class="n">response</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_send_request</span><span class="p">(</span><span class="n">request</span><span class="p">)</span>
|
||||
@@ -188,17 +209,14 @@
|
||||
<span class="n">req</span><span class="o">.</span><span class="n">if_nb</span> <span class="o">=</span> <span class="n">interface_nb</span>
|
||||
<span class="n">req</span><span class="o">.</span><span class="n">method_offset</span> <span class="o">=</span> <span class="n">method_offset</span>
|
||||
<span class="k">if</span> <span class="n">ipid</span><span class="p">:</span>
|
||||
<span class="n">req</span><span class="o">.</span><span class="n">request_id</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">REQUEST_IDENTIFIER_ORPC</span>
|
||||
<span class="n">req</span><span class="o">.</span><span class="n">flags</span> <span class="o">=</span> <span class="mi">1</span> <span class="c1"># We have a IPID</span>
|
||||
<span class="n">req</span><span class="o">.</span><span class="n">orpc_ipid</span> <span class="o">=</span> <span class="n">ipid</span>
|
||||
<span class="n">this</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">ORPCTHIS32</span><span class="p">()</span> <span class="c1"># we use NDR32</span>
|
||||
<span class="n">this</span><span class="o">.</span><span class="n">version</span> <span class="o">=</span> <span class="p">(</span><span class="mi">5</span><span class="p">,</span><span class="mi">7</span><span class="p">)</span>
|
||||
<span class="n">this</span><span class="o">.</span><span class="n">flags</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">ORPCF_LOCAL</span>
|
||||
<span class="c1"># Not mandatory</span>
|
||||
<span class="c1"># this.cid = gdef.GUID.from_string("42424242-4242-4242-4242-424242424242")</span>
|
||||
<span class="n">lthis</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">LOCALTHIS32</span><span class="p">()</span> <span class="c1"># we use NDR32</span>
|
||||
<span class="c1"># RPC_E_INVALID_HEADER is NULL</span>
|
||||
<span class="n">lthis</span><span class="o">.</span><span class="n">callTraceActivity</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">GUID</span><span class="o">.</span><span class="n">from_string</span><span class="p">(</span><span class="s2">"42424242-4242-4242-4242-424242424242"</span><span class="p">)</span>
|
||||
<span class="n">lthis</span><span class="o">.</span><span class="n">dwClientThread</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">current_thread</span><span class="o">.</span><span class="n">tid</span>
|
||||
<span class="c1"># Returned correct type with mandatory fields filed</span>
|
||||
<span class="n">lthis</span> <span class="o">=</span> <span class="n">fill_correct_localthis_for_version</span><span class="p">()</span>
|
||||
<span class="k">return</span> <span class="n">buffer</span><span class="p">(</span><span class="n">req</span><span class="p">)[:]</span> <span class="o">+</span> <span class="n">buffer</span><span class="p">(</span><span class="n">this</span><span class="p">)[:]</span> <span class="o">+</span> <span class="n">buffer</span><span class="p">(</span><span class="n">lthis</span><span class="p">)[:]</span> <span class="o">+</span> <span class="n">params</span>
|
||||
<span class="k">return</span> <span class="n">buffer</span><span class="p">(</span><span class="n">req</span><span class="p">)[:]</span> <span class="o">+</span> <span class="n">params</span>
|
||||
|
||||
@@ -237,22 +255,166 @@
|
||||
<span class="s2">"raise if request_type == RESPONSE_TYPE_FAIL"</span>
|
||||
<span class="n">request_type</span> <span class="o">=</span> <span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s2">"<I"</span><span class="p">,</span> <span class="n">response</span><span class="o">.</span><span class="n">data</span><span class="p">[:</span><span class="mi">4</span><span class="p">])[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="n">request_type</span> <span class="o">==</span> <span class="n">gdef</span><span class="o">.</span><span class="n">RPC_RESPONSE_TYPE_FAIL</span><span class="p">:</span>
|
||||
<span class="n">error_code</span> <span class="o">=</span> <span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s2">"<5I"</span><span class="p">,</span> <span class="n">response</span><span class="o">.</span><span class="n">data</span><span class="p">)[</span><span class="mi">2</span><span class="p">]</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"RPC Response error </span><span class="si">{0}</span><span class="s2"> (</span><span class="si">{1}</span><span class="s2">)"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">error_code</span><span class="p">,</span> <span class="n">KNOWN_RPC_ERROR_CODE</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">error_code</span><span class="p">,</span> <span class="n">error_code</span><span class="p">)))</span>
|
||||
<span class="n">effective_error_code</span> <span class="o">=</span> <span class="n">error_code</span> <span class="o">=</span> <span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s2">"<5I"</span><span class="p">,</span> <span class="n">response</span><span class="o">.</span><span class="n">data</span><span class="p">)[</span><span class="mi">2</span><span class="p">]</span>
|
||||
<span class="c1"># https://learn.microsoft.com/en-us/windows/win32/com/structure-of-com-error-codes</span>
|
||||
<span class="k">if</span> <span class="n">gdef</span><span class="o">.</span><span class="n">HRESULT_FACILITY</span><span class="p">(</span><span class="n">error_code</span><span class="p">)</span> <span class="o">==</span> <span class="n">gdef</span><span class="o">.</span><span class="n">FACILITY_WIN32</span><span class="p">:</span>
|
||||
<span class="n">effective_error_code</span> <span class="o">=</span> <span class="n">effective_error_code</span> <span class="o">&</span> <span class="mh">0xffff</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"RPC Response error </span><span class="si">{0:#x}</span><span class="s2"> (</span><span class="si">{1!r}</span><span class="s2">)"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">error_code</span><span class="p">,</span> <span class="n">KNOWN_RPC_ERROR_CODE</span><span class="p">[</span><span class="n">effective_error_code</span><span class="p">]))</span>
|
||||
<span class="k">return</span> <span class="n">request_type</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_get_response_effective_data</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">response</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Response is a `AlpcMessage` needed to handle response in message vs response in view"""</span>
|
||||
<span class="n">response_header</span> <span class="o">=</span> <span class="n">ALPC_RPC_RESPONSE</span><span class="o">.</span><span class="n">from_buffer_copy</span><span class="p">(</span><span class="n">response</span><span class="o">.</span><span class="n">data</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">response</span><span class="o">.</span><span class="n">view_is_valid</span><span class="p">:</span>
|
||||
<span class="c1"># Reponse directly in PORT_MESSAGE</span>
|
||||
<span class="k">return</span> <span class="n">response</span><span class="o">.</span><span class="n">data</span><span class="p">[</span><span class="mh">0x18</span><span class="p">:]</span> <span class="c1"># 4 * 6</span>
|
||||
<span class="c1"># Response in view M extract size from PORT_MESSAGE & read data from view</span>
|
||||
<span class="k">assert</span> <span class="n">response</span><span class="o">.</span><span class="n">port_message</span><span class="o">.</span><span class="n">u1</span><span class="o">.</span><span class="n">s1</span><span class="o">.</span><span class="n">TotalLength</span> <span class="o">>=</span> <span class="mh">0x48</span> <span class="c1"># At least 0x20 of data</span>
|
||||
<span class="n">rpcdatasize</span> <span class="o">=</span> <span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s2">"<I"</span><span class="p">,</span> <span class="n">response</span><span class="o">.</span><span class="n">data</span><span class="p">[</span><span class="mh">0x18</span><span class="p">:</span><span class="mh">0x1c</span><span class="p">])[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="n">viewattr</span> <span class="o">=</span> <span class="n">response</span><span class="o">.</span><span class="n">view_attribute</span>
|
||||
<span class="k">assert</span> <span class="n">viewattr</span><span class="o">.</span><span class="n">ViewSize</span> <span class="o">>=</span> <span class="n">rpcdatasize</span>
|
||||
<span class="k">return</span> <span class="n">windows</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">read_memory</span><span class="p">(</span><span class="n">viewattr</span><span class="o">.</span><span class="n">ViewBase</span><span class="p">,</span> <span class="n">rpcdatasize</span><span class="p">)</span></div>
|
||||
<span class="n">data</span> <span class="o">=</span> <span class="n">response</span><span class="o">.</span><span class="n">data</span><span class="p">[</span><span class="n">ctypes</span><span class="o">.</span><span class="n">sizeof</span><span class="p">(</span><span class="n">ALPC_RPC_RESPONSE</span><span class="p">):]</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c1"># Response in view M extract size from PORT_MESSAGE & read data from view</span>
|
||||
<span class="k">assert</span> <span class="n">response</span><span class="o">.</span><span class="n">port_message</span><span class="o">.</span><span class="n">u1</span><span class="o">.</span><span class="n">s1</span><span class="o">.</span><span class="n">DataLength</span> <span class="o">>=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">sizeof</span><span class="p">(</span><span class="n">ALPC_RPC_RESPONSE</span><span class="p">)</span> <span class="c1"># 0x20</span>
|
||||
<span class="n">rpcdatasize</span> <span class="o">=</span> <span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s2">"<I"</span><span class="p">,</span> <span class="n">response</span><span class="o">.</span><span class="n">data</span><span class="p">[</span><span class="mh">0x18</span><span class="p">:</span><span class="mh">0x1c</span><span class="p">])[</span><span class="mi">0</span><span class="p">]</span> <span class="c1"># ctypes.sizeof(ALPC_RPC_RESPONSE)</span>
|
||||
<span class="n">viewattr</span> <span class="o">=</span> <span class="n">response</span><span class="o">.</span><span class="n">view_attribute</span>
|
||||
<span class="k">assert</span> <span class="n">viewattr</span><span class="o">.</span><span class="n">ViewSize</span> <span class="o">>=</span> <span class="n">rpcdatasize</span>
|
||||
<span class="n">data</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">read_memory</span><span class="p">(</span><span class="n">viewattr</span><span class="o">.</span><span class="n">ViewBase</span><span class="p">,</span> <span class="n">rpcdatasize</span><span class="p">)</span>
|
||||
<span class="c1"># We have copied the data from the view: free it</span>
|
||||
<span class="c1"># It looks like:</span>
|
||||
<span class="c1"># windows.winproxy.NtAlpcDeleteSectionView(self.alpc_client.handle, 0, viewattr.ViewBase)</span>
|
||||
<span class="c1"># Will ne be enough, as it will wait for the message to be reused to unmap the section..</span>
|
||||
<span class="c1"># And the current architecture encourage creating new message every time</span>
|
||||
<span class="k">if</span> <span class="n">response_header</span><span class="o">.</span><span class="n">request_id</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">REQUEST_IDENTIFIER_ORPC</span><span class="p">:</span>
|
||||
<span class="c1"># Parse & remove ORPC headers (orpcthat + LocalThat)</span>
|
||||
<span class="n">data</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_pass_orpc_response_structures</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">data</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_pass_orpc_response_structures</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span>
|
||||
<span class="n">orpcthat</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">ORPCTHAT32</span><span class="o">.</span><span class="n">from_buffer_copy</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
|
||||
<span class="n">data</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="n">ctypes</span><span class="o">.</span><span class="n">sizeof</span><span class="p">(</span><span class="n">orpcthat</span><span class="p">):]</span>
|
||||
<span class="k">if</span> <span class="n">orpcthat</span><span class="o">.</span><span class="n">extensions</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="c1"># Parse extension : code have not been tested a lot</span>
|
||||
<span class="n">write_array_extend</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">WireExtentArray</span><span class="o">.</span><span class="n">from_buffer_copy</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
|
||||
<span class="n">data</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="n">ctypes</span><span class="o">.</span><span class="n">sizeof</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">WireExtentArray</span><span class="p">):]</span>
|
||||
<span class="k">if</span> <span class="n">write_array_extend</span><span class="o">.</span><span class="n">rounded_size</span> <span class="o">!=</span> <span class="mi">2</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s2">"orpcthat.extensions: WireExtentArray.rounded_size != 2"</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">write_array_extend</span><span class="o">.</span><span class="n">unique_flag</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">value</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="n">data</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_pass_wire_extend</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
|
||||
<span class="n">localthat_type</span> <span class="o">=</span> <span class="n">find_correct_localthat_for_version</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">localthat_type</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">localthat</span> <span class="o">=</span> <span class="n">localthat_type</span><span class="o">.</span><span class="n">from_buffer_copy</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
|
||||
<span class="c1"># Check localthat pointers are empty</span>
|
||||
<span class="k">for</span> <span class="n">field</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"pAsyncResponseBlock"</span><span class="p">,</span> <span class="s2">"containerErrorInformation"</span><span class="p">,</span> <span class="s2">"containerPassthroughData"</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">localthat</span><span class="p">,</span> <span class="n">field</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s2">"ORPC Response with localthat.</span><span class="si">{0}</span><span class="s2"> != 0"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">field</span><span class="p">))</span>
|
||||
<span class="n">data</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="n">ctypes</span><span class="o">.</span><span class="n">sizeof</span><span class="p">(</span><span class="n">localthat</span><span class="p">):]</span>
|
||||
<span class="k">return</span> <span class="n">data</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_pass_wire_extend</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span>
|
||||
<span class="n">wire_extend</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">WireExtent</span><span class="o">.</span><span class="n">from_buffer_copy</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
|
||||
<span class="c1"># We don't care -> jump over the size only</span>
|
||||
<span class="k">return</span> <span class="n">data</span><span class="p">[</span><span class="n">ctypes</span><span class="o">.</span><span class="n">sizeof</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">WireExtent</span><span class="p">)</span> <span class="o">+</span> <span class="n">wire_extend</span><span class="o">.</span><span class="n">rounded_size</span><span class="p">:]</span></div>
|
||||
|
||||
|
||||
<span class="c1"># Based on combase.dll analysis</span>
|
||||
|
||||
<span class="c1"># LOCALTHIS</span>
|
||||
<span class="c1"># Nb fields: 2</span>
|
||||
<span class="c1"># 6.1.7601.17514 -> 6.2.9200.22376</span>
|
||||
<span class="c1"># * 6.1.7601.17514</span>
|
||||
<span class="c1"># * 6.1.7601.17514</span>
|
||||
<span class="c1"># * 6.2.9200.22376</span>
|
||||
<span class="c1"># Nb fields: 4</span>
|
||||
<span class="c1"># 6.3.9600.17031 -> 6.3.9600.20772</span>
|
||||
<span class="c1"># * 6.3.9600.17031</span>
|
||||
<span class="c1"># * 6.3.9600.20772</span>
|
||||
<span class="c1"># Nb fields: 5</span>
|
||||
<span class="c1"># 10.0.10240.16384 -> 10.0.15063.2679</span>
|
||||
<span class="c1"># Nb fields: 7</span>
|
||||
<span class="c1"># 10.0.16299.1 -> 10.0.26100.2454</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">fill_correct_localthis_for_version</span><span class="p">():</span>
|
||||
<span class="n">vmaj</span><span class="p">,</span> <span class="n">vmin</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">system</span><span class="o">.</span><span class="n">version</span>
|
||||
<span class="k">if</span> <span class="p">(</span><span class="n">vmaj</span><span class="p">,</span> <span class="n">vmin</span><span class="p">)</span> <span class="o"><</span> <span class="p">(</span><span class="mi">6</span><span class="p">,</span> <span class="mi">1</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="kc">None</span>
|
||||
<span class="k">if</span> <span class="p">(</span><span class="n">vmaj</span><span class="p">,</span> <span class="n">vmin</span><span class="p">)</span> <span class="ow">in</span> <span class="p">((</span><span class="mi">6</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> <span class="p">(</span><span class="mi">6</span><span class="p">,</span> <span class="mi">2</span><span class="p">)):</span>
|
||||
<span class="k">return</span> <span class="n">gdef</span><span class="o">.</span><span class="n">LOCALTHIS32_NT_62</span><span class="p">(</span><span class="n">dwClientThread</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">current_thread</span><span class="o">.</span><span class="n">tid</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="p">(</span><span class="n">vmaj</span><span class="p">,</span> <span class="n">vmin</span><span class="p">)</span> <span class="o">==</span> <span class="p">(</span><span class="mi">6</span><span class="p">,</span><span class="mi">3</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">gdef</span><span class="o">.</span><span class="n">LOCALTHIS32_NT_63</span><span class="p">(</span><span class="n">dwClientThread</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">current_thread</span><span class="o">.</span><span class="n">tid</span><span class="p">)</span>
|
||||
<span class="k">assert</span> <span class="n">vmaj</span> <span class="o">==</span> <span class="mi">10</span>
|
||||
<span class="n">vnumber</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">system</span><span class="o">.</span><span class="n">get_file_version</span><span class="p">(</span><span class="sa">r</span><span class="s2">"C:\windows\system32\combase.dll"</span><span class="p">)</span>
|
||||
<span class="c1"># Extract version number from combase</span>
|
||||
<span class="c1"># as it was used to find the struct per version</span>
|
||||
<span class="n">build_number</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">vnumber</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"."</span><span class="p">)[</span><span class="mi">2</span><span class="p">])</span>
|
||||
<span class="k">if</span> <span class="n">build_number</span> <span class="o"><=</span> <span class="mi">15063</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">gdef</span><span class="o">.</span><span class="n">LOCALTHIS32_NT_1607</span><span class="p">(</span><span class="n">dwClientThread</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">current_thread</span><span class="o">.</span><span class="n">tid</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">gdef</span><span class="o">.</span><span class="n">LOCALTHIS32</span><span class="p">(</span><span class="n">callTraceActivity</span><span class="o">=</span><span class="n">gdef</span><span class="o">.</span><span class="n">GUID</span><span class="o">.</span><span class="n">from_string</span><span class="p">(</span><span class="s2">"42424242-4242-4242-4242-424242424242"</span><span class="p">),</span>
|
||||
<span class="n">dwClientThread</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">current_thread</span><span class="o">.</span><span class="n">tid</span><span class="p">)</span>
|
||||
|
||||
|
||||
<span class="c1"># LOCALTHAT</span>
|
||||
<span class="c1"># Nb fields: 2</span>
|
||||
<span class="c1"># 6.3.9600.17031 -> 6.3.9600.20772</span>
|
||||
<span class="c1"># * 6.3.9600.17031</span>
|
||||
<span class="c1"># * 6.3.9600.17031</span>
|
||||
<span class="c1"># * 6.3.9600.17031</span>
|
||||
<span class="c1"># * 6.3.9600.20772</span>
|
||||
<span class="c1"># Nb fields: 3</span>
|
||||
<span class="c1"># 10.0.18362.900 -> 10.0.18362.1916</span>
|
||||
<span class="c1"># * 10.0.18362.900</span>
|
||||
<span class="c1"># * 10.0.18362.900</span>
|
||||
<span class="c1"># * 10.0.18362.1016</span>
|
||||
<span class="c1"># * 10.0.18362.1916</span>
|
||||
<span class="c1"># Nb fields: 4</span>
|
||||
<span class="c1"># 10.0.10240.16384 -> 10.0.17763.6040</span>
|
||||
<span class="c1"># * 10.0.10240.16384</span>
|
||||
<span class="c1"># * 10.0.10240.16384</span>
|
||||
<span class="c1"># * 10.0.10240.20747</span>
|
||||
<span class="c1"># * 10.0.10586.0</span>
|
||||
<span class="c1"># * 10.0.14393.576</span>
|
||||
<span class="c1"># * 10.0.14393.6451</span>
|
||||
<span class="c1"># * 10.0.14393.7426</span>
|
||||
<span class="c1"># * 10.0.15063.251</span>
|
||||
<span class="c1"># * 10.0.15063.1563</span>
|
||||
<span class="c1"># * 10.0.15063.2500</span>
|
||||
<span class="c1"># * 10.0.15063.2679</span>
|
||||
<span class="c1"># * 10.0.16299.1</span>
|
||||
<span class="c1"># * 10.0.16299.15</span>
|
||||
<span class="c1"># * 10.0.17134.1</span>
|
||||
<span class="c1"># * 10.0.17134.48</span>
|
||||
<span class="c1"># * 10.0.17134.2145</span>
|
||||
<span class="c1"># * 10.0.17134.2145</span>
|
||||
<span class="c1"># * 10.0.17763.1</span>
|
||||
<span class="c1"># * 10.0.17763.2931</span>
|
||||
<span class="c1"># * 10.0.17763.6040</span>
|
||||
<span class="c1"># Nb fields: 5</span>
|
||||
<span class="c1"># 10.0.19039.1 -> 10.0.26100.2454</span>
|
||||
<span class="c1"># * 10.0.19039.1</span>
|
||||
<span class="c1"># * 10.0.19041.84</span>
|
||||
<span class="c1"># * 10.0.19041.4894</span>
|
||||
<span class="c1"># * 10.0.22000.65</span>
|
||||
<span class="c1"># * 10.0.22621.2792</span>
|
||||
<span class="c1"># * 10.0.22621.3958</span>
|
||||
<span class="c1"># * 10.0.22621.4111</span>
|
||||
<span class="c1"># * 10.0.22621.4541</span>
|
||||
<span class="c1"># * 10.0.26100.2454</span>
|
||||
<span class="c1"># * 10.0.26100.2454</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">find_correct_localthat_for_version</span><span class="p">():</span>
|
||||
<span class="n">vmaj</span><span class="p">,</span> <span class="n">vmin</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">system</span><span class="o">.</span><span class="n">version</span>
|
||||
<span class="k">if</span> <span class="p">(</span><span class="n">vmaj</span><span class="p">,</span> <span class="n">vmin</span><span class="p">)</span> <span class="o"><</span> <span class="p">(</span><span class="mi">6</span><span class="p">,</span> <span class="mi">3</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="kc">None</span>
|
||||
<span class="k">elif</span> <span class="p">(</span><span class="n">vmaj</span><span class="p">,</span> <span class="n">vmin</span><span class="p">)</span> <span class="o">==</span> <span class="p">(</span><span class="mi">6</span><span class="p">,</span><span class="mi">3</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">gdef</span><span class="o">.</span><span class="n">LOCALTHAT32_NT_63</span>
|
||||
<span class="k">assert</span> <span class="n">vmaj</span> <span class="o">==</span> <span class="mi">10</span>
|
||||
<span class="n">vnumber</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">system</span><span class="o">.</span><span class="n">get_file_version</span><span class="p">(</span><span class="sa">r</span><span class="s2">"C:\windows\system32\combase.dll"</span><span class="p">)</span>
|
||||
<span class="c1"># Extract version number from combase</span>
|
||||
<span class="c1"># as it was used to find the struct per version</span>
|
||||
<span class="n">build_number</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">vnumber</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"."</span><span class="p">)[</span><span class="mi">2</span><span class="p">])</span>
|
||||
<span class="k">if</span> <span class="n">build_number</span> <span class="o"><=</span> <span class="mi">17763</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">gdef</span><span class="o">.</span><span class="n">LOCALTHAT32_NT_1607</span>
|
||||
<span class="k">elif</span> <span class="n">build_number</span> <span class="o">==</span> <span class="mi">18362</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">gdef</span><span class="o">.</span><span class="n">LOCALTHAT32_10_1903</span>
|
||||
<span class="k">elif</span> <span class="n">build_number</span> <span class="o">>=</span> <span class="mi">19039</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">gdef</span><span class="o">.</span><span class="n">LOCALTHAT32</span>
|
||||
<span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s2">"Unknown LOCALTHAT32 structure for version </span><span class="si">{0}</span><span class="s2">, please share me your combase.dll file"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">windows</span><span class="o">.</span><span class="n">system</span><span class="o">.</span><span class="n">versionstr</span><span class="p">))</span>
|
||||
</pre></div>
|
||||
|
||||
<div class="clearer"></div>
|
||||
@@ -284,7 +446,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.1 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.3 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.rpc.client</a></li>
|
||||
</ul>
|
||||
|
||||
+4
-4
@@ -4,12 +4,12 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>windows.rpc.epmapper — PythonForWindows 1.0.0 documentation</title>
|
||||
<title>windows.rpc.epmapper — PythonForWindows 1.0.2 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="../../../_static/documentation_options.js?v=8d563738"></script>
|
||||
<script src="../../../_static/documentation_options.js?v=1ed6394b"></script>
|
||||
<script src="../../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.2 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.rpc.epmapper</a></li>
|
||||
</ul>
|
||||
@@ -273,7 +273,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.2 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.rpc.epmapper</a></li>
|
||||
</ul>
|
||||
|
||||
+13
-7
@@ -4,12 +4,12 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>windows.rpc.ndr — PythonForWindows 1.0.0 documentation</title>
|
||||
<title>windows.rpc.ndr — PythonForWindows 1.0.3 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="../../../_static/documentation_options.js?v=8d563738"></script>
|
||||
<script src="../../../_static/documentation_options.js?v=baaebd52"></script>
|
||||
<script src="../../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.3 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.rpc.ndr</a></li>
|
||||
</ul>
|
||||
@@ -229,6 +229,8 @@
|
||||
<span class="k">assert</span> <span class="n">size1</span> <span class="o">==</span> <span class="n">size2</span>
|
||||
<span class="k">assert</span> <span class="n">zero</span> <span class="o">==</span> <span class="mi">0</span>
|
||||
<span class="n">s</span> <span class="o">=</span> <span class="n">stream</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="n">size1</span> <span class="o">*</span> <span class="mi">2</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">stream</span><span class="o">.</span><span class="n">use_memoryview</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="nb">bytearray</span><span class="p">(</span><span class="n">s</span><span class="p">)</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="s2">"utf-16-le"</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">s</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="s2">"utf-16-le"</span><span class="p">)</span>
|
||||
|
||||
<span class="nd">@classmethod</span>
|
||||
@@ -652,10 +654,14 @@
|
||||
<a class="viewcode-back" href="../../../rpc.html#windows.rpc.ndr.NdrStream">[docs]</a>
|
||||
<span class="k">class</span> <span class="nc">NdrStream</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""A stream of bytes used for NDR unpacking"""</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">use_memoryview</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">""""""</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">fulldata</span> <span class="o">=</span> <span class="n">data</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">data</span> <span class="o">=</span> <span class="n">data</span>
|
||||
<span class="c1"># self.data = memoryview(data) # FAST but need some code rewrite at some places</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">use_memoryview</span> <span class="o">=</span> <span class="n">use_memoryview</span>
|
||||
<span class="k">if</span> <span class="n">use_memoryview</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">data</span> <span class="o">=</span> <span class="nb">memoryview</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> <span class="c1"># FAST but need some code rewrite at some places</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">data</span> <span class="o">=</span> <span class="n">data</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">partial_unpack</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">format</span><span class="p">):</span>
|
||||
<span class="n">size</span> <span class="o">=</span> <span class="n">struct</span><span class="o">.</span><span class="n">calcsize</span><span class="p">(</span><span class="nb">format</span><span class="p">)</span>
|
||||
@@ -757,7 +763,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.3 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.rpc.ndr</a></li>
|
||||
</ul>
|
||||
|
||||
+4
-4
@@ -4,12 +4,12 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>windows.security — PythonForWindows 1.0.0 documentation</title>
|
||||
<title>windows.security — PythonForWindows 1.0.2 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="../../_static/documentation_options.js?v=8d563738"></script>
|
||||
<script src="../../_static/documentation_options.js?v=1ed6394b"></script>
|
||||
<script src="../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 1.0.2 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.security</a></li>
|
||||
</ul>
|
||||
@@ -1386,7 +1386,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 1.0.2 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../index.html" >Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.security</a></li>
|
||||
</ul>
|
||||
|
||||
+15
-14
@@ -4,12 +4,12 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>windows.syswow64 — PythonForWindows 1.0.0 documentation</title>
|
||||
<title>windows.syswow64 — PythonForWindows 1.0.3 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="../../_static/documentation_options.js?v=8d563738"></script>
|
||||
<script src="../../_static/documentation_options.js?v=baaebd52"></script>
|
||||
<script src="../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 1.0.3 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.syswow64</a></li>
|
||||
</ul>
|
||||
@@ -212,19 +212,20 @@
|
||||
|
||||
<span class="k">def</span> <span class="nf">get_current_process_syswow_peb</span><span class="p">():</span>
|
||||
<span class="n">current_process</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">current_process</span>
|
||||
|
||||
<span class="k">class</span> <span class="nc">CurrentProcessReadSyswow</span><span class="p">(</span><span class="n">process</span><span class="o">.</span><span class="n">Process</span><span class="p">):</span>
|
||||
<span class="n">bitness</span> <span class="o">=</span> <span class="mi">64</span>
|
||||
<span class="k">def</span> <span class="nf">_get_handle</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">winproxy</span><span class="o">.</span><span class="n">OpenProcess</span><span class="p">(</span><span class="n">dwProcessId</span><span class="o">=</span><span class="n">current_process</span><span class="o">.</span><span class="n">pid</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">read_memory</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">addr</span><span class="p">,</span> <span class="n">size</span><span class="p">):</span>
|
||||
<span class="n">buffer_addr</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">create_string_buffer</span><span class="p">(</span><span class="n">size</span><span class="p">)</span>
|
||||
<span class="n">winproxy</span><span class="o">.</span><span class="n">NtWow64ReadVirtualMemory64</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">addr</span><span class="p">,</span> <span class="n">buffer_addr</span><span class="p">,</span> <span class="n">size</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">buffer_addr</span><span class="p">[:]</span>
|
||||
<span class="n">peb_addr</span> <span class="o">=</span> <span class="n">get_current_process_syswow_peb_addr</span><span class="p">()</span>
|
||||
<span class="k">return</span> <span class="n">windows</span><span class="o">.</span><span class="n">winobject</span><span class="o">.</span><span class="n">process</span><span class="o">.</span><span class="n">RemotePEB64</span><span class="p">(</span><span class="n">peb_addr</span><span class="p">,</span> <span class="n">CurrentProcessReadSyswow</span><span class="p">())</span>
|
||||
|
||||
<span class="k">class</span> <span class="nc">CurrentProcessReadSyswow</span><span class="p">(</span><span class="n">process</span><span class="o">.</span><span class="n">Process</span><span class="p">):</span>
|
||||
<span class="n">bitness</span> <span class="o">=</span> <span class="mi">64</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_get_handle</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="c1"># GetCurrentProcess() is not accepted for NtWow64ReadVirtualMemory64 :(</span>
|
||||
<span class="k">return</span> <span class="n">winproxy</span><span class="o">.</span><span class="n">OpenProcess</span><span class="p">(</span><span class="n">dwProcessId</span><span class="o">=</span><span class="n">windows</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">pid</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">read_memory</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">addr</span><span class="p">,</span> <span class="n">size</span><span class="p">):</span>
|
||||
<span class="n">buffer_addr</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">create_string_buffer</span><span class="p">(</span><span class="n">size</span><span class="p">)</span>
|
||||
<span class="n">winproxy</span><span class="o">.</span><span class="n">NtWow64ReadVirtualMemory64</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">addr</span><span class="p">,</span> <span class="n">buffer_addr</span><span class="p">,</span> <span class="n">size</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">buffer_addr</span><span class="p">[:]</span>
|
||||
|
||||
<span class="k">class</span> <span class="nc">ReadSyswow64Process</span><span class="p">(</span><span class="n">process</span><span class="o">.</span><span class="n">Process</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">target</span><span class="p">):</span>
|
||||
@@ -432,7 +433,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 1.0.3 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../index.html" >Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.syswow64</a></li>
|
||||
</ul>
|
||||
|
||||
+4
-4
@@ -4,12 +4,12 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>windows.utils.pythonutils — PythonForWindows 1.0.0 documentation</title>
|
||||
<title>windows.utils.pythonutils — PythonForWindows 1.0.2 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="../../../_static/documentation_options.js?v=8d563738"></script>
|
||||
<script src="../../../_static/documentation_options.js?v=1ed6394b"></script>
|
||||
<script src="../../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.2 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.utils.pythonutils</a></li>
|
||||
</ul>
|
||||
@@ -186,7 +186,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.2 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.utils.pythonutils</a></li>
|
||||
</ul>
|
||||
|
||||
+55
-27
@@ -4,12 +4,12 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>windows.utils.winutils — PythonForWindows 1.0.0 documentation</title>
|
||||
<title>windows.utils.winutils — PythonForWindows 1.0.3 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="../../../_static/documentation_options.js?v=8d563738"></script>
|
||||
<script src="../../../_static/documentation_options.js?v=baaebd52"></script>
|
||||
<script src="../../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.3 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.utils.winutils</a></li>
|
||||
</ul>
|
||||
@@ -75,19 +75,6 @@
|
||||
<span class="k">return</span> <span class="n">mod</span><span class="o">.</span><span class="n">pe</span><span class="o">.</span><span class="n">exports</span><span class="p">[</span><span class="n">func_name</span><span class="p">]</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">is_wow_64</span><span class="p">(</span><span class="n">hProcess</span><span class="p">):</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">fnIsWow64Process</span> <span class="o">=</span> <span class="n">get_func_addr</span><span class="p">(</span><span class="s2">"kernel32.dll"</span><span class="p">,</span> <span class="s2">"IsWow64Process"</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="n">winproxy</span><span class="o">.</span><span class="n">WinproxyError</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="kc">False</span>
|
||||
<span class="n">IsWow64Process</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">WINFUNCTYPE</span><span class="p">(</span><span class="n">BOOL</span><span class="p">,</span> <span class="n">HANDLE</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">BOOL</span><span class="p">))(</span><span class="n">fnIsWow64Process</span><span class="p">)</span>
|
||||
<span class="n">Wow64Process</span> <span class="o">=</span> <span class="n">BOOL</span><span class="p">()</span>
|
||||
<span class="n">res</span> <span class="o">=</span> <span class="n">IsWow64Process</span><span class="p">(</span><span class="n">hProcess</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">byref</span><span class="p">(</span><span class="n">Wow64Process</span><span class="p">))</span>
|
||||
<span class="k">if</span> <span class="n">res</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="nb">bool</span><span class="p">(</span><span class="n">Wow64Process</span><span class="p">)</span>
|
||||
<span class="k">raise</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">WinError</span><span class="p">()</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="create_file_from_handle">
|
||||
<a class="viewcode-back" href="../../../utils.html#windows.utils.create_file_from_handle">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">create_file_from_handle</span><span class="p">(</span><span class="n">handle</span><span class="p">,</span> <span class="n">mode</span><span class="o">=</span><span class="s2">"r"</span><span class="p">):</span>
|
||||
@@ -136,14 +123,35 @@
|
||||
|
||||
<div class="viewcode-block" id="create_process">
|
||||
<a class="viewcode-back" href="../../../utils.html#windows.utils.create_process">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">create_process</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">args</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">dwCreationFlags</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">show_windows</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""A convenient wrapper arround :func:`windows.winproxy.CreateProcessW`"""</span>
|
||||
<span class="k">def</span> <span class="nf">create_process</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">args</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">dwCreationFlags</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">show_windows</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">machine</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""A convenient wrapper arround :func:`windows.winproxy.CreateProcessW`</span>
|
||||
<span class="sd"> ..note:</span>
|
||||
<span class="sd"> The machine param only works starting at vista and should be used on arm64 computer</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">proc_info</span> <span class="o">=</span> <span class="n">PROCESS_INFORMATION</span><span class="p">()</span>
|
||||
<span class="n">StartupInfo</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="n">lpStartupInfo</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">machine</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">buffer</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">create_string_buffer</span><span class="p">(</span><span class="mh">0x100</span><span class="p">)</span>
|
||||
<span class="n">size</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">DWORD64</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">buffer</span><span class="p">))</span>
|
||||
<span class="n">machine</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">WORD</span><span class="p">(</span><span class="n">machine</span><span class="p">)</span>
|
||||
<span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">InitializeProcThreadAttributeList</span><span class="p">(</span><span class="n">buffer</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">size</span><span class="p">)</span>
|
||||
<span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">UpdateProcThreadAttribute</span><span class="p">(</span><span class="n">buffer</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">PROC_THREAD_ATTRIBUTE_MACHINE_TYPE</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">addressof</span><span class="p">(</span><span class="n">machine</span><span class="p">),</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">sizeof</span><span class="p">(</span><span class="n">machine</span><span class="p">),</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
||||
|
||||
<span class="n">startup_infoex</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">STARTUPINFOEXW</span><span class="p">()</span>
|
||||
<span class="n">startup_infoex</span><span class="o">.</span><span class="n">StartupInfo</span><span class="o">.</span><span class="n">cb</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">sizeof</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">STARTUPINFOEXW</span><span class="p">)</span>
|
||||
<span class="n">startup_infoex</span><span class="o">.</span><span class="n">lpAttributeList</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">buffer</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">PVOID</span><span class="p">)</span>
|
||||
<span class="n">StartupInfo</span> <span class="o">=</span> <span class="n">startup_infoex</span><span class="o">.</span><span class="n">StartupInfo</span>
|
||||
|
||||
<span class="n">dwCreationFlags</span> <span class="o">|=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">EXTENDED_STARTUPINFO_PRESENT</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">show_windows</span><span class="p">:</span>
|
||||
<span class="n">StartupInfo</span> <span class="o">=</span> <span class="n">STARTUPINFOW</span><span class="p">()</span>
|
||||
<span class="n">StartupInfo</span><span class="o">.</span><span class="n">cb</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">sizeof</span><span class="p">(</span><span class="n">StartupInfo</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">StartupInfo</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">StartupInfo</span> <span class="o">=</span> <span class="n">STARTUPINFOW</span><span class="p">()</span>
|
||||
<span class="n">StartupInfo</span><span class="o">.</span><span class="n">cb</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">sizeof</span><span class="p">(</span><span class="n">StartupInfo</span><span class="p">)</span>
|
||||
<span class="n">StartupInfo</span><span class="o">.</span><span class="n">dwFlags</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="k">if</span> <span class="n">StartupInfo</span><span class="p">:</span>
|
||||
<span class="n">lpStartupInfo</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">byref</span><span class="p">(</span><span class="n">StartupInfo</span><span class="p">)</span>
|
||||
<span class="n">lpCommandLine</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="nb">bytes</span><span class="p">):</span>
|
||||
@@ -160,6 +168,8 @@
|
||||
<span class="n">dbgprint</span><span class="p">(</span><span class="s2">"CreateProcessW new thread handle </span><span class="si">{:#x}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">proc_info</span><span class="o">.</span><span class="n">hThread</span><span class="p">),</span> <span class="s2">"HANDLE"</span><span class="p">)</span>
|
||||
<span class="n">dbgprint</span><span class="p">(</span><span class="s2">"Automatic close of thread handle </span><span class="si">{:#x}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">proc_info</span><span class="o">.</span><span class="n">hThread</span><span class="p">),</span> <span class="s2">"HANDLE"</span><span class="p">)</span>
|
||||
<span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">CloseHandle</span><span class="p">(</span><span class="n">proc_info</span><span class="o">.</span><span class="n">hThread</span><span class="p">)</span> <span class="c1"># Give access to a WinThread in addition of the WinProcess ?</span>
|
||||
<span class="k">if</span> <span class="n">machine</span><span class="p">:</span>
|
||||
<span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">DeleteProcThreadAttributeList</span><span class="p">(</span><span class="n">buffer</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">windows</span><span class="o">.</span><span class="n">winobject</span><span class="o">.</span><span class="n">process</span><span class="o">.</span><span class="n">WinProcess</span><span class="p">(</span><span class="n">pid</span><span class="o">=</span><span class="n">proc_info</span><span class="o">.</span><span class="n">dwProcessId</span><span class="p">,</span> <span class="n">handle</span><span class="o">=</span><span class="n">proc_info</span><span class="o">.</span><span class="n">hProcess</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
@@ -360,6 +370,16 @@
|
||||
<span class="n">microsecond</span><span class="o">=</span><span class="n">systime</span><span class="o">.</span><span class="n">wMilliseconds</span> <span class="o">*</span> <span class="mi">1000</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">IMAGE_FILE_MACHINE_TO_PROC_ARCH</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="n">gdef</span><span class="o">.</span><span class="n">IMAGE_FILE_MACHINE_I386</span><span class="p">:</span> <span class="n">gdef</span><span class="o">.</span><span class="n">PROCESSOR_ARCHITECTURE_INTEL</span><span class="p">,</span>
|
||||
<span class="n">gdef</span><span class="o">.</span><span class="n">IMAGE_FILE_MACHINE_AMD64</span><span class="p">:</span> <span class="n">gdef</span><span class="o">.</span><span class="n">PROCESSOR_ARCHITECTURE_AMD64</span><span class="p">,</span>
|
||||
<span class="n">gdef</span><span class="o">.</span><span class="n">IMAGE_FILE_MACHINE_ARM64</span><span class="p">:</span> <span class="n">gdef</span><span class="o">.</span><span class="n">PROCESSOR_ARCHITECTURE_ARM64</span><span class="p">,</span>
|
||||
<span class="n">gdef</span><span class="o">.</span><span class="n">IMAGE_FILE_MACHINE_UNKNOWN</span><span class="p">:</span> <span class="n">gdef</span><span class="o">.</span><span class="n">PROCESSOR_ARCHITECTURE_UNKNOWN</span>
|
||||
<span class="p">}</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">image_file_machine_to_processor_architecture</span><span class="p">(</span><span class="n">image_file_machine</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">IMAGE_FILE_MACHINE_TO_PROC_ARCH</span><span class="p">[</span><span class="n">image_file_machine</span><span class="p">]</span>
|
||||
|
||||
<span class="k">class</span> <span class="nc">FixedInteractiveConsole</span><span class="p">(</span><span class="n">code</span><span class="o">.</span><span class="n">InteractiveConsole</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="nf">raw_input</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">prompt</span><span class="o">=</span><span class="s2">">>>"</span><span class="p">):</span>
|
||||
<span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">prompt</span><span class="p">)</span>
|
||||
@@ -620,11 +640,19 @@
|
||||
<span class="k">def</span> <span class="nf">create_file</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">access</span><span class="o">=</span><span class="n">gdef</span><span class="o">.</span><span class="n">GENERIC_READ</span><span class="p">,</span> <span class="n">share</span><span class="o">=</span><span class="n">gdef</span><span class="o">.</span><span class="n">FILE_SHARE_READ</span><span class="p">,</span> <span class="n">security</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">creation</span><span class="o">=</span><span class="n">gdef</span><span class="o">.</span><span class="n">OPEN_EXISTING</span><span class="p">,</span> <span class="n">flags</span><span class="o">=</span><span class="n">gdef</span><span class="o">.</span><span class="n">FILE_ATTRIBUTE_NORMAL</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">CreateFileW</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">access</span><span class="p">,</span> <span class="n">share</span><span class="p">,</span> <span class="n">security</span><span class="p">,</span> <span class="n">creation</span><span class="p">,</span> <span class="n">flags</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">mapfile</span><span class="p">(</span><span class="n">file</span><span class="p">):</span>
|
||||
<span class="n">fhandle</span> <span class="o">=</span> <span class="n">get_handle_from_file</span><span class="p">(</span><span class="n">file</span><span class="p">)</span>
|
||||
<span class="n">h</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">CreateFileMappingA</span><span class="p">(</span><span class="n">fhandle</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="n">PAGE_READONLY</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
||||
<span class="n">addr</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">MapViewOfFile</span><span class="p">(</span><span class="n">h</span><span class="p">,</span> <span class="n">dwDesiredAccess</span><span class="o">=</span><span class="n">FILE_MAP_READ</span><span class="p">,</span> <span class="n">dwNumberOfBytesToMap</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">addr</span>
|
||||
<span class="c1">#def mapfile(file):</span>
|
||||
<span class="c1"># fhandle = get_handle_from_file(file)</span>
|
||||
<span class="c1"># h = windows.winproxy.CreateFileMappingA(fhandle, None, PAGE_READONLY, 0, 1, None)</span>
|
||||
<span class="c1"># addr = windows.winproxy.MapViewOfFile(h, dwDesiredAccess=FILE_MAP_READ, dwNumberOfBytesToMap=1)</span>
|
||||
<span class="c1"># return addr</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">get_system_info</span><span class="p">(</span><span class="n">native</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="n">res</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">SYSTEM_INFO</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">native</span><span class="p">:</span>
|
||||
<span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">GetNativeSystemInfo</span><span class="p">(</span><span class="n">res</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">GetSystemInfo</span><span class="p">(</span><span class="n">res</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">res</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">decompress_buffer</span><span class="p">(</span><span class="n">buffer</span><span class="p">,</span> <span class="n">comptype</span><span class="o">=</span><span class="n">gdef</span><span class="o">.</span><span class="n">COMPRESSION_FORMAT_LZNT1</span><span class="p">,</span> <span class="n">uncompress_size</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">uncompress_size</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
@@ -700,7 +728,7 @@
|
||||
<div class="viewcode-block" id="DisableWow64FsRedirection">
|
||||
<a class="viewcode-back" href="../../../utils.html#windows.utils.DisableWow64FsRedirection">[docs]</a>
|
||||
<span class="k">class</span> <span class="nc">DisableWow64FsRedirection</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="w"> </span><span class="sa">r</span><span class="sd">"""</span>
|
||||
<span class="sd"> A context manager that disable the SysWow64 Filesystem Redirection ::</span>
|
||||
|
||||
<span class="sd"> if is_process_32_bits:</span>
|
||||
@@ -752,7 +780,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.3 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.utils.winutils</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -4,12 +4,12 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>windows.winobject.apisetmap — PythonForWindows 1.0.0 documentation</title>
|
||||
<title>windows.winobject.apisetmap — PythonForWindows 1.0.2 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="../../../_static/documentation_options.js?v=8d563738"></script>
|
||||
<script src="../../../_static/documentation_options.js?v=1ed6394b"></script>
|
||||
<script src="../../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.2 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.winobject.apisetmap</a></li>
|
||||
</ul>
|
||||
@@ -264,7 +264,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.2 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.winobject.apisetmap</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -4,12 +4,12 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>windows.winobject.device_manager — PythonForWindows 1.0.0 documentation</title>
|
||||
<title>windows.winobject.device_manager — PythonForWindows 1.0.2 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="../../../_static/documentation_options.js?v=8d563738"></script>
|
||||
<script src="../../../_static/documentation_options.js?v=1ed6394b"></script>
|
||||
<script src="../../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.2 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.winobject.device_manager</a></li>
|
||||
</ul>
|
||||
@@ -638,7 +638,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.2 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.winobject.device_manager</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -4,12 +4,12 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>windows.winobject.event_log — PythonForWindows 1.0.0 documentation</title>
|
||||
<title>windows.winobject.event_log — PythonForWindows 1.0.3 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="../../../_static/documentation_options.js?v=8d563738"></script>
|
||||
<script src="../../../_static/documentation_options.js?v=baaebd52"></script>
|
||||
<script src="../../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.3 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.winobject.event_log</a></li>
|
||||
</ul>
|
||||
@@ -437,6 +437,7 @@
|
||||
<span class="n">gdef</span><span class="o">.</span><span class="n">EvtVarTypeUInt16</span> <span class="o">+</span> <span class="n">gdef</span><span class="o">.</span><span class="n">EVT_VARIANT_TYPE_ARRAY</span> <span class="p">:</span> <span class="s2">"UInt16Arr"</span><span class="p">,</span>
|
||||
<span class="n">gdef</span><span class="o">.</span><span class="n">EvtVarTypeUInt32</span> <span class="o">+</span> <span class="n">gdef</span><span class="o">.</span><span class="n">EVT_VARIANT_TYPE_ARRAY</span> <span class="p">:</span> <span class="s2">"UInt32Arr"</span><span class="p">,</span>
|
||||
<span class="n">gdef</span><span class="o">.</span><span class="n">EvtVarTypeUInt64</span> <span class="o">+</span> <span class="n">gdef</span><span class="o">.</span><span class="n">EVT_VARIANT_TYPE_ARRAY</span> <span class="p">:</span> <span class="s2">"UInt64Arr"</span><span class="p">,</span>
|
||||
<span class="n">gdef</span><span class="o">.</span><span class="n">EvtVarTypeHexInt64</span> <span class="o">+</span> <span class="n">gdef</span><span class="o">.</span><span class="n">EVT_VARIANT_TYPE_ARRAY</span> <span class="p">:</span> <span class="s2">"UInt64Arr"</span><span class="p">,</span>
|
||||
<span class="p">}</span>
|
||||
<span class="n">NoneValue</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
|
||||
@@ -1278,7 +1279,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.3 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.winobject.event_log</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -4,12 +4,12 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>windows.winobject.event_trace — PythonForWindows 1.0.0 documentation</title>
|
||||
<title>windows.winobject.event_trace — PythonForWindows 1.0.2 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="../../../_static/documentation_options.js?v=8d563738"></script>
|
||||
<script src="../../../_static/documentation_options.js?v=1ed6394b"></script>
|
||||
<script src="../../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.2 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.winobject.event_trace</a></li>
|
||||
</ul>
|
||||
@@ -556,7 +556,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.2 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.winobject.event_trace</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -4,12 +4,12 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>windows.winobject.exception — PythonForWindows 1.0.0 documentation</title>
|
||||
<title>windows.winobject.exception — PythonForWindows 1.0.2 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="../../../_static/documentation_options.js?v=8d563738"></script>
|
||||
<script src="../../../_static/documentation_options.js?v=1ed6394b"></script>
|
||||
<script src="../../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.2 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.winobject.exception</a></li>
|
||||
</ul>
|
||||
@@ -485,7 +485,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.2 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.winobject.exception</a></li>
|
||||
</ul>
|
||||
|
||||
+6
-4
@@ -4,12 +4,12 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>windows.winobject.handle — PythonForWindows 1.0.0 documentation</title>
|
||||
<title>windows.winobject.handle — PythonForWindows 1.0.3 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="../../../_static/documentation_options.js?v=8d563738"></script>
|
||||
<script src="../../../_static/documentation_options.js?v=baaebd52"></script>
|
||||
<script src="../../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.3 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.winobject.handle</a></li>
|
||||
</ul>
|
||||
@@ -186,6 +186,8 @@
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">enumerate_handles_syswow64</span><span class="p">():</span>
|
||||
<span class="k">if</span> <span class="n">windows</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">_is_x86_on_arm64</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s2">"Crossing heaven gate x86 -> arm64 not implemented"</span><span class="p">)</span>
|
||||
<span class="n">size_needed</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">ULONG</span><span class="p">()</span>
|
||||
<span class="c1"># Should at least be sizeof(gdef.SYSTEM_HANDLE_INFORMATION)</span>
|
||||
<span class="n">tmp_buffer</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">BUFFER</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">SYSTEM_HANDLE_INFORMATION64</span><span class="p">)()</span>
|
||||
@@ -267,7 +269,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.3 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.winobject.handle</a></li>
|
||||
</ul>
|
||||
|
||||
+4
-4
@@ -4,12 +4,12 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>windows.winobject.network — PythonForWindows 1.0.0 documentation</title>
|
||||
<title>windows.winobject.network — PythonForWindows 1.0.2 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="../../../_static/documentation_options.js?v=8d563738"></script>
|
||||
<script src="../../../_static/documentation_options.js?v=1ed6394b"></script>
|
||||
<script src="../../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.2 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.winobject.network</a></li>
|
||||
</ul>
|
||||
@@ -533,7 +533,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.2 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.winobject.network</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -4,12 +4,12 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>windows.winobject.object_manager — PythonForWindows 1.0.0 documentation</title>
|
||||
<title>windows.winobject.object_manager — PythonForWindows 1.0.3 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="../../../_static/documentation_options.js?v=8d563738"></script>
|
||||
<script src="../../../_static/documentation_options.js?v=baaebd52"></script>
|
||||
<script src="../../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.3 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.winobject.object_manager</a></li>
|
||||
</ul>
|
||||
@@ -224,13 +224,13 @@
|
||||
<div class="viewcode-block" id="KernelObject.__getitem__">
|
||||
<a class="viewcode-back" href="../../../object_manager.html#windows.winobject.object_manager.KernelObject.__getitem__">[docs]</a>
|
||||
<span class="k">def</span> <span class="fm">__getitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Query object ``name`` from the directory, split and subquery on ``\\``::</span>
|
||||
<span class="w"> </span><span class="sa">r</span><span class="sd">"""Query object ``name`` from the directory, split and subquery on ``\``::</span>
|
||||
|
||||
<span class="sd"> >>> obj</span>
|
||||
<span class="sd"> <KernelObject "\Windows" (type="Directory")></span>
|
||||
<span class="sd"> >>> obj["WindowStations"]["WinSta0"]</span>
|
||||
<span class="sd"> <KernelObject "\Windows\WindowStations" (type="Directory")></span>
|
||||
<span class="sd"> >>> obj["WindowStations\\WinSta0"]</span>
|
||||
<span class="sd"> >>> obj[r"WindowStations\\WinSta0"]</span>
|
||||
<span class="sd"> <KernelObject "\Windows\WindowStations" (type="Directory")></span>
|
||||
|
||||
<span class="sd"> :rtype: :class:`KernelObject`</span>
|
||||
@@ -317,7 +317,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.3 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.winobject.object_manager</a></li>
|
||||
</ul>
|
||||
|
||||
+211
-106
@@ -4,12 +4,12 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>windows.winobject.process — PythonForWindows 1.0.0 documentation</title>
|
||||
<title>windows.winobject.process — PythonForWindows 1.0.3 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="../../../_static/documentation_options.js?v=8d563738"></script>
|
||||
<script src="../../../_static/documentation_options.js?v=baaebd52"></script>
|
||||
<script src="../../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.3 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.winobject.process</a></li>
|
||||
</ul>
|
||||
@@ -51,6 +51,7 @@
|
||||
<span class="kn">import</span> <span class="nn">windows</span>
|
||||
<span class="kn">import</span> <span class="nn">windows.native_exec.simple_x86</span> <span class="k">as</span> <span class="nn">x86</span>
|
||||
<span class="kn">import</span> <span class="nn">windows.native_exec.simple_x64</span> <span class="k">as</span> <span class="nn">x64</span>
|
||||
<span class="kn">import</span> <span class="nn">windows.native_exec.simple_arm64</span> <span class="k">as</span> <span class="nn">arm64</span>
|
||||
<span class="kn">import</span> <span class="nn">windows.remotectypes</span> <span class="k">as</span> <span class="nn">rctypes</span>
|
||||
<span class="kn">import</span> <span class="nn">windows.generated_def</span> <span class="k">as</span> <span class="nn">gdef</span>
|
||||
|
||||
@@ -106,27 +107,82 @@
|
||||
|
||||
|
||||
<span class="k">class</span> <span class="nc">Process</span><span class="p">(</span><span class="n">utils</span><span class="o">.</span><span class="n">AutoHandle</span><span class="p">):</span>
|
||||
<span class="nd">@utils</span><span class="o">.</span><span class="n">fixedpropety</span>
|
||||
<span class="nd">@utils</span><span class="o">.</span><span class="n">fixedproperty</span>
|
||||
<span class="k">def</span> <span class="nf">is_wow_64</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""``True`` if the process is a SysWow64 process (32bit process on 64bits system).</span>
|
||||
|
||||
<span class="sd"> :type: :class:`bool`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="c1"># return utils.is_wow_64(self.handle)</span>
|
||||
<span class="k">return</span> <span class="n">utils</span><span class="o">.</span><span class="n">is_wow_64</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">limited_handle</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">is_implemented</span><span class="p">(</span><span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">IsWow64Process</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="kc">False</span>
|
||||
<span class="n">Wow64Process</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">BOOL</span><span class="p">()</span>
|
||||
<span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">IsWow64Process</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">Wow64Process</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="nb">bool</span><span class="p">(</span><span class="n">Wow64Process</span><span class="p">)</span>
|
||||
|
||||
<span class="nd">@utils</span><span class="o">.</span><span class="n">fixedpropety</span>
|
||||
|
||||
|
||||
<span class="nd">@utils</span><span class="o">.</span><span class="n">fixedproperty</span>
|
||||
<span class="k">def</span> <span class="nf">is_wow_64_2</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">is_implemented</span><span class="p">(</span><span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">IsWow64Process2</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span>
|
||||
<span class="n">processMachine</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">USHORT</span><span class="p">()</span>
|
||||
<span class="n">nativeMachine</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">USHORT</span><span class="p">()</span>
|
||||
<span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">IsWow64Process2</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">processMachine</span><span class="p">,</span> <span class="n">nativeMachine</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">IMAGE_FILE_MACHINE_MAPPER</span><span class="p">[</span><span class="n">processMachine</span><span class="o">.</span><span class="n">value</span><span class="p">],</span>
|
||||
<span class="n">gdef</span><span class="o">.</span><span class="n">IMAGE_FILE_MACHINE_MAPPER</span><span class="p">[</span><span class="n">nativeMachine</span><span class="o">.</span><span class="n">value</span><span class="p">])</span>
|
||||
|
||||
|
||||
<span class="nd">@utils</span><span class="o">.</span><span class="n">fixedproperty</span>
|
||||
<span class="k">def</span> <span class="nf">bitness</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""The bitness of the process</span>
|
||||
|
||||
<span class="sd"> :returns: :class:`int` -- 32 or 64</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="n">windows</span><span class="o">.</span><span class="n">system</span><span class="o">.</span><span class="n">bitness</span> <span class="o">==</span> <span class="mi">32</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="mi">32</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_wow_64</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">windows</span><span class="o">.</span><span class="n">system</span><span class="o">.</span><span class="n">bitness</span> <span class="o">==</span> <span class="mi">32</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_wow_64</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="mi">32</span>
|
||||
<span class="k">return</span> <span class="mi">64</span>
|
||||
|
||||
<span class="nd">@utils</span><span class="o">.</span><span class="n">fixedproperty</span>
|
||||
<span class="k">def</span> <span class="nf">architecture</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="c1"># Syswow2 will exactly tell us the architecture</span>
|
||||
<span class="k">if</span> <span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">is_implemented</span><span class="p">(</span><span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">IsWow64Process2</span><span class="p">):</span>
|
||||
<span class="n">process_machine</span><span class="p">,</span> <span class="n">native_machine</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_wow_64_2</span>
|
||||
<span class="k">if</span> <span class="n">process_machine</span> <span class="o">!=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">IMAGE_FILE_MACHINE_UNKNOWN</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">process_machine</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">windows</span><span class="o">.</span><span class="n">system</span><span class="o">.</span><span class="n">architecture</span> <span class="o">==</span> <span class="n">gdef</span><span class="o">.</span><span class="n">PROCESSOR_ARCHITECTURE_ARM64</span><span class="p">:</span>
|
||||
<span class="c1"># May be ARM64 or AMD64 as X64TA64 is not considered WOW64</span>
|
||||
<span class="c1"># ProcessMachineTypeInfo is from build 22000</span>
|
||||
<span class="c1"># What if not implemented ? parse target main binary PE ?</span>
|
||||
<span class="n">machine_archi</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">PROCESS_MACHINE_INFORMATION</span><span class="p">()</span>
|
||||
<span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">GetProcessInformation</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">ProcessMachineTypeInfo</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">byref</span><span class="p">(</span><span class="n">machine_archi</span><span class="p">),</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">sizeof</span><span class="p">(</span><span class="n">machine_archi</span><span class="p">))</span>
|
||||
<span class="k">return</span> <span class="n">gdef</span><span class="o">.</span><span class="n">IMAGE_FILE_MACHINE_MAPPER</span><span class="p">[</span><span class="n">machine_archi</span><span class="o">.</span><span class="n">ProcessMachine</span><span class="p">]</span>
|
||||
|
||||
<span class="c1"># No IsWow64Process2 -> No ARM</span>
|
||||
<span class="c1"># So its up on x86 -> x64 based on process bitness</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">bitness</span> <span class="o">==</span> <span class="mi">32</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">gdef</span><span class="o">.</span><span class="n">IMAGE_FILE_MACHINE_I386</span>
|
||||
<span class="k">return</span> <span class="n">gdef</span><span class="o">.</span><span class="n">IMAGE_FILE_MACHINE_AMD64</span>
|
||||
|
||||
<span class="nd">@utils</span><span class="o">.</span><span class="n">fixedproperty</span>
|
||||
<span class="k">def</span> <span class="nf">_is_x86_on_arm64</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="p">(</span><span class="n">windows</span><span class="o">.</span><span class="n">system</span><span class="o">.</span><span class="n">architecture</span> <span class="o">==</span> <span class="n">gdef</span><span class="o">.</span><span class="n">PROCESSOR_ARCHITECTURE_ARM64</span> <span class="ow">and</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">architecture</span> <span class="o">==</span> <span class="n">gdef</span><span class="o">.</span><span class="n">IMAGE_FILE_MACHINE_I386</span><span class="p">)</span>
|
||||
|
||||
<span class="nd">@utils</span><span class="o">.</span><span class="n">fixedproperty</span>
|
||||
<span class="k">def</span> <span class="nf">_is_x86_on_x64</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="p">(</span><span class="n">windows</span><span class="o">.</span><span class="n">system</span><span class="o">.</span><span class="n">architecture</span> <span class="o">==</span> <span class="n">gdef</span><span class="o">.</span><span class="n">PROCESSOR_ARCHITECTURE_AMD64</span> <span class="ow">and</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">architecture</span> <span class="o">==</span> <span class="n">gdef</span><span class="o">.</span><span class="n">IMAGE_FILE_MACHINE_I386</span><span class="p">)</span>
|
||||
|
||||
<span class="nd">@utils</span><span class="o">.</span><span class="n">fixedproperty</span>
|
||||
<span class="k">def</span> <span class="nf">_is_native_architecture</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="p">((</span><span class="n">windows</span><span class="o">.</span><span class="n">system</span><span class="o">.</span><span class="n">architecture</span> <span class="o">==</span> <span class="n">gdef</span><span class="o">.</span><span class="n">PROCESSOR_ARCHITECTURE_INTEL</span> <span class="ow">and</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">architecture</span> <span class="o">==</span> <span class="n">gdef</span><span class="o">.</span><span class="n">IMAGE_FILE_MACHINE_I386</span><span class="p">)</span> <span class="ow">or</span>
|
||||
<span class="p">(</span><span class="n">windows</span><span class="o">.</span><span class="n">system</span><span class="o">.</span><span class="n">architecture</span> <span class="o">==</span> <span class="n">gdef</span><span class="o">.</span><span class="n">PROCESSOR_ARCHITECTURE_AMD64</span> <span class="ow">and</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">architecture</span> <span class="o">==</span> <span class="n">gdef</span><span class="o">.</span><span class="n">IMAGE_FILE_MACHINE_AMD64</span><span class="p">)</span> <span class="ow">or</span>
|
||||
<span class="p">(</span><span class="n">windows</span><span class="o">.</span><span class="n">system</span><span class="o">.</span><span class="n">architecture</span> <span class="o">==</span> <span class="n">gdef</span><span class="o">.</span><span class="n">PROCESSOR_ARCHITECTURE_ARM64</span> <span class="ow">and</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">architecture</span> <span class="o">==</span> <span class="n">gdef</span><span class="o">.</span><span class="n">IMAGE_FILE_MACHINE_ARM64</span><span class="p">))</span>
|
||||
|
||||
<span class="nd">@utils</span><span class="o">.</span><span class="n">fixedpropety</span>
|
||||
<span class="k">def</span> <span class="nf">limited_handle</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">windows</span><span class="o">.</span><span class="n">system</span><span class="o">.</span><span class="n">version</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o"><=</span> <span class="mi">5</span><span class="p">:</span>
|
||||
@@ -134,14 +190,26 @@
|
||||
<span class="k">return</span> <span class="n">winproxy</span><span class="o">.</span><span class="n">OpenProcess</span><span class="p">(</span><span class="n">PROCESS_QUERY_INFORMATION</span><span class="p">,</span> <span class="n">dwProcessId</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">pid</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">winproxy</span><span class="o">.</span><span class="n">OpenProcess</span><span class="p">(</span><span class="n">PROCESS_QUERY_LIMITED_INFORMATION</span><span class="p">,</span> <span class="n">dwProcessId</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">pid</span><span class="p">)</span>
|
||||
|
||||
<span class="nd">@utils</span><span class="o">.</span><span class="n">fixedproperty</span>
|
||||
<span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Name of the process</span>
|
||||
|
||||
<span class="nd">@utils</span><span class="o">.</span><span class="n">fixedpropety</span>
|
||||
<span class="sd"> :type: :class:`str`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">buffer</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">create_unicode_buffer</span><span class="p">(</span><span class="mh">0x1024</span><span class="p">)</span>
|
||||
<span class="n">rsize</span> <span class="o">=</span> <span class="n">winproxy</span><span class="o">.</span><span class="n">GetProcessImageFileNameW</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">limited_handle</span><span class="p">,</span> <span class="n">buffer</span><span class="p">)</span>
|
||||
<span class="c1"># GetProcessImageFileNameW returns the fullpath</span>
|
||||
<span class="k">return</span> <span class="n">buffer</span><span class="p">[:</span><span class="n">rsize</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"</span><span class="se">\\</span><span class="s2">"</span><span class="p">)[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
|
||||
|
||||
<span class="nd">@utils</span><span class="o">.</span><span class="n">fixedproperty</span>
|
||||
<span class="k">def</span> <span class="nf">ppid</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Parent Process ID</span>
|
||||
|
||||
<span class="sd"> :type: :class:`int`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="n">windows</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">bitness</span> <span class="o">==</span> <span class="mi">32</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">bitness</span> <span class="o">==</span> <span class="mi">64</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">windows</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">_is_x86_on_arm64</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s2">"Crossing heaven gate x86 -> arm64 not implemented"</span><span class="p">)</span>
|
||||
<span class="n">xtype</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">remotectypes</span><span class="o">.</span><span class="n">transform_type_to_remote64bits</span><span class="p">(</span><span class="n">PROCESS_BASIC_INFORMATION</span><span class="p">)</span>
|
||||
<span class="c1"># Fuck-it <3</span>
|
||||
<span class="n">data</span> <span class="o">=</span> <span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_char</span> <span class="o">*</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">sizeof</span><span class="p">(</span><span class="n">xtype</span><span class="p">))()</span>
|
||||
@@ -212,6 +280,8 @@
|
||||
<span class="k">def</span> <span class="nf">virtual_protect</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">addr</span><span class="p">,</span> <span class="n">size</span><span class="p">,</span> <span class="n">protect</span><span class="p">,</span> <span class="n">old_protect</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Change the access right of one or more page of the process"""</span>
|
||||
<span class="k">if</span> <span class="n">windows</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">bitness</span> <span class="o">==</span> <span class="mi">32</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">bitness</span> <span class="o">==</span> <span class="mi">64</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">windows</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">_is_x86_on_arm64</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s2">"Crossing heaven gate x86 -> arm64 not implemented"</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">size</span> <span class="o">&</span> <span class="mh">0x0fff</span><span class="p">:</span>
|
||||
<span class="n">size</span> <span class="o">=</span> <span class="p">((</span><span class="n">size</span> <span class="o">>></span> <span class="mi">12</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o"><<</span> <span class="mi">12</span>
|
||||
<span class="k">if</span> <span class="n">old_protect</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
@@ -242,6 +312,8 @@
|
||||
<span class="sd"> :rtype: :class:`~windows.generated_def.winstructs.MEMORY_BASIC_INFORMATION`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="n">windows</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">bitness</span> <span class="o">==</span> <span class="mi">32</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">bitness</span> <span class="o">==</span> <span class="mi">64</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">windows</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">_is_x86_on_arm64</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s2">"Crossing heaven gate x86 -> arm64 not implemented"</span><span class="p">)</span>
|
||||
<span class="n">res</span> <span class="o">=</span> <span class="n">MEMORY_BASIC_INFORMATION64</span><span class="p">()</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">v</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">syswow64</span><span class="o">.</span><span class="n">NtQueryVirtualMemory_32_to_64</span><span class="p">(</span><span class="n">ProcessHandle</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">BaseAddress</span><span class="o">=</span><span class="n">addr</span><span class="p">,</span> <span class="n">MemoryInformationClass</span><span class="o">=</span><span class="n">MemoryBasicInformation</span><span class="p">,</span> <span class="n">MemoryInformation</span><span class="o">=</span><span class="n">res</span><span class="p">)</span>
|
||||
@@ -322,6 +394,8 @@
|
||||
<span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">data</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">info_array</span><span class="p">):</span>
|
||||
<span class="n">info_array</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">VirtualAddress</span> <span class="o">=</span> <span class="n">addresses</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="n">windows</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">bitness</span> <span class="o">==</span> <span class="mi">32</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">bitness</span> <span class="o">==</span> <span class="mi">64</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">windows</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">_is_x86_on_arm64</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s2">"Crossing heaven gate x86 -> arm64 not implemented"</span><span class="p">)</span>
|
||||
<span class="n">windows</span><span class="o">.</span><span class="n">syswow64</span><span class="o">.</span><span class="n">NtQueryVirtualMemory_32_to_64</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">MemoryWorkingSetListEx</span><span class="p">,</span> <span class="n">info_array</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">winproxy</span><span class="o">.</span><span class="n">QueryWorkingSetEx</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">byref</span><span class="p">(</span><span class="n">info_array</span><span class="p">),</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">sizeof</span><span class="p">(</span><span class="n">info_array</span><span class="p">))</span>
|
||||
@@ -552,11 +626,12 @@
|
||||
<span class="k">return</span> <span class="p">[</span><span class="n">h</span> <span class="k">for</span> <span class="n">h</span> <span class="ow">in</span> <span class="n">windows</span><span class="o">.</span><span class="n">system</span><span class="o">.</span><span class="n">handles</span> <span class="k">if</span> <span class="n">h</span><span class="o">.</span><span class="n">dwProcessId</span> <span class="o">==</span> <span class="n">pid</span><span class="p">]</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="nb">super</span><span class="p">(</span><span class="n">Process</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__del__</span><span class="p">()</span>
|
||||
<span class="c1"># Same logic that AutoHandle.__del__ for Process.limited_handle</span>
|
||||
<span class="c1"># Assert that Process inherit AutoHandle</span>
|
||||
<span class="c1"># sys.path is not None -> check if python shutdown</span>
|
||||
<span class="k">if</span> <span class="n">sys</span><span class="o">.</span><span class="n">path</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s2">"_limited_handle"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_limited_handle</span><span class="p">:</span>
|
||||
<span class="c1"># Same logic that AutoHandle.__del__ for Process.limited_handle</span>
|
||||
<span class="c1"># Assert that Process inherit AutoHandle</span>
|
||||
<span class="c1"># Call super after check as Process could be None during destruction</span>
|
||||
<span class="nb">super</span><span class="p">(</span><span class="n">Process</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__del__</span><span class="p">()</span>
|
||||
<span class="c1"># Prevent some bug where dbgprint might be None when __del__ is called in a closing process</span>
|
||||
<span class="c1"># This line is bad -> it reopens a handle closed by 'super(Process, self).__del__()' ._.</span>
|
||||
<span class="n">dbgprint</span><span class="p">(</span><span class="s2">"Closing limited handle </span><span class="si">{0}</span><span class="s2"> for </span><span class="si">{1}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">hex</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_limited_handle</span><span class="p">),</span> <span class="bp">self</span><span class="p">),</span> <span class="s2">"HANDLE"</span><span class="p">)</span> <span class="k">if</span> <span class="n">dbgprint</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="kc">None</span>
|
||||
@@ -603,7 +678,14 @@
|
||||
<a class="viewcode-back" href="../../../process.html#windows.winobject.process.CurrentThread">[docs]</a>
|
||||
<span class="k">class</span> <span class="nc">CurrentThread</span><span class="p">(</span><span class="n">Thread</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""The current thread"""</span>
|
||||
<span class="nd">@property</span> <span class="c1">#It's not a fixedpropety because executing thread might change</span>
|
||||
|
||||
<span class="n">get_teb_code_by_architecture</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="n">gdef</span><span class="o">.</span><span class="n">IMAGE_FILE_MACHINE_I386</span><span class="p">:</span> <span class="n">x86</span><span class="o">.</span><span class="n">assemble</span><span class="p">(</span><span class="s2">"mov eax, fs:[0x18]; ret"</span><span class="p">),</span>
|
||||
<span class="n">gdef</span><span class="o">.</span><span class="n">IMAGE_FILE_MACHINE_AMD64</span><span class="p">:</span> <span class="n">x64</span><span class="o">.</span><span class="n">assemble</span><span class="p">(</span><span class="s2">"mov rax, gs:[0x30]; ret"</span><span class="p">),</span>
|
||||
<span class="n">gdef</span><span class="o">.</span><span class="n">IMAGE_FILE_MACHINE_ARM64</span><span class="p">:</span> <span class="n">arm64</span><span class="o">.</span><span class="n">assemble</span><span class="p">(</span><span class="s2">"mov x0, x18; ret"</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
|
||||
<span class="nd">@property</span> <span class="c1">#It's not a fixedproperty because executing thread might change</span>
|
||||
<span class="k">def</span> <span class="nf">tid</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Thread ID</span>
|
||||
|
||||
@@ -611,6 +693,15 @@
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="n">winproxy</span><span class="o">.</span><span class="n">GetCurrentThreadId</span><span class="p">()</span>
|
||||
|
||||
<span class="nd">@property</span> <span class="c1">#It's not a fixedproperty because executing thread might change</span>
|
||||
<span class="k">def</span> <span class="nf">teb_base</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="n">get_teb_base_code</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_teb_code_by_architecture</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">owner</span><span class="o">.</span><span class="n">architecture</span><span class="p">]</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">owner</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="n">get_teb_base_code</span><span class="p">)</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">teb</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">TEB</span><span class="o">.</span><span class="n">from_address</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">teb_base</span><span class="p">)</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">owner</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""The current process</span>
|
||||
@@ -632,8 +723,6 @@
|
||||
<span class="k">return</span> <span class="n">winproxy</span><span class="o">.</span><span class="n">ExitThread</span><span class="p">(</span><span class="n">code</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="viewcode-block" id="CurrentThread.wait">
|
||||
<a class="viewcode-back" href="../../../process.html#windows.winobject.process.CurrentThread.wait">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">wait</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="n">INFINITE</span><span class="p">):</span>
|
||||
@@ -647,37 +736,12 @@
|
||||
<a class="viewcode-back" href="../../../process.html#windows.winobject.process.CurrentProcess">[docs]</a>
|
||||
<span class="k">class</span> <span class="nc">CurrentProcess</span><span class="p">(</span><span class="n">Process</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""The current process"""</span>
|
||||
<span class="n">get_peb</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
|
||||
<span class="n">get_peb_32_code</span> <span class="o">=</span> <span class="n">x86</span><span class="o">.</span><span class="n">MultipleInstr</span><span class="p">()</span>
|
||||
<span class="n">get_peb_32_code</span> <span class="o">+=</span> <span class="n">x86</span><span class="o">.</span><span class="n">Mov</span><span class="p">(</span><span class="s1">'EAX'</span><span class="p">,</span> <span class="n">x86</span><span class="o">.</span><span class="n">mem</span><span class="p">(</span><span class="s1">'fs:[0x30]'</span><span class="p">))</span>
|
||||
<span class="n">get_peb_32_code</span> <span class="o">+=</span> <span class="n">x86</span><span class="o">.</span><span class="n">Ret</span><span class="p">()</span>
|
||||
<span class="n">get_peb_32_code</span> <span class="o">=</span> <span class="n">get_peb_32_code</span><span class="o">.</span><span class="n">get_code</span><span class="p">()</span>
|
||||
|
||||
<span class="n">get_peb_64_code</span> <span class="o">=</span> <span class="n">x64</span><span class="o">.</span><span class="n">MultipleInstr</span><span class="p">()</span>
|
||||
<span class="n">get_peb_64_code</span> <span class="o">+=</span> <span class="n">x64</span><span class="o">.</span><span class="n">Mov</span><span class="p">(</span><span class="s1">'RAX'</span><span class="p">,</span> <span class="n">x64</span><span class="o">.</span><span class="n">mem</span><span class="p">(</span><span class="s1">'gs:[0x60]'</span><span class="p">))</span>
|
||||
<span class="n">get_peb_64_code</span> <span class="o">+=</span> <span class="n">x64</span><span class="o">.</span><span class="n">Ret</span><span class="p">()</span>
|
||||
<span class="n">get_peb_64_code</span> <span class="o">=</span> <span class="n">get_peb_64_code</span><span class="o">.</span><span class="n">get_code</span><span class="p">()</span>
|
||||
|
||||
<span class="n">allocator</span> <span class="o">=</span> <span class="n">native_exec</span><span class="o">.</span><span class="n">native_function</span><span class="o">.</span><span class="n">allocator</span>
|
||||
|
||||
<span class="n">name</span> <span class="o">=</span> <span class="s2">"CurrentProcess"</span> <span class="c1"># Used by Winthread for __repr__</span>
|
||||
|
||||
<span class="c1"># Use RtlGetCurrentPeb ?</span>
|
||||
<span class="k">def</span> <span class="nf">get_peb_builtin</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_peb</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_peb</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">bitness</span> <span class="o">==</span> <span class="mi">32</span><span class="p">:</span>
|
||||
<span class="n">get_peb</span> <span class="o">=</span> <span class="n">native_exec</span><span class="o">.</span><span class="n">create_function</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">get_peb_32_code</span><span class="p">,</span> <span class="p">[</span><span class="n">PVOID</span><span class="p">])</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">get_peb</span> <span class="o">=</span> <span class="n">native_exec</span><span class="o">.</span><span class="n">create_function</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">get_peb_64_code</span><span class="p">,</span> <span class="p">[</span><span class="n">PVOID</span><span class="p">])</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_peb</span> <span class="o">=</span> <span class="n">get_peb</span>
|
||||
<span class="k">return</span> <span class="n">get_peb</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_get_handle</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">winproxy</span><span class="o">.</span><span class="n">GetCurrentProcess</span><span class="p">()</span>
|
||||
|
||||
<span class="nd">@utils</span><span class="o">.</span><span class="n">fixedpropety</span>
|
||||
<span class="nd">@utils</span><span class="o">.</span><span class="n">fixedproperty</span>
|
||||
<span class="k">def</span> <span class="nf">limited_handle</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">winproxy</span><span class="o">.</span><span class="n">GetCurrentProcess</span><span class="p">()</span>
|
||||
|
||||
@@ -693,33 +757,32 @@
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="n">os</span><span class="o">.</span><span class="n">getpid</span><span class="p">()</span>
|
||||
|
||||
<span class="nd">@utils</span><span class="o">.</span><span class="n">fixedpropety</span> <span class="c1"># leave it has fixed property as we don't care if CurrentProcess is never collected</span>
|
||||
<span class="nd">@utils</span><span class="o">.</span><span class="n">fixedproperty</span> <span class="c1"># leave it has fixed property as we don't care if CurrentProcess is never collected</span>
|
||||
<span class="k">def</span> <span class="nf">peb</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""The Process Environment Block of the current process</span>
|
||||
|
||||
<span class="sd"> :type: :class:`PEB`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="n">PEB</span><span class="o">.</span><span class="n">from_address</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">get_peb_builtin</span><span class="p">()())</span>
|
||||
<span class="k">return</span> <span class="n">PEB</span><span class="o">.</span><span class="n">from_address</span><span class="p">(</span><span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">RtlGetCurrentPeb</span><span class="p">())</span>
|
||||
|
||||
<span class="nd">@utils</span><span class="o">.</span><span class="n">fixedpropety</span>
|
||||
<span class="nd">@utils</span><span class="o">.</span><span class="n">fixedproperty</span>
|
||||
<span class="k">def</span> <span class="nf">bitness</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""The bitness of the process</span>
|
||||
|
||||
<span class="sd"> :type: :class:`int` -- 32 or 64</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="kn">import</span> <span class="nn">platform</span>
|
||||
<span class="n">bits</span> <span class="o">=</span> <span class="n">platform</span><span class="o">.</span><span class="n">architecture</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="k">return</span> <span class="nb">int</span><span class="p">(</span><span class="n">bits</span><span class="p">[:</span><span class="mi">2</span><span class="p">])</span>
|
||||
<span class="k">return</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">sizeof</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">PVOID</span><span class="p">)</span> <span class="o">*</span> <span class="mi">8</span> <span class="c1"># byte to bits</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="CurrentProcess.virtual_alloc">
|
||||
<a class="viewcode-back" href="../../../process.html#windows.winobject.process.CurrentProcess.virtual_alloc">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">virtual_alloc</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">size</span><span class="p">,</span> <span class="n">prot</span><span class="o">=</span><span class="n">PAGE_EXECUTE_READWRITE</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="nf">virtual_alloc</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">size</span><span class="p">,</span> <span class="n">prot</span><span class="o">=</span><span class="n">PAGE_EXECUTE_READWRITE</span><span class="p">,</span> <span class="n">addr</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="n">gdef</span><span class="o">.</span><span class="n">MEM_COMMIT</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Allocate memory in the process</span>
|
||||
|
||||
<span class="sd"> :return: The address of the allocated memory</span>
|
||||
<span class="sd"> :rtype: :class:`int`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="n">winproxy</span><span class="o">.</span><span class="n">VirtualAlloc</span><span class="p">(</span><span class="n">dwSize</span><span class="o">=</span><span class="n">size</span><span class="p">,</span> <span class="n">flProtect</span><span class="o">=</span><span class="n">prot</span><span class="p">)</span></div>
|
||||
<span class="k">return</span> <span class="n">winproxy</span><span class="o">.</span><span class="n">VirtualAlloc</span><span class="p">(</span><span class="n">lpAddress</span><span class="o">=</span><span class="n">addr</span><span class="p">,</span> <span class="n">dwSize</span><span class="o">=</span><span class="n">size</span><span class="p">,</span> <span class="n">flAllocationType</span><span class="o">=</span><span class="nb">type</span><span class="p">,</span> <span class="n">flProtect</span><span class="o">=</span><span class="n">prot</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="CurrentProcess.virtual_free">
|
||||
@@ -798,7 +861,7 @@
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"wait() on current thread"</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<span class="nd">@utils</span><span class="o">.</span><span class="n">fixedpropety</span>
|
||||
<span class="nd">@utils</span><span class="o">.</span><span class="n">fixedproperty</span>
|
||||
<span class="k">def</span> <span class="nf">peb_syswow</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""The 64bits PEB of a SysWow64 process</span>
|
||||
|
||||
@@ -806,6 +869,8 @@
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_wow_64</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Not a syswow process"</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">windows</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">_is_x86_on_arm64</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s2">"Crossing heaven gate x86 -> arm64 not implemented"</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">windows</span><span class="o">.</span><span class="n">syswow64</span><span class="o">.</span><span class="n">get_current_process_syswow_peb</span><span class="p">()</span>
|
||||
|
||||
<span class="c1"># TODO: use ctypes.string_at / ctypes.wstring_at for read_string / read_wstring ?</span>
|
||||
@@ -850,21 +915,21 @@
|
||||
<span class="c1"># Create a DeadThread if thread is already dead ?</span>
|
||||
<span class="k">return</span> <span class="n">WinThread</span><span class="p">(</span><span class="n">handle</span><span class="o">=</span><span class="n">handle</span><span class="p">)</span>
|
||||
|
||||
<span class="nd">@utils</span><span class="o">.</span><span class="n">fixedpropety</span>
|
||||
<span class="nd">@utils</span><span class="o">.</span><span class="n">fixedproperty</span>
|
||||
<span class="k">def</span> <span class="nf">tid</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Thread ID</span>
|
||||
|
||||
<span class="sd"> :type: :class:`int`"""</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_thread_id</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
|
||||
|
||||
<span class="nd">@utils</span><span class="o">.</span><span class="n">fixedpropety</span>
|
||||
<span class="nd">@utils</span><span class="o">.</span><span class="n">fixedproperty</span>
|
||||
<span class="k">def</span> <span class="nf">owner_pid</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="n">res</span> <span class="o">=</span> <span class="n">THREAD_BASIC_INFORMATION</span><span class="p">()</span>
|
||||
<span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">NtQueryInformationThread</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">ThreadBasicInformation</span><span class="p">,</span> <span class="n">byref</span><span class="p">(</span><span class="n">res</span><span class="p">),</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">sizeof</span><span class="p">(</span><span class="n">res</span><span class="p">))</span>
|
||||
<span class="n">owner_id</span> <span class="o">=</span> <span class="n">res</span><span class="o">.</span><span class="n">ClientId</span><span class="o">.</span><span class="n">UniqueProcess</span>
|
||||
<span class="k">return</span> <span class="n">owner_id</span>
|
||||
|
||||
<span class="nd">@utils</span><span class="o">.</span><span class="n">fixedpropety</span>
|
||||
<span class="nd">@utils</span><span class="o">.</span><span class="n">fixedproperty</span>
|
||||
<span class="k">def</span> <span class="nf">owner</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""The Process owning the thread</span>
|
||||
|
||||
@@ -947,6 +1012,8 @@
|
||||
<span class="sd"> :type: :class:`int`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="n">windows</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">bitness</span> <span class="o">==</span> <span class="mi">32</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">owner</span><span class="o">.</span><span class="n">bitness</span> <span class="o">==</span> <span class="mi">64</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">windows</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">_is_x86_on_arm64</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s2">"Crossing heaven gate x86 -> arm64 not implemented"</span><span class="p">)</span>
|
||||
<span class="n">res</span> <span class="o">=</span> <span class="n">ULONGLONG</span><span class="p">()</span>
|
||||
<span class="n">windows</span><span class="o">.</span><span class="n">syswow64</span><span class="o">.</span><span class="n">NtQueryInformationThread_32_to_64</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">ThreadQuerySetWin32StartAddress</span><span class="p">,</span> <span class="n">byref</span><span class="p">(</span><span class="n">res</span><span class="p">),</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">sizeof</span><span class="p">(</span><span class="n">res</span><span class="p">))</span>
|
||||
<span class="k">return</span> <span class="n">res</span><span class="o">.</span><span class="n">value</span>
|
||||
@@ -966,6 +1033,9 @@
|
||||
<span class="c1"># - Want the TEB of a 64b process</span>
|
||||
<span class="c1"># - Want the TEB64 of a Wowprocess</span>
|
||||
<span class="c1"># It's the same code for both</span>
|
||||
<span class="k">if</span> <span class="n">windows</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">_is_x86_on_arm64</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s2">"Crossing heaven gate x86 -> arm64 not implemented"</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">windows</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">is_wow_64</span><span class="p">:</span>
|
||||
<span class="n">restype</span> <span class="o">=</span> <span class="n">rctypes</span><span class="o">.</span><span class="n">transform_type_to_remote64bits</span><span class="p">(</span><span class="n">THREAD_BASIC_INFORMATION</span><span class="p">)</span>
|
||||
<span class="n">ressize</span> <span class="o">=</span> <span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">sizeof</span><span class="p">(</span><span class="n">restype</span><span class="p">))</span>
|
||||
@@ -995,7 +1065,11 @@
|
||||
<span class="c1"># TebBase->NtTib.ExceptionList = (PVOID)Teb32Base;</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">owner</span><span class="o">.</span><span class="n">read_dword</span><span class="p">(</span><span class="n">main_teb_addr</span><span class="p">)</span>
|
||||
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">teb</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">owner</span><span class="o">.</span><span class="n">bitness</span> <span class="o">==</span> <span class="mi">32</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">RemoteTEB32</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">teb_base</span><span class="p">,</span> <span class="n">target</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">owner</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">RemoteTEB64</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">teb_base</span><span class="p">,</span> <span class="n">target</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">owner</span><span class="p">)</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">teb_syswow_base</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
@@ -1008,6 +1082,12 @@
|
||||
<span class="c1"># just return the main TEB</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_principal_teb_addr</span><span class="p">()</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">teb_syswow</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">windows</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">bitness</span> <span class="o">==</span> <span class="mi">64</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">RemoteTEB64</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">teb_syswow_base</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">owner</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span> <span class="c1">#current is 32bits</span>
|
||||
<span class="k">return</span> <span class="n">RemoteTEB64</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">teb_syswow_base</span><span class="p">,</span> <span class="n">windows</span><span class="o">.</span><span class="n">syswow64</span><span class="o">.</span><span class="n">ReadSyswow64Process</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">owner</span><span class="p">))</span>
|
||||
|
||||
<div class="viewcode-block" id="WinThread.exit">
|
||||
<a class="viewcode-back" href="../../../process.html#windows.winobject.process.WinThread.exit">[docs]</a>
|
||||
@@ -1069,8 +1149,6 @@
|
||||
|
||||
<span class="nd">@staticmethod</span>
|
||||
<span class="k">def</span> <span class="nf">_get_thread_id_manual</span><span class="p">(</span><span class="n">handle</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">windows</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">bitness</span> <span class="o">==</span> <span class="mi">32</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">owner</span><span class="o">.</span><span class="n">bitness</span> <span class="o">==</span> <span class="mi">64</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s2">"[_get_thread_id_manual] 32 -> 64 (XP64 bits + Syswow process ?)"</span><span class="p">)</span>
|
||||
<span class="n">res</span> <span class="o">=</span> <span class="n">THREAD_BASIC_INFORMATION</span><span class="p">()</span>
|
||||
<span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">NtQueryInformationThread</span><span class="p">(</span><span class="n">handle</span><span class="p">,</span> <span class="n">ThreadBasicInformation</span><span class="p">,</span> <span class="n">byref</span><span class="p">(</span><span class="n">res</span><span class="p">),</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">sizeof</span><span class="p">(</span><span class="n">res</span><span class="p">))</span>
|
||||
<span class="n">id2</span> <span class="o">=</span> <span class="n">res</span><span class="o">.</span><span class="n">ClientId</span><span class="o">.</span><span class="n">UniqueThread</span>
|
||||
@@ -1113,18 +1191,7 @@
|
||||
<span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">pid</span><span class="o">=</span><span class="n">pid</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="n">name</span><span class="p">,</span> <span class="n">ppid</span><span class="o">=</span><span class="n">ppid</span><span class="p">)</span>
|
||||
|
||||
|
||||
<span class="nd">@utils</span><span class="o">.</span><span class="n">fixedpropety</span>
|
||||
<span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Name of the process</span>
|
||||
|
||||
<span class="sd"> :type: :class:`str`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">buffer</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">create_unicode_buffer</span><span class="p">(</span><span class="mh">0x1024</span><span class="p">)</span>
|
||||
<span class="n">rsize</span> <span class="o">=</span> <span class="n">winproxy</span><span class="o">.</span><span class="n">GetProcessImageFileNameW</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">limited_handle</span><span class="p">,</span> <span class="n">buffer</span><span class="p">)</span>
|
||||
<span class="c1"># GetProcessImageFileNameW returns the fullpath</span>
|
||||
<span class="k">return</span> <span class="n">buffer</span><span class="p">[:</span><span class="n">rsize</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"</span><span class="se">\\</span><span class="s2">"</span><span class="p">)[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
|
||||
|
||||
<span class="nd">@utils</span><span class="o">.</span><span class="n">fixedpropety</span>
|
||||
<span class="nd">@utils</span><span class="o">.</span><span class="n">fixedproperty</span>
|
||||
<span class="k">def</span> <span class="nf">pid</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Process ID</span>
|
||||
|
||||
@@ -1149,13 +1216,13 @@
|
||||
|
||||
<div class="viewcode-block" id="WinProcess.virtual_alloc">
|
||||
<a class="viewcode-back" href="../../../process.html#windows.winobject.process.WinProcess.virtual_alloc">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">virtual_alloc</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">size</span><span class="p">,</span> <span class="n">prot</span><span class="o">=</span><span class="n">PAGE_EXECUTE_READWRITE</span><span class="p">,</span> <span class="n">addr</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="nf">virtual_alloc</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">size</span><span class="p">,</span> <span class="n">prot</span><span class="o">=</span><span class="n">PAGE_EXECUTE_READWRITE</span><span class="p">,</span> <span class="n">addr</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="n">gdef</span><span class="o">.</span><span class="n">MEM_COMMIT</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Allocate memory in the process</span>
|
||||
|
||||
<span class="sd"> :return: The address of the allocated memory</span>
|
||||
<span class="sd"> :rtype: :class:`int`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="n">winproxy</span><span class="o">.</span><span class="n">VirtualAllocEx</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">lpAddress</span><span class="o">=</span><span class="n">addr</span><span class="p">,</span> <span class="n">dwSize</span><span class="o">=</span><span class="n">size</span><span class="p">,</span> <span class="n">flProtect</span><span class="o">=</span><span class="n">prot</span><span class="p">)</span></div>
|
||||
<span class="k">return</span> <span class="n">winproxy</span><span class="o">.</span><span class="n">VirtualAllocEx</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">lpAddress</span><span class="o">=</span><span class="n">addr</span><span class="p">,</span> <span class="n">dwSize</span><span class="o">=</span><span class="n">size</span><span class="p">,</span> <span class="n">flAllocationType</span><span class="o">=</span><span class="nb">type</span><span class="p">,</span> <span class="n">flProtect</span><span class="o">=</span><span class="n">prot</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="WinProcess.virtual_free">
|
||||
@@ -1236,11 +1303,16 @@
|
||||
|
||||
<span class="sd"> :rtype: :class:`WinThread` or :class:`DeadThread`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="c1"># We are using NtCreateThreadEx as its more permissive about cross-bitness / cross-architecture</span>
|
||||
<span class="c1"># And we can asume we known what we are doing -> So no safeguard ;)</span>
|
||||
<span class="n">thread_handle</span> <span class="o">=</span> <span class="n">HANDLE</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">windows</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">bitness</span> <span class="o">==</span> <span class="mi">32</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">bitness</span> <span class="o">==</span> <span class="mi">64</span><span class="p">:</span>
|
||||
<span class="n">thread_handle</span> <span class="o">=</span> <span class="n">HANDLE</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_is_x86_on_arm64</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s2">"Crossing heaven gate x86 -> arm64 not implemented"</span><span class="p">)</span>
|
||||
<span class="n">windows</span><span class="o">.</span><span class="n">syswow64</span><span class="o">.</span><span class="n">NtCreateThreadEx_32_to_64</span><span class="p">(</span><span class="n">ThreadHandle</span><span class="o">=</span><span class="n">byref</span><span class="p">(</span><span class="n">thread_handle</span><span class="p">)</span> <span class="p">,</span><span class="n">ProcessHandle</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">lpStartAddress</span><span class="o">=</span><span class="n">addr</span><span class="p">,</span> <span class="n">lpParameter</span><span class="o">=</span><span class="n">param</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">WinThread</span><span class="o">.</span><span class="n">_from_handle</span><span class="p">(</span><span class="n">thread_handle</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">WinThread</span><span class="o">.</span><span class="n">_from_handle</span><span class="p">(</span><span class="n">winproxy</span><span class="o">.</span><span class="n">CreateRemoteThread</span><span class="p">(</span><span class="n">hProcess</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">lpStartAddress</span><span class="o">=</span><span class="n">addr</span><span class="p">,</span> <span class="n">lpParameter</span><span class="o">=</span><span class="n">param</span><span class="p">))</span></div>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">NtCreateThreadEx</span><span class="p">(</span><span class="n">ThreadHandle</span><span class="o">=</span><span class="n">byref</span><span class="p">(</span><span class="n">thread_handle</span><span class="p">)</span> <span class="p">,</span><span class="n">ProcessHandle</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">lpStartAddress</span><span class="o">=</span><span class="n">addr</span><span class="p">,</span> <span class="n">lpParameter</span><span class="o">=</span><span class="n">param</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">WinThread</span><span class="o">.</span><span class="n">_from_handle</span><span class="p">(</span><span class="n">thread_handle</span><span class="o">.</span><span class="n">value</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="WinProcess.load_library">
|
||||
@@ -1257,55 +1329,62 @@
|
||||
<div class="viewcode-block" id="WinProcess.execute_python">
|
||||
<a class="viewcode-back" href="../../../process.html#windows.winobject.process.WinProcess.execute_python">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">execute_python</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pycode</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Execute Python code into the remote process.</span>
|
||||
<span class="w"> </span><span class="sd">"""Execute Python code in the remote process.</span>
|
||||
|
||||
<span class="sd"> This function waits for the remote process to end and</span>
|
||||
<span class="sd"> raises an exception if the remote thread raised one</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="sd"> .. note::</span>
|
||||
<span class="sd"> This method is incompatible with Microsoft Store builds of python, as the interpreter DLLs do not grant execute to Users.</span>
|
||||
<span class="sd"> See workaround: https://hakril.github.io/PythonForWindows/build/html/sample.html#microsoft-store-python-injection</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="n">injection</span><span class="o">.</span><span class="n">safe_execute_python</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pycode</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="WinProcess.execute_python_unsafe">
|
||||
<a class="viewcode-back" href="../../../process.html#windows.winobject.process.WinProcess.execute_python_unsafe">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">execute_python_unsafe</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pycode</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Execute Python code into the remote process.</span>
|
||||
<span class="w"> </span><span class="sd">"""Execute Python code in the remote process.</span>
|
||||
|
||||
<span class="sd"> :rtype: :rtype: :class:`WinThread` or :class:`DeadThread` : The thread executing the python code</span>
|
||||
|
||||
<span class="sd"> .. note::</span>
|
||||
<span class="sd"> This method is incompatible with Microsoft Store builds of python, as the interpreter DLLs do not grant execute to Users.</span>
|
||||
<span class="sd"> See workaround: https://hakril.github.io/PythonForWindows/build/html/sample.html#microsoft-store-python-injection</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="n">injection</span><span class="o">.</span><span class="n">execute_python_code</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pycode</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="nd">@utils</span><span class="o">.</span><span class="n">fixedpropety</span>
|
||||
<span class="nd">@utils</span><span class="o">.</span><span class="n">fixedproperty</span>
|
||||
<span class="k">def</span> <span class="nf">peb_addr</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""The address of the PEB</span>
|
||||
<span class="w"> </span><span class="sd">"""The address of the PEB.</span>
|
||||
|
||||
<span class="sd"> :type: :class:`int`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="n">windows</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">bitness</span> <span class="o">==</span> <span class="mi">32</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">bitness</span> <span class="o">==</span> <span class="mi">64</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">windows</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">_is_x86_on_arm64</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">bitness</span> <span class="o">==</span> <span class="mi">32</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s2">"Crossing heaven gate x86 -> arm64 not implemented"</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">windows</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">bitness</span> <span class="o">==</span> <span class="mi">32</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">bitness</span> <span class="o">==</span> <span class="mi">64</span><span class="p">:</span> <span class="c1"># Intel to Intel</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">remotectypes</span><span class="o">.</span><span class="n">transform_type_to_remote64bits</span><span class="p">(</span><span class="n">PROCESS_BASIC_INFORMATION</span><span class="p">)</span>
|
||||
<span class="c1"># Fuck-it <3</span>
|
||||
<span class="n">data</span> <span class="o">=</span> <span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_char</span> <span class="o">*</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">sizeof</span><span class="p">(</span><span class="n">x</span><span class="p">))()</span>
|
||||
<span class="n">windows</span><span class="o">.</span><span class="n">syswow64</span><span class="o">.</span><span class="n">NtQueryInformationProcess_32_to_64</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">ProcessInformation</span><span class="o">=</span><span class="n">data</span><span class="p">,</span> <span class="n">ProcessInformationLength</span><span class="o">=</span><span class="n">ctypes</span><span class="o">.</span><span class="n">sizeof</span><span class="p">(</span><span class="n">x</span><span class="p">))</span>
|
||||
<span class="n">windows</span><span class="o">.</span><span class="n">syswow64</span><span class="o">.</span><span class="n">NtQueryInformationProcess_32_to_64</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">ProcessBasicInformation</span><span class="p">,</span> <span class="n">ProcessInformation</span><span class="o">=</span><span class="n">data</span><span class="p">)</span>
|
||||
<span class="n">peb_offset</span> <span class="o">=</span> <span class="n">x</span><span class="o">.</span><span class="n">PebBaseAddress</span><span class="o">.</span><span class="n">offset</span>
|
||||
<span class="n">peb_addr</span> <span class="o">=</span> <span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s2">"<Q"</span><span class="p">,</span> <span class="n">data</span><span class="p">[</span><span class="n">x</span><span class="o">.</span><span class="n">PebBaseAddress</span><span class="o">.</span><span class="n">offset</span><span class="p">:</span> <span class="n">x</span><span class="o">.</span><span class="n">PebBaseAddress</span><span class="o">.</span><span class="n">offset</span><span class="o">+</span><span class="mi">8</span><span class="p">])[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="k">elif</span> <span class="n">windows</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">bitness</span> <span class="o">==</span> <span class="mi">64</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">bitness</span> <span class="o">==</span> <span class="mi">32</span><span class="p">:</span>
|
||||
<span class="n">information_type</span> <span class="o">=</span> <span class="mi">26</span>
|
||||
<span class="n">y</span> <span class="o">=</span> <span class="n">ULONGLONG</span><span class="p">()</span>
|
||||
<span class="n">winproxy</span><span class="o">.</span><span class="n">NtQueryInformationProcess</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">information_type</span><span class="p">,</span> <span class="n">byref</span><span class="p">(</span><span class="n">y</span><span class="p">),</span> <span class="n">sizeof</span><span class="p">(</span><span class="n">y</span><span class="p">))</span>
|
||||
<span class="n">winproxy</span><span class="o">.</span><span class="n">NtQueryInformationProcess</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">ProcessWow64Information</span><span class="p">,</span> <span class="n">byref</span><span class="p">(</span><span class="n">y</span><span class="p">),</span> <span class="n">sizeof</span><span class="p">(</span><span class="n">y</span><span class="p">))</span>
|
||||
<span class="n">peb_addr</span> <span class="o">=</span> <span class="n">y</span><span class="o">.</span><span class="n">value</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">information_type</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="n">PROCESS_BASIC_INFORMATION</span><span class="p">()</span>
|
||||
<span class="n">winproxy</span><span class="o">.</span><span class="n">NtQueryInformationProcess</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">information_type</span><span class="p">,</span> <span class="n">x</span><span class="p">)</span>
|
||||
<span class="n">winproxy</span><span class="o">.</span><span class="n">NtQueryInformationProcess</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">ProcessBasicInformation</span><span class="p">,</span> <span class="n">x</span><span class="p">)</span>
|
||||
<span class="n">peb_addr</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">x</span><span class="o">.</span><span class="n">PebBaseAddress</span><span class="p">,</span> <span class="n">PVOID</span><span class="p">)</span><span class="o">.</span><span class="n">value</span>
|
||||
<span class="k">if</span> <span class="n">peb_addr</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Could not get peb addr of process </span><span class="si">{0}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">))</span>
|
||||
<span class="k">return</span> <span class="n">peb_addr</span>
|
||||
|
||||
<span class="c1"># Not a fixedpropety to prevent ref-cycle and uncollectable WinProcess</span>
|
||||
<span class="c1"># Not a fixedproperty to prevent ref-cycle and uncollectable WinProcess</span>
|
||||
<span class="c1"># Try with a weakref ?</span>
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">peb</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
@@ -1319,10 +1398,14 @@
|
||||
<span class="k">return</span> <span class="n">RemotePEB32</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">peb_addr</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">RemotePEB</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">peb_addr</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span>
|
||||
|
||||
<span class="nd">@utils</span><span class="o">.</span><span class="n">fixedpropety</span>
|
||||
<span class="nd">@utils</span><span class="o">.</span><span class="n">fixedproperty</span>
|
||||
<span class="k">def</span> <span class="nf">peb_syswow_addr</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_wow_64</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Not a syswow process"</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">windows</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">_is_x86_on_arm64</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s2">"Crossing heaven gate x86 -> arm64 not implemented"</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">windows</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">bitness</span> <span class="o">==</span> <span class="mi">64</span><span class="p">:</span>
|
||||
<span class="n">information_type</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="n">PROCESS_BASIC_INFORMATION</span><span class="p">()</span>
|
||||
@@ -1338,7 +1421,7 @@
|
||||
<span class="n">peb_addr</span> <span class="o">=</span> <span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s2">"<Q"</span><span class="p">,</span> <span class="n">data</span><span class="p">[</span><span class="n">x</span><span class="o">.</span><span class="n">PebBaseAddress</span><span class="o">.</span><span class="n">offset</span><span class="p">:</span> <span class="n">x</span><span class="o">.</span><span class="n">PebBaseAddress</span><span class="o">.</span><span class="n">offset</span><span class="o">+</span><span class="mi">8</span><span class="p">])[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="k">return</span> <span class="n">peb_addr</span>
|
||||
|
||||
<span class="c1"># Not a fixedpropety to prevent ref-cycle and uncollectable WinProcess</span>
|
||||
<span class="c1"># Not a fixedproperty to prevent ref-cycle and uncollectable WinProcess</span>
|
||||
<span class="c1"># Try with a weakref ?</span>
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">peb_syswow</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
@@ -1362,8 +1445,6 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">transform_ctypes_fields</span><span class="p">(</span><span class="n">struct</span><span class="p">,</span> <span class="n">replacement</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="p">[(</span><span class="n">name</span><span class="p">,</span> <span class="n">replacement</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="nb">type</span><span class="p">))</span> <span class="k">for</span> <span class="n">name</span><span class="p">,</span> <span class="nb">type</span> <span class="ow">in</span> <span class="n">struct</span><span class="o">.</span><span class="n">_fields_</span><span class="p">]</span>
|
||||
|
||||
@@ -1409,11 +1490,6 @@
|
||||
|
||||
|
||||
|
||||
<span class="k">class</span> <span class="nc">LIST_ENTRY_PTR</span><span class="p">(</span><span class="n">PVOID</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="nf">TO_LDR_ENTRY</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">LDR_DATA_TABLE_ENTRY</span><span class="o">.</span><span class="n">from_address</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span> <span class="o">-</span> <span class="n">sizeof</span><span class="p">(</span><span class="n">PVOID</span><span class="p">)</span> <span class="o">*</span> <span class="mi">2</span><span class="p">)</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="PEB">
|
||||
<a class="viewcode-back" href="../../../process.html#windows.winobject.process.PEB">[docs]</a>
|
||||
<span class="k">class</span> <span class="nc">PEB</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">PEB</span><span class="p">):</span>
|
||||
@@ -1450,13 +1526,13 @@
|
||||
<span class="sd"> :type: [:class:`LoadedModule`] -- List of loaded modules</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">res</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="n">list_entry_ptr</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">Ldr</span><span class="o">.</span><span class="n">contents</span><span class="o">.</span><span class="n">InMemoryOrderModuleList</span><span class="o">.</span><span class="n">Flink</span><span class="p">,</span> <span class="n">LIST_ENTRY_PTR</span><span class="p">)</span>
|
||||
<span class="n">current_dll</span> <span class="o">=</span> <span class="n">list_entry_ptr</span><span class="o">.</span><span class="n">TO_LDR_ENTRY</span><span class="p">()</span>
|
||||
<span class="n">first_flink</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">Ldr</span><span class="o">.</span><span class="n">contents</span><span class="o">.</span><span class="n">InMemoryOrderModuleList</span><span class="o">.</span><span class="n">Flink</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="n">current_dll</span> <span class="o">=</span> <span class="n">first_flink</span><span class="o">.</span><span class="n">get_real_struct</span><span class="p">(</span><span class="n">LoadedModule</span><span class="p">,</span> <span class="n">LoadedModule</span><span class="o">.</span><span class="n">InMemoryOrderLinks</span><span class="p">)</span>
|
||||
<span class="k">while</span> <span class="n">current_dll</span><span class="o">.</span><span class="n">DllBase</span><span class="p">:</span>
|
||||
<span class="n">res</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">current_dll</span><span class="p">)</span>
|
||||
<span class="n">list_entry_ptr</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">current_dll</span><span class="o">.</span><span class="n">InMemoryOrderLinks</span><span class="o">.</span><span class="n">Flink</span><span class="p">,</span> <span class="n">LIST_ENTRY_PTR</span><span class="p">)</span>
|
||||
<span class="n">current_dll</span> <span class="o">=</span> <span class="n">list_entry_ptr</span><span class="o">.</span><span class="n">TO_LDR_ENTRY</span><span class="p">()</span>
|
||||
<span class="k">return</span> <span class="p">[</span><span class="n">LoadedModule</span><span class="o">.</span><span class="n">from_address</span><span class="p">(</span><span class="n">addressof</span><span class="p">(</span><span class="n">LDR</span><span class="p">))</span> <span class="k">for</span> <span class="n">LDR</span> <span class="ow">in</span> <span class="n">res</span><span class="p">]</span>
|
||||
<span class="n">next_flink</span> <span class="o">=</span> <span class="n">current_dll</span><span class="o">.</span><span class="n">InMemoryOrderLinks</span><span class="o">.</span><span class="n">Flink</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="n">current_dll</span> <span class="o">=</span> <span class="n">next_flink</span><span class="o">.</span><span class="n">get_real_struct</span><span class="p">(</span><span class="n">LoadedModule</span><span class="p">,</span> <span class="n">LoadedModule</span><span class="o">.</span><span class="n">InMemoryOrderLinks</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">res</span>
|
||||
|
||||
<span class="nd">@staticmethod</span>
|
||||
<span class="k">def</span> <span class="nf">_extract_environment</span><span class="p">(</span><span class="n">env_block_addr</span><span class="p">,</span> <span class="n">target</span><span class="p">):</span>
|
||||
@@ -1487,7 +1563,6 @@
|
||||
<span class="k">return</span> <span class="n">apisetmap</span><span class="o">.</span><span class="n">get_api_set_map_for_current_process</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ApiSetMap</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
|
||||
<span class="c1"># Memory stuff</span>
|
||||
|
||||
<span class="k">class</span> <span class="nc">EPSAPI_WORKING_SET_BLOCK_BASE</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
@@ -1599,9 +1674,24 @@
|
||||
<span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s2">"ApiSetMap for remote process not implemented yet"</span><span class="p">)</span>
|
||||
|
||||
|
||||
<span class="c1"># TEB enhanced, same bitness as PEB (current process)</span>
|
||||
<span class="k">class</span> <span class="nc">TEB</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">TEB</span><span class="p">):</span>
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">peb</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ProcessEnvironmentBlock</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">PEB</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span>
|
||||
|
||||
<span class="c1"># mote TEB enhanced, same bitness as PEB (current process)</span>
|
||||
<span class="k">class</span> <span class="nc">RemoteTEB</span><span class="p">(</span><span class="n">rctypes</span><span class="o">.</span><span class="n">RemoteStructure</span><span class="o">.</span><span class="n">from_structure</span><span class="p">(</span><span class="n">TEB</span><span class="p">)):</span>
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">peb</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="n">ctypes_peb</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ProcessEnvironmentBlock</span><span class="o">.</span><span class="n">value</span>
|
||||
<span class="k">return</span> <span class="n">RemotePEB</span><span class="p">(</span><span class="n">ctypes_peb</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_target</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">CurrentProcess</span><span class="p">()</span><span class="o">.</span><span class="n">bitness</span> <span class="o">==</span> <span class="mi">32</span><span class="p">:</span>
|
||||
<span class="n">RemoteLoadedModule32</span> <span class="o">=</span> <span class="n">RemoteLoadedModule</span>
|
||||
<span class="n">RemotePEB32</span> <span class="o">=</span> <span class="n">RemotePEB</span>
|
||||
<span class="n">RemoteTEB32</span> <span class="o">=</span> <span class="n">RemoteTEB</span>
|
||||
|
||||
<span class="k">class</span> <span class="nc">RemoteLoadedModule64</span><span class="p">(</span><span class="n">rctypes</span><span class="o">.</span><span class="n">transform_type_to_remote64bits</span><span class="p">(</span><span class="n">LoadedModule</span><span class="p">)):</span>
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">pe</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
@@ -1616,7 +1706,6 @@
|
||||
<span class="k">def</span> <span class="nf">ptr_flink_to_remote_module</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ptr_value</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">RemoteLoadedModule64</span><span class="p">(</span><span class="n">ptr_value</span> <span class="o">-</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">sizeof</span><span class="p">(</span><span class="n">rctypes</span><span class="o">.</span><span class="n">c_void_p64</span><span class="p">)</span> <span class="o">*</span> <span class="mi">2</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_target</span><span class="p">)</span>
|
||||
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">exe</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""The executable of the process, as pointed by PEB.ImageBaseAddress</span>
|
||||
@@ -1649,7 +1738,17 @@
|
||||
|
||||
<span class="n">apisetmap</span> <span class="o">=</span> <span class="n">RemotePEB</span><span class="o">.</span><span class="n">apisetmap</span>
|
||||
|
||||
<span class="k">class</span> <span class="nc">RemoteTEB64</span><span class="p">(</span><span class="n">rctypes</span><span class="o">.</span><span class="n">transform_type_to_remote64bits</span><span class="p">(</span><span class="n">TEB</span><span class="p">)):</span>
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">peb</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="n">ctypes_peb</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ProcessEnvironmentBlock</span><span class="o">.</span><span class="n">value</span>
|
||||
<span class="k">return</span> <span class="n">RemotePEB64</span><span class="p">(</span><span class="n">ctypes_peb</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_target</span><span class="p">)</span>
|
||||
|
||||
|
||||
<span class="k">if</span> <span class="n">CurrentProcess</span><span class="p">()</span><span class="o">.</span><span class="n">bitness</span> <span class="o">==</span> <span class="mi">64</span><span class="p">:</span>
|
||||
<span class="n">RemoteLoadedModule64</span> <span class="o">=</span> <span class="n">RemoteLoadedModule</span>
|
||||
<span class="n">RemotePEB64</span> <span class="o">=</span> <span class="n">RemotePEB</span>
|
||||
<span class="n">RemoteTEB64</span> <span class="o">=</span> <span class="n">RemoteTEB</span>
|
||||
|
||||
<span class="k">class</span> <span class="nc">RemoteLoadedModule32</span><span class="p">(</span><span class="n">rctypes</span><span class="o">.</span><span class="n">transform_type_to_remote32bits</span><span class="p">(</span><span class="n">LoadedModule</span><span class="p">)):</span>
|
||||
<span class="nd">@property</span>
|
||||
@@ -1696,6 +1795,12 @@
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_extract_environment</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ProcessParameters</span><span class="o">.</span><span class="n">contents</span><span class="o">.</span><span class="n">Environment</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_target</span><span class="p">)</span>
|
||||
|
||||
<span class="n">apisetmap</span> <span class="o">=</span> <span class="n">RemotePEB</span><span class="o">.</span><span class="n">apisetmap</span>
|
||||
|
||||
<span class="k">class</span> <span class="nc">RemoteTEB32</span><span class="p">(</span><span class="n">rctypes</span><span class="o">.</span><span class="n">transform_type_to_remote32bits</span><span class="p">(</span><span class="n">TEB</span><span class="p">)):</span>
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">peb</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="n">ctypes_peb</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ProcessEnvironmentBlock</span><span class="o">.</span><span class="n">value</span>
|
||||
<span class="k">return</span> <span class="n">RemotePEB32</span><span class="p">(</span><span class="n">ctypes_peb</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_target</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
<div class="clearer"></div>
|
||||
@@ -1727,7 +1832,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.3 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.winobject.process</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -4,12 +4,12 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>windows.winobject.registry — PythonForWindows 1.0.0 documentation</title>
|
||||
<title>windows.winobject.registry — PythonForWindows 1.0.2 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="../../../_static/documentation_options.js?v=8d563738"></script>
|
||||
<script src="../../../_static/documentation_options.js?v=1ed6394b"></script>
|
||||
<script src="../../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.2 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.winobject.registry</a></li>
|
||||
</ul>
|
||||
@@ -610,7 +610,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.2 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.winobject.registry</a></li>
|
||||
</ul>
|
||||
|
||||
+20
-6
@@ -4,12 +4,12 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>windows.winobject.service — PythonForWindows 1.0.0 documentation</title>
|
||||
<title>windows.winobject.service — PythonForWindows 1.0.3 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="../../../_static/documentation_options.js?v=8d563738"></script>
|
||||
<script src="../../../_static/documentation_options.js?v=baaebd52"></script>
|
||||
<script src="../../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.3 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.winobject.service</a></li>
|
||||
</ul>
|
||||
@@ -193,7 +193,13 @@
|
||||
<span class="k">def</span> <span class="nf">enumerate_services</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="nb">list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_enumerate_services_generator</span><span class="p">())</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">create</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">description</span><span class="p">,</span> <span class="n">access</span><span class="p">,</span> <span class="nb">type</span><span class="p">,</span> <span class="n">start</span><span class="p">,</span> <span class="n">path</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="ServiceManager.create">
|
||||
<a class="viewcode-back" href="../../../service.html#windows.winobject.service.ServiceManager.create">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">create</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">description</span><span class="p">,</span> <span class="n">access</span><span class="p">,</span> <span class="nb">type</span><span class="p">,</span> <span class="n">start</span><span class="p">,</span> <span class="n">path</span><span class="p">,</span> <span class="n">user</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Create a new service</span>
|
||||
|
||||
<span class="sd"> :return: :class:`Service` -- The newly created service</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">newservice_handle</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">CreateServiceW</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="c1"># hSCManager</span>
|
||||
<span class="n">name</span><span class="p">,</span> <span class="c1"># lpServiceName</span>
|
||||
@@ -206,10 +212,11 @@
|
||||
<span class="kc">None</span><span class="p">,</span> <span class="c1"># lpLoadOrderGroup</span>
|
||||
<span class="kc">None</span><span class="p">,</span> <span class="c1"># lpdwTagId</span>
|
||||
<span class="kc">None</span><span class="p">,</span> <span class="c1"># lpDependencies</span>
|
||||
<span class="kc">None</span><span class="p">,</span> <span class="c1"># lpServiceStartName</span>
|
||||
<span class="n">user</span><span class="p">,</span> <span class="c1"># lpServiceStartName</span>
|
||||
<span class="kc">None</span><span class="p">)</span> <span class="c1"># lpPassword</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">Service</span><span class="p">(</span><span class="n">handle</span><span class="o">=</span><span class="n">newservice_handle</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="n">name</span><span class="p">,</span> <span class="n">description</span><span class="o">=</span><span class="n">description</span><span class="p">)</span></div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
@@ -291,6 +298,13 @@
|
||||
<span class="k">return</span> <span class="n">status</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="Service.delete">
|
||||
<a class="viewcode-back" href="../../../service.html#windows.winobject.service.Service.delete">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">delete</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Delete the service"""</span>
|
||||
<span class="k">return</span> <span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">DeleteService</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">urepr_encode</span><span class="p">(</span><span class="sa">u</span><span class="s2">"""<</span><span class="si">{0}</span><span class="s2"> "</span><span class="si">{1}</span><span class="s2">" </span><span class="si">{2!r}</span><span class="s2">>"""</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">status</span><span class="o">.</span><span class="n">state</span><span class="p">))</span>
|
||||
|
||||
@@ -328,7 +342,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.3 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.winobject.service</a></li>
|
||||
</ul>
|
||||
|
||||
+110
-15
@@ -4,12 +4,12 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>windows.winobject.system — PythonForWindows 1.0.0 documentation</title>
|
||||
<title>windows.winobject.system — PythonForWindows 1.0.3 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="../../../_static/documentation_options.js?v=8d563738"></script>
|
||||
<script src="../../../_static/documentation_options.js?v=baaebd52"></script>
|
||||
<script src="../../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.3 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.winobject.system</a></li>
|
||||
</ul>
|
||||
@@ -49,7 +49,6 @@
|
||||
<span class="kn">import</span> <span class="nn">windows.generated_def</span> <span class="k">as</span> <span class="nn">gdef</span>
|
||||
|
||||
|
||||
|
||||
<span class="kn">from</span> <span class="nn">windows.winobject</span> <span class="kn">import</span> <span class="n">process</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.winobject</span> <span class="kn">import</span> <span class="n">network</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.winobject</span> <span class="kn">import</span> <span class="n">registry</span>
|
||||
@@ -128,7 +127,7 @@
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">logicaldrives</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""List of logical drives [C:\, ...]</span>
|
||||
<span class="w"> </span><span class="sd">"""List of logical drives [C:\\, ...]</span>
|
||||
|
||||
<span class="sd"> :type: [:class:`~windows.winobject.volume.LogicalDrive`] -- A list of LogicalDrive</span>
|
||||
<span class="sd"> """</span>
|
||||
@@ -301,12 +300,77 @@
|
||||
<span class="n">result</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">result_tup</span><span class="p">[:</span><span class="mi">2</span><span class="p">])</span>
|
||||
<span class="k">return</span> <span class="n">result</span>
|
||||
|
||||
<span class="c1"># Based on:</span>
|
||||
<span class="c1"># https://jrsoftware.org/ishelp/index.php?topic=winvernotes</span>
|
||||
<span class="c1"># https://en.wikipedia.org/wiki/List_of_Microsoft_Windows_versions</span>
|
||||
|
||||
<span class="n">WINDOWS_10_BUILD_NUMBER_VERSION</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="c1"># (build_number, is_workstation): "version_name"</span>
|
||||
<span class="p">(</span><span class="mi">10240</span><span class="p">,</span> <span class="kc">True</span><span class="p">):</span> <span class="sa">u</span><span class="s2">"Windows 10 Version 1507"</span><span class="p">,</span>
|
||||
<span class="p">(</span><span class="mi">10586</span><span class="p">,</span> <span class="kc">True</span><span class="p">):</span> <span class="sa">u</span><span class="s2">"Windows 10 Version 1511"</span><span class="p">,</span>
|
||||
<span class="p">(</span><span class="mi">14393</span><span class="p">,</span> <span class="kc">True</span><span class="p">):</span> <span class="sa">u</span><span class="s2">"Windows 10 Version 1607"</span><span class="p">,</span>
|
||||
<span class="p">(</span><span class="mi">15063</span><span class="p">,</span> <span class="kc">True</span><span class="p">):</span> <span class="sa">u</span><span class="s2">"Windows 10 Version 1703"</span><span class="p">,</span>
|
||||
<span class="p">(</span><span class="mi">16299</span><span class="p">,</span> <span class="kc">True</span><span class="p">):</span> <span class="sa">u</span><span class="s2">"Windows 10 Version 1709"</span><span class="p">,</span>
|
||||
<span class="p">(</span><span class="mi">17134</span><span class="p">,</span> <span class="kc">True</span><span class="p">):</span> <span class="sa">u</span><span class="s2">"Windows 10 Version 1803"</span><span class="p">,</span>
|
||||
<span class="p">(</span><span class="mi">17763</span><span class="p">,</span> <span class="kc">True</span><span class="p">):</span> <span class="sa">u</span><span class="s2">"Windows 10 Version 1809"</span><span class="p">,</span>
|
||||
<span class="p">(</span><span class="mi">18362</span><span class="p">,</span> <span class="kc">True</span><span class="p">):</span> <span class="sa">u</span><span class="s2">"Windows 10 Version 1903"</span><span class="p">,</span>
|
||||
<span class="p">(</span><span class="mi">18363</span><span class="p">,</span> <span class="kc">True</span><span class="p">):</span> <span class="sa">u</span><span class="s2">"Windows 10 Version 1909"</span><span class="p">,</span>
|
||||
<span class="p">(</span><span class="mi">19041</span><span class="p">,</span> <span class="kc">True</span><span class="p">):</span> <span class="sa">u</span><span class="s2">"Windows 10 Version 2004"</span><span class="p">,</span>
|
||||
<span class="p">(</span><span class="mi">19042</span><span class="p">,</span> <span class="kc">True</span><span class="p">):</span> <span class="sa">u</span><span class="s2">"Windows 10 Version 20H2"</span><span class="p">,</span>
|
||||
<span class="p">(</span><span class="mi">19043</span><span class="p">,</span> <span class="kc">True</span><span class="p">):</span> <span class="sa">u</span><span class="s2">"Windows 10 Version 21H1"</span><span class="p">,</span>
|
||||
<span class="p">(</span><span class="mi">19044</span><span class="p">,</span> <span class="kc">True</span><span class="p">):</span> <span class="sa">u</span><span class="s2">"Windows 10 Version 21H2"</span><span class="p">,</span>
|
||||
<span class="p">(</span><span class="mi">19045</span><span class="p">,</span> <span class="kc">True</span><span class="p">):</span> <span class="sa">u</span><span class="s2">"Windows 10 Version 22H2"</span><span class="p">,</span>
|
||||
<span class="p">(</span><span class="mi">22000</span><span class="p">,</span> <span class="kc">True</span><span class="p">):</span> <span class="sa">u</span><span class="s2">"Windows 11 Version 21H2"</span><span class="p">,</span>
|
||||
<span class="p">(</span><span class="mi">22621</span><span class="p">,</span> <span class="kc">True</span><span class="p">):</span> <span class="sa">u</span><span class="s2">"Windows 11 Version 22H2"</span><span class="p">,</span>
|
||||
<span class="p">(</span><span class="mi">22631</span><span class="p">,</span> <span class="kc">True</span><span class="p">):</span> <span class="sa">u</span><span class="s2">"Windows 11 Version 23H2"</span><span class="p">,</span>
|
||||
<span class="p">(</span><span class="mi">26100</span><span class="p">,</span> <span class="kc">True</span><span class="p">):</span> <span class="sa">u</span><span class="s2">"Windows 11 Version 24H2"</span><span class="p">,</span>
|
||||
|
||||
<span class="p">(</span><span class="mi">14393</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span> <span class="sa">u</span><span class="s2">"Windows Server 2016"</span><span class="p">,</span>
|
||||
<span class="c1"># 16299 : Windows Server, version 1709 ?</span>
|
||||
<span class="c1"># 17134 : Windows Server, version 1803 ?</span>
|
||||
<span class="c1"># 17134 : Windows Server, version 1803 ?</span>
|
||||
<span class="p">(</span><span class="mi">17763</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span> <span class="sa">u</span><span class="s2">"Windows Server 2019"</span><span class="p">,</span>
|
||||
<span class="c1"># 18362 : Windows Server, version 1903 ?</span>
|
||||
<span class="c1"># 18363 : Windows Server, version 1909 ?</span>
|
||||
<span class="c1"># 19041 : Windows Server, version 2004 ?</span>
|
||||
<span class="c1"># 19042 : Windows Server, version 20H2 ?</span>
|
||||
<span class="p">(</span><span class="mi">20348</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span> <span class="sa">u</span><span class="s2">"Windows Server 2022"</span><span class="p">,</span>
|
||||
<span class="c1"># 25398 : Windows Server, version 23H2 ?</span>
|
||||
<span class="p">(</span><span class="mi">26100</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span> <span class="sa">u</span><span class="s2">"Windows Server 2025"</span><span class="p">,</span>
|
||||
<span class="p">}</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_get_version_name_for_10_build</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">build_number</span><span class="p">,</span> <span class="n">is_workstation</span><span class="p">):</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">WINDOWS_10_BUILD_NUMBER_VERSION</span><span class="p">[(</span><span class="n">build_number</span><span class="p">,</span> <span class="n">is_workstation</span><span class="p">)]</span>
|
||||
<span class="k">except</span> <span class="ne">KeyError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="sa">u</span><span class="s2">"Unknown Windows 10+ <versionstr=</span><span class="si">{0}</span><span class="s2"> | is_workstation=</span><span class="si">{1}</span><span class="s2">>"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">versionstr</span><span class="p">,</span> <span class="n">is_workstation</span><span class="p">)</span>
|
||||
|
||||
<span class="nd">@utils</span><span class="o">.</span><span class="n">fixedpropety</span>
|
||||
<span class="k">def</span> <span class="nf">version_name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""The name of the system version, values are:</span>
|
||||
|
||||
<span class="sd"> * Windows Server 2025</span>
|
||||
<span class="sd"> * Windows 11 Version 24H2</span>
|
||||
<span class="sd"> * Windows 11 Version 23H2</span>
|
||||
<span class="sd"> * Windows 11 Version 22H2</span>
|
||||
<span class="sd"> * Windows 11 Version 21H2</span>
|
||||
<span class="sd"> * Windows 10 Version 22H2</span>
|
||||
<span class="sd"> * Windows 10 Version 21H2</span>
|
||||
<span class="sd"> * Windows Server 2022</span>
|
||||
<span class="sd"> * Windows 10 Version 21H1</span>
|
||||
<span class="sd"> * Windows 10 Version 20H2</span>
|
||||
<span class="sd"> * Windows 10 Version 2004</span>
|
||||
<span class="sd"> * Windows 10 Version 1909</span>
|
||||
<span class="sd"> * Windows 10 Version 1903</span>
|
||||
<span class="sd"> * Windows Server 2019</span>
|
||||
<span class="sd"> * Windows 10 Version 1809</span>
|
||||
<span class="sd"> * Windows 10 Version 1803</span>
|
||||
<span class="sd"> * Windows 10 Version 1709</span>
|
||||
<span class="sd"> * Windows 10 Version 1703</span>
|
||||
<span class="sd"> * Windows 10 Version 1607</span>
|
||||
<span class="sd"> * Windows 10 Version 1511</span>
|
||||
<span class="sd"> * Windows 10 Version 1507</span>
|
||||
<span class="sd"> * Windows Server 2016</span>
|
||||
<span class="sd"> * Windows 10</span>
|
||||
<span class="sd"> * Windows Server 2012 R2</span>
|
||||
<span class="sd"> * Windows 8.1</span>
|
||||
<span class="sd"> * Windows Server 2012</span>
|
||||
@@ -316,19 +380,20 @@
|
||||
<span class="sd"> * Windows Server 2008</span>
|
||||
<span class="sd"> * Windows Vista</span>
|
||||
<span class="sd"> * Windows XP Professional x64 Edition</span>
|
||||
<span class="sd"> * TODO: version (5.2) + is_workstation + bitness == 32 (don't even know if possible..)</span>
|
||||
<span class="sd"> * Unknown: version (5.2) + is_workstation + bitness == 32 (don't even know if possible..)</span>
|
||||
<span class="sd"> * Windows Server 2003 R2</span>
|
||||
<span class="sd"> * Windows Server 2003</span>
|
||||
<span class="sd"> * Windows XP</span>
|
||||
<span class="sd"> * Windows 2000</span>
|
||||
<span class="sd"> * "Unknow Windows <version={0} | is_workstation={1}>".format(version, is_workstation)</span>
|
||||
<span class="sd"> * "Unknown Windows 10+ <versionstr={0} | is_workstation={1}>".format(self.versionstr, is_workstation)</span>
|
||||
<span class="sd"> * "Unknown Windows <version={0} | is_workstation={1}>".format(version, is_workstation)</span>
|
||||
|
||||
<span class="sd"> :type: :class:`str`</span>
|
||||
<span class="sd"> :type: :class:`unicode`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">version</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">version</span>
|
||||
<span class="n">is_workstation</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">product_type</span> <span class="o">==</span> <span class="n">gdef</span><span class="o">.</span><span class="n">VER_NT_WORKSTATION</span>
|
||||
<span class="k">if</span> <span class="n">version</span> <span class="o">==</span> <span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="mi">0</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="p">[</span><span class="sa">u</span><span class="s2">"Windows Server 2016"</span><span class="p">,</span> <span class="sa">u</span><span class="s2">"Windows 10"</span><span class="p">][</span><span class="n">is_workstation</span><span class="p">]</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_version_name_for_10_build</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">build_number</span><span class="p">,</span> <span class="n">is_workstation</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">version</span> <span class="o">==</span> <span class="p">(</span><span class="mi">6</span><span class="p">,</span> <span class="mi">3</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="p">[</span><span class="sa">u</span><span class="s2">"Windows Server 2012 R2"</span><span class="p">,</span> <span class="sa">u</span><span class="s2">"Windows 8.1"</span><span class="p">][</span><span class="n">is_workstation</span><span class="p">]</span>
|
||||
<span class="k">elif</span> <span class="n">version</span> <span class="o">==</span> <span class="p">(</span><span class="mi">6</span><span class="p">,</span> <span class="mi">2</span><span class="p">):</span>
|
||||
@@ -343,7 +408,7 @@
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">bitness</span> <span class="o">==</span> <span class="mi">64</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="sa">u</span><span class="s2">"Windows XP Professional x64 Edition"</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="sa">u</span><span class="s2">"TODO: version (5.2) + is_workstation + bitness == 32"</span>
|
||||
<span class="k">return</span> <span class="sa">u</span><span class="s2">"Unknown: version (5.2) + is_workstation + bitness == 32"</span>
|
||||
<span class="k">elif</span> <span class="n">metric</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="sa">u</span><span class="s2">"Windows Server 2003 R2"</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
@@ -353,7 +418,7 @@
|
||||
<span class="k">elif</span> <span class="n">version</span> <span class="o">==</span> <span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="mi">0</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="sa">u</span><span class="s2">"Windows 2000"</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="sa">u</span><span class="s2">"Unknow Windows <version=</span><span class="si">{0}</span><span class="s2"> | is_workstation=</span><span class="si">{1}</span><span class="s2">>"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">version</span><span class="p">,</span> <span class="n">is_workstation</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="sa">u</span><span class="s2">"Unknown Windows <version=</span><span class="si">{0}</span><span class="s2"> | is_workstation=</span><span class="si">{1}</span><span class="s2">>"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">version</span><span class="p">,</span> <span class="n">is_workstation</span><span class="p">)</span>
|
||||
|
||||
<span class="n">VERSION_MAPPER</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">FlagMapper</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">VER_NT_WORKSTATION</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">VER_NT_DOMAIN_CONTROLLER</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">VER_NT_SERVER</span><span class="p">)</span>
|
||||
<span class="nd">@utils</span><span class="o">.</span><span class="n">fixedpropety</span>
|
||||
@@ -506,8 +571,9 @@
|
||||
<span class="n">bufstr</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">bufptr</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">LPWSTR</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">bufstr</span><span class="o">.</span><span class="n">value</span>
|
||||
|
||||
<span class="nd">@utils</span><span class="o">.</span><span class="n">fixedpropety</span>
|
||||
<span class="nd">@utils</span><span class="o">.</span><span class="n">fixedproperty</span>
|
||||
<span class="k">def</span> <span class="nf">build_number</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Return the `CurrentBuildNumber`"""</span>
|
||||
<span class="c1"># Will only work on Windows 10 ?</span>
|
||||
<span class="n">build</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">kuser_shared_data</span><span class="o">.</span><span class="n">NtBuildNumber</span>
|
||||
<span class="k">if</span> <span class="n">build</span><span class="p">:</span> <span class="c1"># 0 before windows 10</span>
|
||||
@@ -516,6 +582,17 @@
|
||||
<span class="n">key</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">system</span><span class="o">.</span><span class="n">registry</span><span class="p">(</span><span class="sa">r</span><span class="s2">"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion"</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="nb">int</span><span class="p">(</span><span class="n">key</span><span class="p">[</span><span class="s2">"CurrentBuildNumber"</span><span class="p">]</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
|
||||
|
||||
<span class="nd">@utils</span><span class="o">.</span><span class="n">fixedproperty</span>
|
||||
<span class="k">def</span> <span class="nf">display_version</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Return the `DisplayVersion` (22H2, 23H2, ...) is it exists, else None"""</span>
|
||||
<span class="n">key</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">system</span><span class="o">.</span><span class="n">registry</span><span class="p">(</span><span class="sa">r</span><span class="s2">"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion"</span><span class="p">)</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">key</span><span class="p">[</span><span class="s2">"DisplayVersion"</span><span class="p">]</span><span class="o">.</span><span class="n">value</span>
|
||||
<span class="k">except</span> <span class="ne">WindowsError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">e</span><span class="o">.</span><span class="n">winerror</span> <span class="o">==</span> <span class="n">gdef</span><span class="o">.</span><span class="n">ERROR_FILE_NOT_FOUND</span><span class="p">:</span>
|
||||
<span class="k">raise</span>
|
||||
<span class="k">return</span> <span class="kc">None</span>
|
||||
|
||||
<span class="nd">@utils</span><span class="o">.</span><span class="n">fixedproperty</span>
|
||||
<span class="k">def</span> <span class="nf">versionstr</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="c1"># Best effort. use get_file_version if registry code fails</span>
|
||||
@@ -549,6 +626,24 @@
|
||||
<span class="c1"># These are the part that do not move much between XP & Win10</span>
|
||||
<span class="k">return</span> <span class="n">gdef</span><span class="o">.</span><span class="n">PFW_MINIMAL_KUSER_SHARED_DATA</span><span class="o">.</span><span class="n">from_address</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">MM_SHARED_USER_DATA_VA</span><span class="p">)</span>
|
||||
|
||||
<span class="nd">@utils</span><span class="o">.</span><span class="n">fixedproperty</span>
|
||||
<span class="k">def</span> <span class="nf">architecture</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="c1"># Retrieve system processor architecture</span>
|
||||
<span class="c1"># It's not that easy as x64-on-ARM64 will lie on most API except IsWow64Process2</span>
|
||||
<span class="c1"># EX: GetNativeSystemInfo will returns PROCESSOR_ARCHITECTURE_AMD64</span>
|
||||
<span class="k">if</span> <span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">is_implemented</span><span class="p">(</span><span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">IsWow64Process2</span><span class="p">):</span>
|
||||
<span class="n">process_machine</span><span class="p">,</span> <span class="n">native_machine</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">is_wow_64_2</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">utils</span><span class="o">.</span><span class="n">image_file_machine_to_processor_architecture</span><span class="p">(</span><span class="n">native_machine</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">KeyError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Unknown IsWow64Process2(native_machine:#x) -> </span><span class="si">{0}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">native_machine</span><span class="p">))</span>
|
||||
|
||||
<span class="c1"># No IsWow64Process2 -> assert it cannot be ARM64 and thus GetNativeSystemInfo will not lie ?</span>
|
||||
<span class="n">sysinfo</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">SYSTEM_INFO</span><span class="p">()</span>
|
||||
<span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">GetNativeSystemInfo</span><span class="p">(</span><span class="n">sysinfo</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">gdef</span><span class="o">.</span><span class="n">PROCESSOR_ARCHITECTURE_MAPPER</span><span class="p">[</span><span class="n">sysinfo</span><span class="o">.</span><span class="n">wProcessorArchitecture</span><span class="p">]</span>
|
||||
|
||||
|
||||
|
||||
<span class="nd">@staticmethod</span>
|
||||
<span class="k">def</span> <span class="nf">enumerate_processes</span><span class="p">():</span>
|
||||
@@ -584,7 +679,7 @@
|
||||
|
||||
<span class="nd">@staticmethod</span>
|
||||
<span class="k">def</span> <span class="nf">enumerate_threads</span><span class="p">():</span>
|
||||
<span class="k">return</span> <span class="p">[</span><span class="n">WinThread</span><span class="o">.</span><span class="n">_from_THREADENTRY32</span><span class="p">(</span><span class="n">th</span><span class="p">)</span> <span class="k">for</span> <span class="n">th</span> <span class="ow">in</span> <span class="n">System</span><span class="o">.</span><span class="n">enumerate_threads_generator</span><span class="p">()]</span>
|
||||
<span class="k">return</span> <span class="p">[</span><span class="n">process</span><span class="o">.</span><span class="n">WinThread</span><span class="o">.</span><span class="n">_from_THREADENTRY32</span><span class="p">(</span><span class="n">th</span><span class="p">)</span> <span class="k">for</span> <span class="n">th</span> <span class="ow">in</span> <span class="n">System</span><span class="o">.</span><span class="n">enumerate_threads_generator</span><span class="p">()]</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">enumerate_threads_setup_owners</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
@@ -651,7 +746,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.3 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.winobject.system</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -4,12 +4,12 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>windows.winobject.system_module — PythonForWindows 1.0.0 documentation</title>
|
||||
<title>windows.winobject.system_module — PythonForWindows 1.0.3 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="../../../_static/documentation_options.js?v=8d563738"></script>
|
||||
<script src="../../../_static/documentation_options.js?v=baaebd52"></script>
|
||||
<script src="../../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.3 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.winobject.system_module</a></li>
|
||||
</ul>
|
||||
@@ -92,6 +92,8 @@
|
||||
<span class="k">return</span> <span class="nb">list</span><span class="p">(</span><span class="n">modules</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">enumerate_kernel_modules_syswow64</span><span class="p">():</span>
|
||||
<span class="k">if</span> <span class="n">windows</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">_is_x86_on_arm64</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s2">"Crossing heaven gate x86 -> arm64 not implemented"</span><span class="p">)</span>
|
||||
<span class="n">cbsize</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">DWORD</span><span class="p">()</span>
|
||||
<span class="n">windows</span><span class="o">.</span><span class="n">syswow64</span><span class="o">.</span><span class="n">NtQuerySystemInformation_32_to_64</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">SystemModuleInformation</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">addressof</span><span class="p">(</span><span class="n">cbsize</span><span class="p">))</span>
|
||||
<span class="n">raw_buffer</span> <span class="o">=</span> <span class="p">(</span><span class="n">cbsize</span><span class="o">.</span><span class="n">value</span> <span class="o">*</span> <span class="n">gdef</span><span class="o">.</span><span class="n">BYTE</span><span class="p">)()</span>
|
||||
@@ -130,7 +132,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.3 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.winobject.system_module</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -4,12 +4,12 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>windows.winobject.task_scheduler — PythonForWindows 1.0.0 documentation</title>
|
||||
<title>windows.winobject.task_scheduler — PythonForWindows 1.0.2 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="../../../_static/documentation_options.js?v=8d563738"></script>
|
||||
<script src="../../../_static/documentation_options.js?v=1ed6394b"></script>
|
||||
<script src="../../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.2 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.winobject.task_scheduler</a></li>
|
||||
</ul>
|
||||
@@ -625,7 +625,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.2 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.winobject.task_scheduler</a></li>
|
||||
</ul>
|
||||
|
||||
+4
-4
@@ -4,12 +4,12 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>windows.winobject.token — PythonForWindows 1.0.0 documentation</title>
|
||||
<title>windows.winobject.token — PythonForWindows 1.0.2 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="../../../_static/documentation_options.js?v=8d563738"></script>
|
||||
<script src="../../../_static/documentation_options.js?v=1ed6394b"></script>
|
||||
<script src="../../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.2 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.winobject.token</a></li>
|
||||
</ul>
|
||||
@@ -739,7 +739,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.2 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.winobject.token</a></li>
|
||||
</ul>
|
||||
|
||||
+4
-4
@@ -4,12 +4,12 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>windows.winobject.volume — PythonForWindows 1.0.0 documentation</title>
|
||||
<title>windows.winobject.volume — PythonForWindows 1.0.2 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="../../../_static/documentation_options.js?v=8d563738"></script>
|
||||
<script src="../../../_static/documentation_options.js?v=1ed6394b"></script>
|
||||
<script src="../../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.2 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.winobject.volume</a></li>
|
||||
</ul>
|
||||
@@ -165,7 +165,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.2 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.winobject.volume</a></li>
|
||||
</ul>
|
||||
|
||||
+6
-6
@@ -4,12 +4,12 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>windows.winobject.wmi — PythonForWindows 1.0.0 documentation</title>
|
||||
<title>windows.winobject.wmi — PythonForWindows 1.0.3 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="../../../_static/documentation_options.js?v=8d563738"></script>
|
||||
<script src="../../../_static/documentation_options.js?v=baaebd52"></script>
|
||||
<script src="../../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.3 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.winobject.wmi</a></li>
|
||||
</ul>
|
||||
@@ -602,11 +602,11 @@
|
||||
<div class="viewcode-block" id="WmiManager">
|
||||
<a class="viewcode-back" href="../../../wmi.html#windows.winobject.wmi.WmiManager">[docs]</a>
|
||||
<span class="k">class</span> <span class="nc">WmiManager</span><span class="p">(</span><span class="nb">dict</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""The main WMI class exposed, used to list and access differents WMI namespace, can be used as a dict to access</span>
|
||||
<span class="w"> </span><span class="sa">r</span><span class="sd">"""The main WMI class exposed, used to list and access differents WMI namespace, can be used as a dict to access</span>
|
||||
<span class="sd"> :class:`WmiNamespace` by name</span>
|
||||
|
||||
<span class="sd"> Example:</span>
|
||||
<span class="sd"> >>> windows.system.wmi["root\\SecurityCenter2"]</span>
|
||||
<span class="sd"> >>> windows.system.wmi[r"root\SecurityCenter2"]</span>
|
||||
<span class="sd"> <WmiNamespace "root\SecurityCenter2"></span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">DEFAULT_NAMESPACE</span> <span class="o">=</span> <span class="s2">"root</span><span class="se">\\</span><span class="s2">cimv2"</span> <span class="c1">#: The default namespace for :func:`select` & :func:`query`</span>
|
||||
@@ -676,7 +676,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.3 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.winobject.wmi</a></li>
|
||||
</ul>
|
||||
|
||||
+4
-4
@@ -4,12 +4,12 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>windows.winproxy.apiproxy — PythonForWindows 1.0.0 documentation</title>
|
||||
<title>windows.winproxy.apiproxy — PythonForWindows 1.0.2 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="../../../_static/documentation_options.js?v=8d563738"></script>
|
||||
<script src="../../../_static/documentation_options.js?v=1ed6394b"></script>
|
||||
<script src="../../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.2 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.winproxy.apiproxy</a></li>
|
||||
</ul>
|
||||
@@ -196,7 +196,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.2 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.winproxy.apiproxy</a></li>
|
||||
</ul>
|
||||
|
||||
+4
-4
@@ -4,12 +4,12 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>windows.winproxy.error — PythonForWindows 1.0.0 documentation</title>
|
||||
<title>windows.winproxy.error — PythonForWindows 1.0.2 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="../../../_static/documentation_options.js?v=8d563738"></script>
|
||||
<script src="../../../_static/documentation_options.js?v=1ed6394b"></script>
|
||||
<script src="../../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.2 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.winproxy.error</a></li>
|
||||
</ul>
|
||||
@@ -150,7 +150,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.2 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.winproxy.error</a></li>
|
||||
</ul>
|
||||
|
||||
+4
-4
@@ -4,12 +4,12 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>windows.wintrust — PythonForWindows 1.0.0 documentation</title>
|
||||
<title>windows.wintrust — PythonForWindows 1.0.2 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="../../_static/documentation_options.js?v=8d563738"></script>
|
||||
<script src="../../_static/documentation_options.js?v=1ed6394b"></script>
|
||||
<script src="../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 1.0.2 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.wintrust</a></li>
|
||||
</ul>
|
||||
@@ -268,7 +268,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 1.0.0 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 1.0.2 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../index.html" >Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">windows.wintrust</a></li>
|
||||
</ul>
|
||||
|
||||
+10
-10
@@ -2,16 +2,6 @@
|
||||
|
||||
Interfaces
|
||||
----------
|
||||
.. class:: IActivationStageInfo
|
||||
|
||||
.. method:: QueryInterface
|
||||
.. method:: AddRef
|
||||
.. method:: Release
|
||||
.. method:: SetStageAndIndex
|
||||
.. method:: GetStage
|
||||
.. method:: GetIndex
|
||||
|
||||
|
||||
.. class:: ICallFactory
|
||||
|
||||
.. method:: QueryInterface
|
||||
@@ -722,6 +712,16 @@ Interfaces
|
||||
.. method:: GetReturnActivationProperties
|
||||
|
||||
|
||||
.. class:: IActivationStageInfo
|
||||
|
||||
.. method:: QueryInterface
|
||||
.. method:: AddRef
|
||||
.. method:: Release
|
||||
.. method:: SetStageAndIndex
|
||||
.. method:: GetStage
|
||||
.. method:: GetIndex
|
||||
|
||||
|
||||
.. class:: IClassClassicInfo
|
||||
|
||||
.. method:: QueryInterface
|
||||
|
||||
+24
@@ -69,6 +69,20 @@ Output
|
||||
|
||||
.. _token_sample:
|
||||
|
||||
|
||||
Microsoft Store Python Injection
|
||||
''''''''''''''''''''''''''''''''
|
||||
|
||||
Python execution in remote process fails with Microsoft Store builds of pythons (`mspython`), as the interpreter DLLs do not grant execute to Users.
|
||||
This sample shows a workaround by user https://github.com/dariushoule by copying needed mspython files to a temporary directory and injecting those instead.
|
||||
|
||||
.. literalinclude:: ..\..\samples\process\msstore_interpreter_remote_python.py
|
||||
|
||||
Output
|
||||
|
||||
.. literalinclude:: samples_output\process_msstore_interpreter_remote_python.txt
|
||||
|
||||
|
||||
Token
|
||||
"""""
|
||||
|
||||
@@ -103,7 +117,17 @@ Output
|
||||
|
||||
.. literalinclude:: samples_output\service_service_demo.txt
|
||||
|
||||
Windows Service in Python
|
||||
'''''''''''''''''''''''''
|
||||
|
||||
This script can register itself as a service and act on `stop` request.
|
||||
It also can delete its own service.
|
||||
|
||||
.. literalinclude:: ..\..\samples\service\python_service.py
|
||||
|
||||
Output
|
||||
|
||||
.. literalinclude:: samples_output\service_python_service.txt
|
||||
|
||||
|
||||
.. _sample_network_exploration:
|
||||
|
||||
+189
-13
@@ -152,6 +152,9 @@ WinDef
|
||||
.. autodata:: SORF_OXRES8
|
||||
.. autodata:: SORF_NULL
|
||||
.. autodata:: SORF_NOPING
|
||||
.. autodata:: UNIQUE_FLAG_PADDING
|
||||
.. autodata:: MAINHDRSIG
|
||||
.. autodata:: ENTRYHDRSIG
|
||||
.. autodata:: CWCSTORAGENAME
|
||||
.. autodata:: STGM_DIRECT
|
||||
.. autodata:: STGM_TRANSACTED
|
||||
@@ -496,6 +499,15 @@ WinDef
|
||||
.. autodata:: ERROR_SEVERITY_INFORMATIONAL
|
||||
.. autodata:: ERROR_SEVERITY_WARNING
|
||||
.. autodata:: ERROR_SEVERITY_ERROR
|
||||
.. autodata:: FACILITY_WINDOWS
|
||||
.. autodata:: FACILITY_WIN32
|
||||
.. autodata:: FACILITY_STORAGE
|
||||
.. autodata:: FACILITY_RPC
|
||||
.. autodata:: FACILITY_NULL
|
||||
.. autodata:: FACILITY_ITF
|
||||
.. autodata:: FACILITY_DISPATCH
|
||||
.. autodata:: STATUS_SEVERITY_SUCCESS
|
||||
.. autodata:: STATUS_SEVERITY_COERROR
|
||||
.. autodata:: EVENT_TRACE_FLAG_DISPATCHER
|
||||
.. autodata:: EVENT_TRACE_FLAG_VIRTUAL_ALLOC
|
||||
.. autodata:: EVENT_TRACE_FLAG_VAMAP
|
||||
@@ -1133,6 +1145,89 @@ WinDef
|
||||
.. autodata:: NMPWAIT_WAIT_FOREVER
|
||||
.. autodata:: NMPWAIT_NOWAIT
|
||||
.. autodata:: NMPWAIT_USE_DEFAULT_WAIT
|
||||
.. autodata:: ProcThreadAttributeParentProcess
|
||||
.. autodata:: ProcThreadAttributeExtendedFlags
|
||||
.. autodata:: ProcThreadAttributeHandleList
|
||||
.. autodata:: ProcThreadAttributeGroupAffinity
|
||||
.. autodata:: ProcThreadAttributePreferredNode
|
||||
.. autodata:: ProcThreadAttributeIdealProcessor
|
||||
.. autodata:: ProcThreadAttributeUmsThread
|
||||
.. autodata:: ProcThreadAttributeMitigationPolicy
|
||||
.. autodata:: ProcThreadAttributePackageFullName
|
||||
.. autodata:: ProcThreadAttributeSecurityCapabilities
|
||||
.. autodata:: ProcThreadAttributeConsoleReference
|
||||
.. autodata:: ProcThreadAttributeProtectionLevel
|
||||
.. autodata:: ProcThreadAttributeOsMaxVersionTested
|
||||
.. autodata:: ProcThreadAttributeJobList
|
||||
.. autodata:: ProcThreadAttributeChildProcessPolicy
|
||||
.. autodata:: ProcThreadAttributeAllApplicationPackagesPolicy
|
||||
.. autodata:: ProcThreadAttributeWin32kFilter
|
||||
.. autodata:: ProcThreadAttributeSafeOpenPromptOriginClaim
|
||||
.. autodata:: ProcThreadAttributeDesktopAppPolicy
|
||||
.. autodata:: ProcThreadAttributeBnoIsolation
|
||||
.. autodata:: ProcThreadAttributePseudoConsole
|
||||
.. autodata:: ProcThreadAttributeIsolationManifest
|
||||
.. autodata:: ProcThreadAttributeMitigationAuditPolicy
|
||||
.. autodata:: ProcThreadAttributeMachineType
|
||||
.. autodata:: ProcThreadAttributeComponentFilter
|
||||
.. autodata:: ProcThreadAttributeEnableOptionalXStateFeatures
|
||||
.. autodata:: ProcThreadAttributeCreateStore
|
||||
.. autodata:: ProcThreadAttributeTrustedApp
|
||||
.. autodata:: ProcThreadAttributeSveVectorLength
|
||||
.. autodata:: PROC_THREAD_ATTRIBUTE_NUMBER
|
||||
.. autodata:: PROC_THREAD_ATTRIBUTE_THREAD
|
||||
.. autodata:: PROC_THREAD_ATTRIBUTE_INPUT
|
||||
.. autodata:: PROC_THREAD_ATTRIBUTE_ADDITIVE
|
||||
.. autodata:: PROC_THREAD_ATTRIBUTE_PARENT_PROCESS
|
||||
.. autodata:: PROC_THREAD_ATTRIBUTE_HANDLE_LIST
|
||||
.. autodata:: PROC_THREAD_ATTRIBUTE_GROUP_AFFINITY
|
||||
.. autodata:: PROC_THREAD_ATTRIBUTE_PREFERRED_NODE
|
||||
.. autodata:: PROC_THREAD_ATTRIBUTE_IDEAL_PROCESSOR
|
||||
.. autodata:: PROC_THREAD_ATTRIBUTE_UMS_THREAD
|
||||
.. autodata:: PROC_THREAD_ATTRIBUTE_MITIGATION_POLICY
|
||||
.. autodata:: PROC_THREAD_ATTRIBUTE_SECURITY_CAPABILITIES
|
||||
.. autodata:: PROC_THREAD_ATTRIBUTE_PROTECTION_LEVEL
|
||||
.. autodata:: PROC_THREAD_ATTRIBUTE_PSEUDOCONSOLE
|
||||
.. autodata:: PROC_THREAD_ATTRIBUTE_MACHINE_TYPE
|
||||
.. autodata:: PROC_THREAD_ATTRIBUTE_ENABLE_OPTIONAL_XSTATE_FEATURES
|
||||
.. autodata:: PROC_THREAD_ATTRIBUTE_SVE_VECTOR_LENGTH
|
||||
.. autodata:: PROCESSOR_INTEL_386
|
||||
.. autodata:: PROCESSOR_INTEL_486
|
||||
.. autodata:: PROCESSOR_INTEL_PENTIUM
|
||||
.. autodata:: PROCESSOR_INTEL_IA64
|
||||
.. autodata:: PROCESSOR_MIPS_R4000
|
||||
.. autodata:: PROCESSOR_ALPHA_21064
|
||||
.. autodata:: PROCESSOR_PPC_601
|
||||
.. autodata:: PROCESSOR_PPC_603
|
||||
.. autodata:: PROCESSOR_PPC_604
|
||||
.. autodata:: PROCESSOR_PPC_620
|
||||
.. autodata:: PROCESSOR_HITACHI_SH3
|
||||
.. autodata:: PROCESSOR_HITACHI_SH3E
|
||||
.. autodata:: PROCESSOR_HITACHI_SH4
|
||||
.. autodata:: PROCESSOR_MOTOROLA_821
|
||||
.. autodata:: PROCESSOR_SHx_SH3
|
||||
.. autodata:: PROCESSOR_SHx_SH4
|
||||
.. autodata:: PROCESSOR_STRONGARM
|
||||
.. autodata:: PROCESSOR_ARM720
|
||||
.. autodata:: PROCESSOR_ARM820
|
||||
.. autodata:: PROCESSOR_ARM920
|
||||
.. autodata:: PROCESSOR_ARM_7TDMI
|
||||
.. autodata:: PROCESSOR_OPTIL
|
||||
.. autodata:: PROCESSOR_ARCHITECTURE_INTEL
|
||||
.. autodata:: PROCESSOR_ARCHITECTURE_MIPS
|
||||
.. autodata:: PROCESSOR_ARCHITECTURE_ALPHA
|
||||
.. autodata:: PROCESSOR_ARCHITECTURE_PPC
|
||||
.. autodata:: PROCESSOR_ARCHITECTURE_SHX
|
||||
.. autodata:: PROCESSOR_ARCHITECTURE_ARM
|
||||
.. autodata:: PROCESSOR_ARCHITECTURE_IA64
|
||||
.. autodata:: PROCESSOR_ARCHITECTURE_ALPHA64
|
||||
.. autodata:: PROCESSOR_ARCHITECTURE_MSIL
|
||||
.. autodata:: PROCESSOR_ARCHITECTURE_AMD64
|
||||
.. autodata:: PROCESSOR_ARCHITECTURE_IA32_ON_WIN64
|
||||
.. autodata:: PROCESSOR_ARCHITECTURE_NEUTRAL
|
||||
.. autodata:: PROCESSOR_ARCHITECTURE_ARM64
|
||||
.. autodata:: PROCESSOR_ARCHITECTURE_ARM32_ON_WIN64
|
||||
.. autodata:: PROCESSOR_ARCHITECTURE_UNKNOWN
|
||||
.. autodata:: HKEY_CLASSES_ROOT
|
||||
.. autodata:: HKEY_CURRENT_USER
|
||||
.. autodata:: HKEY_LOCAL_MACHINE
|
||||
@@ -1754,6 +1849,45 @@ WinDef
|
||||
.. autodata:: SPC_FINANCIAL_CRITERIA_OBJID
|
||||
.. autodata:: SPC_LINK_OBJID
|
||||
.. autodata:: SPC_SIGINFO_OBJID
|
||||
.. autodata:: CONTEXT_I386
|
||||
.. autodata:: CONTEXT_AMD64
|
||||
.. autodata:: CONTEXT_ARM
|
||||
.. autodata:: CONTEXT_ARM64
|
||||
.. autodata:: CONTEXT_i386
|
||||
.. autodata:: CONTEXT_i486
|
||||
.. autodata:: WOW64_CONTEXT_i386
|
||||
.. autodata:: WOW64_CONTEXT_i486
|
||||
.. autodata:: CONTEXT_CONTROL
|
||||
.. autodata:: CONTEXT_INTEGER
|
||||
.. autodata:: CONTEXT_SEGMENTS
|
||||
.. autodata:: CONTEXT_FLOATING_POINT
|
||||
.. autodata:: CONTEXT_DEBUG_REGISTERS
|
||||
.. autodata:: CONTEXT_EXTENDED_REGISTERS
|
||||
.. autodata:: CONTEXT_FULL
|
||||
.. autodata:: CONTEXT_ALL
|
||||
.. autodata:: CONTEXT_XSTATE
|
||||
.. autodata:: WOW64_CONTEXT_CONTROL
|
||||
.. autodata:: WOW64_CONTEXT_INTEGER
|
||||
.. autodata:: WOW64_CONTEXT_SEGMENTS
|
||||
.. autodata:: WOW64_CONTEXT_FLOATING_POINT
|
||||
.. autodata:: WOW64_CONTEXT_DEBUG_REGISTERS
|
||||
.. autodata:: WOW64_CONTEXT_EXTENDED_REGISTERS
|
||||
.. autodata:: WOW64_CONTEXT_FULL
|
||||
.. autodata:: WOW64_CONTEXT_ALL
|
||||
.. autodata:: WOW64_CONTEXT_XSTATE
|
||||
.. autodata:: WOW64_CONTEXT_EXCEPTION_ACTIVE
|
||||
.. autodata:: WOW64_CONTEXT_SERVICE_ACTIVE
|
||||
.. autodata:: WOW64_CONTEXT_EXCEPTION_REQUEST
|
||||
.. autodata:: WOW64_CONTEXT_EXCEPTION_REPORTING
|
||||
.. autodata:: CONTEXT_ARM64_CONTROL
|
||||
.. autodata:: CONTEXT_ARM64_INTEGER
|
||||
.. autodata:: CONTEXT_ARM64_FLOATING_POINT
|
||||
.. autodata:: CONTEXT_ARM64_DEBUG_REGISTERS
|
||||
.. autodata:: CONTEXT_ARM64_X18
|
||||
.. autodata:: CONTEXT_UNWOUND_TO_CALL
|
||||
.. autodata:: CONTEXT_RET_TO_GUEST
|
||||
.. autodata:: ARM64_MAX_BREAKPOINTS
|
||||
.. autodata:: ARM64_MAX_WATCHPOINTS
|
||||
.. autodata:: FILE_VER_GET_LOCALISED
|
||||
.. autodata:: FILE_VER_GET_NEUTRAL
|
||||
.. autodata:: FILE_VER_GET_PREFETCHED
|
||||
@@ -1865,19 +1999,6 @@ WinDef
|
||||
.. autodata:: TH32CS_SNAPMODULE32
|
||||
.. autodata:: TH32CS_SNAPALL
|
||||
.. autodata:: TH32CS_INHERIT
|
||||
.. autodata:: CONTEXT_I386
|
||||
.. autodata:: CONTEXT_AMD64
|
||||
.. autodata:: CONTEXT_ARM
|
||||
.. autodata:: CONTEXT_ARM64
|
||||
.. autodata:: CONTEXT_CONTROL
|
||||
.. autodata:: CONTEXT_INTEGER
|
||||
.. autodata:: CONTEXT_SEGMENTS
|
||||
.. autodata:: CONTEXT_FLOATING_POINT
|
||||
.. autodata:: CONTEXT_DEBUG_REGISTERS
|
||||
.. autodata:: CONTEXT_EXTENDED_REGISTERS
|
||||
.. autodata:: CONTEXT_FULL
|
||||
.. autodata:: CONTEXT_ALL
|
||||
.. autodata:: CONTEXT_XSTATE
|
||||
.. autodata:: PAGE_NOACCESS
|
||||
.. autodata:: PAGE_READONLY
|
||||
.. autodata:: PAGE_READWRITE
|
||||
@@ -2910,6 +3031,7 @@ WinDef
|
||||
.. autodata:: IMAGE_FILE_MACHINE_M32R
|
||||
.. autodata:: IMAGE_FILE_MACHINE_CEE
|
||||
.. autodata:: IMAGE_FILE_MACHINE_ARM64
|
||||
.. autodata:: IMAGE_FILE_MACHINE_TARGET_HOST
|
||||
.. autodata:: CERT_QUERY_OBJECT_FILE
|
||||
.. autodata:: CERT_QUERY_OBJECT_BLOB
|
||||
.. autodata:: CERT_QUERY_CONTENT_CERT
|
||||
@@ -3222,6 +3344,37 @@ WinDef
|
||||
.. autodata:: CRYPT_SGCKEY
|
||||
.. autodata:: CRYPT_ARCHIVABLE
|
||||
.. autodata:: CRYPT_FORCE_KEY_PROTECTION_HIGH
|
||||
.. autodata:: CERT_RDN_ANY_TYPE
|
||||
.. autodata:: CERT_RDN_ENCODED_BLOB
|
||||
.. autodata:: CERT_RDN_OCTET_STRING
|
||||
.. autodata:: CERT_RDN_NUMERIC_STRING
|
||||
.. autodata:: CERT_RDN_PRINTABLE_STRING
|
||||
.. autodata:: CERT_RDN_TELETEX_STRING
|
||||
.. autodata:: CERT_RDN_T61_STRING
|
||||
.. autodata:: CERT_RDN_VIDEOTEX_STRING
|
||||
.. autodata:: CERT_RDN_IA5_STRING
|
||||
.. autodata:: CERT_RDN_GRAPHIC_STRING
|
||||
.. autodata:: CERT_RDN_VISIBLE_STRING
|
||||
.. autodata:: CERT_RDN_ISO646_STRING
|
||||
.. autodata:: CERT_RDN_GENERAL_STRING
|
||||
.. autodata:: CERT_RDN_UNIVERSAL_STRING
|
||||
.. autodata:: CERT_RDN_INT4_STRING
|
||||
.. autodata:: CERT_RDN_BMP_STRING
|
||||
.. autodata:: CERT_RDN_UNICODE_STRING
|
||||
.. autodata:: CERT_RDN_UTF8_STRING
|
||||
.. autodata:: CERT_RDN_TYPE_MASK
|
||||
.. autodata:: CERT_RDN_FLAGS_MASK
|
||||
.. autodata:: CERT_RDN_ENABLE_T61_UNICODE_FLAG
|
||||
.. autodata:: CERT_RDN_ENABLE_UTF8_UNICODE_FLAG
|
||||
.. autodata:: CERT_RDN_FORCE_UTF8_UNICODE_FLAG
|
||||
.. autodata:: CERT_RDN_DISABLE_CHECK_TYPE_FLAG
|
||||
.. autodata:: CERT_RDN_DISABLE_IE4_UTF8_FLAG
|
||||
.. autodata:: CRYPT_DECODE_NOCOPY_FLAG
|
||||
.. autodata:: CRYPT_DECODE_TO_BE_SIGNED_FLAG
|
||||
.. autodata:: CRYPT_DECODE_SHARE_OID_STRING_FLAG
|
||||
.. autodata:: CRYPT_DECODE_NO_SIGNATURE_BYTE_REVERSAL_FLAG
|
||||
.. autodata:: CRYPT_DECODE_ALLOC_FLAG
|
||||
.. autodata:: CRYPT_UNICODE_NAME_DECODE_DISABLE_IE4_UTF8_FLAG
|
||||
.. autodata:: CRYPT_ENCODE_DECODE_NONE
|
||||
.. autodata:: X509_CERT
|
||||
.. autodata:: X509_CERT_TO_BE_SIGNED
|
||||
@@ -3360,6 +3513,29 @@ WinDef
|
||||
.. autodata:: CMSG_CTRL_VERIFY_SIGNATURE_EX
|
||||
.. autodata:: CMSG_CTRL_ADD_CMS_SIGNER_INFO
|
||||
.. autodata:: CMSG_CTRL_ENABLE_STRONG_SIGNATURE
|
||||
.. autodata:: CERT_SET_KEY_PROV_HANDLE_PROP_ID
|
||||
.. autodata:: CERT_SET_KEY_CONTEXT_PROP_ID
|
||||
.. autodata:: CERT_NCRYPT_KEY_SPEC
|
||||
.. autodata:: CERT_REQUEST_V1
|
||||
.. autodata:: CRYPT_STRING_BASE64HEADER
|
||||
.. autodata:: CRYPT_STRING_BASE64
|
||||
.. autodata:: CRYPT_STRING_BINARY
|
||||
.. autodata:: CRYPT_STRING_BASE64REQUESTHEADER
|
||||
.. autodata:: CRYPT_STRING_HEX
|
||||
.. autodata:: CRYPT_STRING_HEXASCII
|
||||
.. autodata:: CRYPT_STRING_BASE64_ANY
|
||||
.. autodata:: CRYPT_STRING_ANY
|
||||
.. autodata:: CRYPT_STRING_HEX_ANY
|
||||
.. autodata:: CRYPT_STRING_BASE64X509CRLHEADER
|
||||
.. autodata:: CRYPT_STRING_HEXADDR
|
||||
.. autodata:: CRYPT_STRING_HEXASCIIADDR
|
||||
.. autodata:: CRYPT_STRING_HEXRAW
|
||||
.. autodata:: CRYPT_STRING_BASE64URI
|
||||
.. autodata:: CRYPT_STRING_PERCENTESCAPE
|
||||
.. autodata:: CRYPT_STRING_HASHDATA
|
||||
.. autodata:: CRYPT_STRING_STRICT
|
||||
.. autodata:: CRYPT_STRING_NOCRLF
|
||||
.. autodata:: CRYPT_STRING_NOCR
|
||||
.. autodata:: WSADESCRIPTION_LEN
|
||||
.. autodata:: WSASYS_STATUS_LEN
|
||||
.. autodata:: WSAPROTOCOL_LEN
|
||||
|
||||
+78
-14
@@ -326,6 +326,18 @@ Functions
|
||||
|
||||
.. function:: CertCloseStore(hCertStore, dwFlags)
|
||||
|
||||
.. function:: CryptSignAndEncodeCertificate(hBCryptKey, dwKeySpec, dwCertEncodingType, lpszStructType, pvStructInfo, pSignatureAlgorithm, pvHashAuxInfo, pbEncoded, pcbEncoded)
|
||||
|
||||
.. function:: CryptSignCertificate(hBCryptKey, dwKeySpec, dwCertEncodingType, pbEncodedToBeSigned, cbEncodedToBeSigned, pSignatureAlgorithm, pvHashAuxInfo, pbSignature, pcbSignature)
|
||||
|
||||
.. function:: CryptBinaryToStringA(pbBinary, cbBinary, dwFlags, pszString, pcchString)
|
||||
|
||||
.. function:: CryptBinaryToStringW(pbBinary, cbBinary, dwFlags, pszString, pcchString)
|
||||
|
||||
.. function:: CryptStringToBinaryA(pszString, cchString, dwFlags, pbBinary, pcbBinary, pdwSkip, pdwFlags)
|
||||
|
||||
.. function:: CryptStringToBinaryW(pszString, cchString, dwFlags, pbBinary, pcbBinary, pdwSkip, pdwFlags)
|
||||
|
||||
.. function:: OpenVirtualDisk(VirtualStorageType, Path, VirtualDiskAccessMask, Flags, Parameters, Handle)
|
||||
|
||||
.. function:: AttachVirtualDisk(VirtualDiskHandle, SecurityDescriptor, Flags, ProviderSpecificFlags, Parameters, Overlapped)
|
||||
@@ -488,6 +500,12 @@ Functions
|
||||
|
||||
.. function:: LockFileEx(hFile, dwFlags, dwReserved, nNumberOfBytesToLockLow, nNumberOfBytesToLockHigh, lpOverlapped)
|
||||
|
||||
.. function:: SetFileInformationByHandle(hFile, FileInformationClass, lpFileInformation, dwBufferSize)
|
||||
|
||||
.. function:: GetFileInformationByHandle(hFile, lpFileInformation)
|
||||
|
||||
.. function:: GetFileInformationByHandleEx(hFile, FileInformationClass, lpFileInformation, dwBufferSize)
|
||||
|
||||
.. function:: HeapAlloc(hHeap, dwFlags, dwBytes)
|
||||
|
||||
.. function:: InternetCheckConnectionA(lpszUrl, dwFlags, dwReserved)
|
||||
@@ -586,6 +604,10 @@ Functions
|
||||
|
||||
.. function:: UnmapViewOfFile(lpBaseAddress)
|
||||
|
||||
.. function:: NCryptOpenKey(hProvider, phKey, pszKeyName, dwLegacyKeySpec, dwFlags)
|
||||
|
||||
.. function:: NCryptOpenStorageProvider(phProvider, pszProviderName, dwFlags)
|
||||
|
||||
.. function:: NetQueryDisplayInformation(ServerName, Level, Index, EntriesRequested, PreferredMaximumLength, ReturnedEntryCount, SortedBuffer)
|
||||
|
||||
.. function:: NetUserEnum(servername, level, filter, bufptr, prefmaxlen, entriesread, totalentries, resume_handle)
|
||||
@@ -690,6 +712,12 @@ Functions
|
||||
|
||||
.. function:: FreeLibrary(hLibModule)
|
||||
|
||||
.. function:: GetProcessInformation(hProcess, ProcessInformationClass, ProcessInformation, ProcessInformationSize)
|
||||
|
||||
.. function:: SetProcessInformation(hProcess, ProcessInformationClass, ProcessInformation, ProcessInformationSize)
|
||||
|
||||
.. function:: RtlGetCurrentPeb()
|
||||
|
||||
.. function:: RegQueryValueExA(hKey, lpValueName, lpReserved, lpType, lpData, lpcbData)
|
||||
|
||||
.. function:: RegQueryValueExW(hKey, lpValueName, lpReserved, lpType, lpData, lpcbData)
|
||||
@@ -916,6 +944,18 @@ Functions
|
||||
|
||||
.. function:: StartServiceCtrlDispatcherW(lpServiceStartTable)
|
||||
|
||||
.. function:: RegisterServiceCtrlHandlerExA(lpServiceName, lpHandlerProc, lpContext)
|
||||
|
||||
.. function:: RegisterServiceCtrlHandlerExW(lpServiceName, lpHandlerProc, lpContext)
|
||||
|
||||
.. function:: RegisterServiceCtrlHandlerA(lpServiceName, lpHandlerProc)
|
||||
|
||||
.. function:: RegisterServiceCtrlHandlerW(lpServiceName, lpHandlerProc)
|
||||
|
||||
.. function:: SetServiceStatus(hServiceStatus, lpServiceStatus)
|
||||
|
||||
.. function:: SetServiceBits(hServiceStatus, dwServiceBits, bSetBitsOn, bUpdateImmediately)
|
||||
|
||||
.. function:: SetupDiClassNameFromGuidA(ClassGuid, ClassName, ClassNameSize, RequiredSize)
|
||||
|
||||
.. function:: SetupDiClassNameFromGuidW(ClassGuid, ClassName, ClassNameSize, RequiredSize)
|
||||
@@ -1194,6 +1234,42 @@ Functions
|
||||
|
||||
.. function:: LookupAccountNameW(lpSystemName, lpAccountName, Sid, cbSid, ReferencedDomainName, cchReferencedDomainName, peUse)
|
||||
|
||||
.. function:: GetNativeSystemInfo(lpSystemInfo)
|
||||
|
||||
.. function:: GetSystemInfo(lpSystemInfo)
|
||||
|
||||
.. function:: IsWow64Process(hProcess, Wow64Process)
|
||||
|
||||
.. function:: IsWow64Process2(hProcess, pProcessMachine, pNativeMachine)
|
||||
|
||||
.. function:: IsWow64GuestMachineSupported(WowGuestMachine, MachineIsSupported)
|
||||
|
||||
.. function:: GetSystemWow64DirectoryA(lpBuffer, uSize)
|
||||
|
||||
.. function:: GetSystemWow64DirectoryW(lpBuffer, uSize)
|
||||
|
||||
.. function:: GetSystemWow64Directory2A(lpBuffer, uSize, ImageFileMachineType)
|
||||
|
||||
.. function:: GetSystemWow64Directory2W(lpBuffer, uSize, ImageFileMachineType)
|
||||
|
||||
.. function:: Wow64DisableWow64FsRedirection(OldValue)
|
||||
|
||||
.. function:: Wow64EnableWow64FsRedirection(Wow64FsEnableRedirection)
|
||||
|
||||
.. function:: Wow64RevertWow64FsRedirection(OlValue)
|
||||
|
||||
.. function:: Wow64GetThreadContext(hThread, lpContext)
|
||||
|
||||
.. function:: Wow64SetThreadContext(hThread, lpContext)
|
||||
|
||||
.. function:: Wow64SetThreadDefaultGuestMachine(Machine)
|
||||
|
||||
.. function:: Wow64SuspendThread(hThread)
|
||||
|
||||
.. function:: NtWow64ReadVirtualMemory64(hProcess, lpBaseAddress, lpBuffer, nSize, lpNumberOfBytesRead)
|
||||
|
||||
.. function:: NtWow64WriteVirtualMemory64(hProcess, lpBaseAddress, lpBuffer, nSize, lpNumberOfBytesWritten)
|
||||
|
||||
.. function:: FileTimeToSystemTime(lpFileTime, lpSystemTime)
|
||||
|
||||
.. function:: SystemTimeToFileTime(lpSystemTime, lpFileTime)
|
||||
@@ -1330,6 +1406,8 @@ Functions
|
||||
|
||||
.. function:: CreateRemoteThread(hProcess, lpThreadAttributes, dwStackSize, lpStartAddress, lpParameter, dwCreationFlags, lpThreadId)
|
||||
|
||||
.. function:: CreateRemoteThreadEx(hProcess, lpThreadAttributes, dwStackSize, lpStartAddress, lpParameter, dwCreationFlags, lpAttributeList, lpThreadId)
|
||||
|
||||
.. function:: CreateProcessA(lpApplicationName, lpCommandLine, lpProcessAttributes, lpThreadAttributes, bInheritHandles, dwCreationFlags, lpEnvironment, lpCurrentDirectory, lpStartupInfo, lpProcessInformation)
|
||||
|
||||
.. function:: CreateProcessW(lpApplicationName, lpCommandLine, lpProcessAttributes, lpThreadAttributes, bInheritHandles, dwCreationFlags, lpEnvironment, lpCurrentDirectory, lpStartupInfo, lpProcessInformation)
|
||||
@@ -1350,12 +1428,8 @@ Functions
|
||||
|
||||
.. function:: ReadProcessMemory(hProcess, lpBaseAddress, lpBuffer, nSize, lpNumberOfBytesRead)
|
||||
|
||||
.. function:: NtWow64ReadVirtualMemory64(hProcess, lpBaseAddress, lpBuffer, nSize, lpNumberOfBytesRead)
|
||||
|
||||
.. function:: WriteProcessMemory(hProcess, lpBaseAddress, lpBuffer, nSize, lpNumberOfBytesWritten)
|
||||
|
||||
.. function:: NtWow64WriteVirtualMemory64(hProcess, lpBaseAddress, lpBuffer, nSize, lpNumberOfBytesWritten)
|
||||
|
||||
.. function:: GetCurrentProcess()
|
||||
|
||||
.. function:: CreateFileA(lpFileName, dwDesiredAccess, dwShareMode, lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes, hTemplateFile)
|
||||
@@ -1448,14 +1522,6 @@ Functions
|
||||
|
||||
.. function:: DeviceIoControl(hDevice, dwIoControlCode, lpInBuffer, nInBufferSize, lpOutBuffer, nOutBufferSize, lpBytesReturned, lpOverlapped)
|
||||
|
||||
.. function:: Wow64DisableWow64FsRedirection(OldValue)
|
||||
|
||||
.. function:: Wow64RevertWow64FsRedirection(OldValue)
|
||||
|
||||
.. function:: Wow64EnableWow64FsRedirection(Wow64FsEnableRedirection)
|
||||
|
||||
.. function:: Wow64GetThreadContext(hThread, lpContext)
|
||||
|
||||
.. function:: SetConsoleCtrlHandler(HandlerRoutine, Add)
|
||||
|
||||
.. function:: GlobalAlloc(uFlags, dwBytes)
|
||||
@@ -1510,8 +1576,6 @@ Functions
|
||||
|
||||
.. function:: GetProcessId(Process)
|
||||
|
||||
.. function:: Wow64SetThreadContext(hThread, lpContext)
|
||||
|
||||
.. function:: GetMappedFileNameW(hProcess, lpv, lpFilename, nSize)
|
||||
|
||||
.. function:: GetMappedFileNameA(hProcess, lpv, lpFilename, nSize)
|
||||
|
||||
+3549
-2466
File diff suppressed because it is too large
Load Diff
+1
-1
@@ -1,5 +1,5 @@
|
||||
const DOCUMENTATION_OPTIONS = {
|
||||
VERSION: '1.0.1',
|
||||
VERSION: '1.0.4',
|
||||
LANGUAGE: 'en',
|
||||
COLLAPSE_INDEX: false,
|
||||
BUILDER: 'html',
|
||||
|
||||
Vendored
+4
-4
@@ -5,12 +5,12 @@
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<title>12. windows.alpc – Advanced Local Procedure Call — PythonForWindows 1.0.1 documentation</title>
|
||||
<title>12. windows.alpc – Advanced Local Procedure Call — PythonForWindows 1.0.4 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="_static/documentation_options.js?v=292eb321"></script>
|
||||
<script src="_static/documentation_options.js?v=71272d9f"></script>
|
||||
<script src="_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
<li class="right" >
|
||||
<a href="crypto.html" title="11. windows.crypto – CryptoAPI"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 1.0.1 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 1.0.4 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href=""><span class="section-number">12. </span><code class="docutils literal notranslate"><span class="pre">windows.alpc</span></code> – Advanced Local Procedure Call</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -544,7 +544,7 @@ ALPC messages over an ALPC port and the classes representing these messages.</p>
|
||||
<li class="right" >
|
||||
<a href="crypto.html" title="11. windows.crypto – CryptoAPI"
|
||||
>previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 1.0.1 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 1.0.4 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href=""><span class="section-number">12. </span><code class="docutils literal notranslate"><span class="pre">windows.alpc</span></code> – Advanced Local Procedure Call</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
Vendored
+4
-4
@@ -5,12 +5,12 @@
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<title>10. windows.com - Component Object Model — PythonForWindows 1.0.1 documentation</title>
|
||||
<title>10. windows.com - Component Object Model — PythonForWindows 1.0.4 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="_static/documentation_options.js?v=292eb321"></script>
|
||||
<script src="_static/documentation_options.js?v=71272d9f"></script>
|
||||
<script src="_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
<li class="right" >
|
||||
<a href="debug.html" title="9. windows.debug – Debugging"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 1.0.1 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 1.0.4 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href=""><span class="section-number">10. </span><code class="xref py py-mod docutils literal notranslate"><span class="pre">windows.com</span></code> - Component Object Model</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -204,7 +204,7 @@ You can then use the instance to call whatever method you need.</p>
|
||||
<li class="right" >
|
||||
<a href="debug.html" title="9. windows.debug – Debugging"
|
||||
>previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 1.0.1 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 1.0.4 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href=""><span class="section-number">10. </span><code class="xref py py-mod docutils literal notranslate"><span class="pre">windows.com</span></code> - Component Object Model</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
Vendored
+26
-4
@@ -5,12 +5,12 @@
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<title>11. windows.crypto – CryptoAPI — PythonForWindows 1.0.1 documentation</title>
|
||||
<title>11. windows.crypto – CryptoAPI — PythonForWindows 1.0.4 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="_static/documentation_options.js?v=292eb321"></script>
|
||||
<script src="_static/documentation_options.js?v=71272d9f"></script>
|
||||
<script src="_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
<li class="right" >
|
||||
<a href="com.html" title="10. windows.com - Component Object Model"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 1.0.1 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 1.0.4 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href=""><span class="section-number">11. </span><code class="docutils literal notranslate"><span class="pre">windows.crypto</span></code> – CryptoAPI</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -218,6 +218,12 @@ See <a class="reference external" href="https://msdn.microsoft.com/en-us/library
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="py method">
|
||||
<dt class="sig sig-object py" id="windows.crypto.Certificate.get_private_key">
|
||||
<span class="sig-name descname"><span class="pre">get_private_key</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">flags</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/crypto/certificate.html#Certificate.get_private_key"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#windows.crypto.Certificate.get_private_key" title="Link to this definition">¶</a></dt>
|
||||
<dd><p>Tmp API: return value will change</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="py method">
|
||||
<dt class="sig sig-object py" id="windows.crypto.Certificate.get_property">
|
||||
<span class="sig-name descname"><span class="pre">get_property</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">prop</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/crypto/certificate.html#Certificate.get_property"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#windows.crypto.Certificate.get_property" title="Link to this definition">¶</a></dt>
|
||||
@@ -246,6 +252,12 @@ See <a class="reference external" href="https://msdn.microsoft.com/en-us/library
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="py property">
|
||||
<dt class="sig sig-object py" id="windows.crypto.Certificate.private_key">
|
||||
<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">private_key</span></span><a class="headerlink" href="#windows.crypto.Certificate.private_key" title="Link to this definition">¶</a></dt>
|
||||
<dd><p>Tmp API: return value will change</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="py property">
|
||||
<dt class="sig sig-object py" id="windows.crypto.Certificate.properties">
|
||||
<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">properties</span></span><a class="headerlink" href="#windows.crypto.Certificate.properties" title="Link to this definition">¶</a></dt>
|
||||
@@ -375,6 +387,13 @@ See <a class="reference external" href="https://msdn.microsoft.com/en-us/library
|
||||
(see <a class="reference external" href="https://msdn.microsoft.com/en-us/library/windows/desktop/aa388136(v=vs.85).aspx">System Store Locations</a>)</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="py method">
|
||||
<dt class="sig sig-object py" id="windows.crypto.CertificateStore.from_user_store">
|
||||
<em class="property"><span class="pre">classmethod</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">from_user_store</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">store_name</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">user</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/crypto/certificate.html#CertificateStore.from_user_store"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#windows.crypto.CertificateStore.from_user_store" title="Link to this definition">¶</a></dt>
|
||||
<dd><p>Create a new <a class="reference internal" href="#windows.crypto.CertificateStore" title="windows.crypto.CertificateStore"><code class="xref py py-class docutils literal notranslate"><span class="pre">CertificateStore</span></code></a> from system store <code class="docutils literal notranslate"><span class="pre">store_name</span></code>
|
||||
(see <a class="reference external" href="https://msdn.microsoft.com/en-us/library/windows/desktop/aa388136(v=vs.85).aspx">System Store Locations</a>)</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="py method">
|
||||
<dt class="sig sig-object py" id="windows.crypto.CertificateStore.new_in_memory">
|
||||
<em class="property"><span class="pre">classmethod</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">new_in_memory</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/crypto/certificate.html#CertificateStore.new_in_memory"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#windows.crypto.CertificateStore.new_in_memory" title="Link to this definition">¶</a></dt>
|
||||
@@ -644,9 +663,11 @@ See <a class="reference external" href="https://msdn.microsoft.com/en-us/library
|
||||
<li><a class="reference internal" href="#windows.crypto.Certificate.from_buffer"><code class="docutils literal notranslate"><span class="pre">from_buffer()</span></code></a></li>
|
||||
<li><a class="reference internal" href="#windows.crypto.Certificate.from_file"><code class="docutils literal notranslate"><span class="pre">from_file()</span></code></a></li>
|
||||
<li><a class="reference internal" href="#windows.crypto.Certificate.get_name"><code class="docutils literal notranslate"><span class="pre">get_name()</span></code></a></li>
|
||||
<li><a class="reference internal" href="#windows.crypto.Certificate.get_private_key"><code class="docutils literal notranslate"><span class="pre">get_private_key()</span></code></a></li>
|
||||
<li><a class="reference internal" href="#windows.crypto.Certificate.get_property"><code class="docutils literal notranslate"><span class="pre">get_property()</span></code></a></li>
|
||||
<li><a class="reference internal" href="#windows.crypto.Certificate.issuer"><code class="docutils literal notranslate"><span class="pre">issuer</span></code></a></li>
|
||||
<li><a class="reference internal" href="#windows.crypto.Certificate.name"><code class="docutils literal notranslate"><span class="pre">name</span></code></a></li>
|
||||
<li><a class="reference internal" href="#windows.crypto.Certificate.private_key"><code class="docutils literal notranslate"><span class="pre">private_key</span></code></a></li>
|
||||
<li><a class="reference internal" href="#windows.crypto.Certificate.properties"><code class="docutils literal notranslate"><span class="pre">properties</span></code></a></li>
|
||||
<li><a class="reference internal" href="#windows.crypto.Certificate.raw_serial"><code class="docutils literal notranslate"><span class="pre">raw_serial</span></code></a></li>
|
||||
<li><a class="reference internal" href="#windows.crypto.Certificate.serial"><code class="docutils literal notranslate"><span class="pre">serial</span></code></a></li>
|
||||
@@ -665,6 +686,7 @@ See <a class="reference external" href="https://msdn.microsoft.com/en-us/library
|
||||
<li><a class="reference internal" href="#windows.crypto.CertificateStore.from_file"><code class="docutils literal notranslate"><span class="pre">from_file()</span></code></a></li>
|
||||
<li><a class="reference internal" href="#windows.crypto.CertificateStore.from_param"><code class="docutils literal notranslate"><span class="pre">from_param()</span></code></a></li>
|
||||
<li><a class="reference internal" href="#windows.crypto.CertificateStore.from_system_store"><code class="docutils literal notranslate"><span class="pre">from_system_store()</span></code></a></li>
|
||||
<li><a class="reference internal" href="#windows.crypto.CertificateStore.from_user_store"><code class="docutils literal notranslate"><span class="pre">from_user_store()</span></code></a></li>
|
||||
<li><a class="reference internal" href="#windows.crypto.CertificateStore.new_in_memory"><code class="docutils literal notranslate"><span class="pre">new_in_memory()</span></code></a></li>
|
||||
<li><a class="reference internal" href="#windows.crypto.CertificateStore.value"><code class="docutils literal notranslate"><span class="pre">value</span></code></a></li>
|
||||
</ul>
|
||||
@@ -774,7 +796,7 @@ See <a class="reference external" href="https://msdn.microsoft.com/en-us/library
|
||||
<li class="right" >
|
||||
<a href="com.html" title="10. windows.com - Component Object Model"
|
||||
>previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 1.0.1 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 1.0.4 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href=""><span class="section-number">11. </span><code class="docutils literal notranslate"><span class="pre">windows.crypto</span></code> – CryptoAPI</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
Vendored
+5
-5
@@ -5,12 +5,12 @@
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<title>9. windows.debug – Debugging — PythonForWindows 1.0.1 documentation</title>
|
||||
<title>9. windows.debug – Debugging — PythonForWindows 1.0.4 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="_static/documentation_options.js?v=292eb321"></script>
|
||||
<script src="_static/documentation_options.js?v=71272d9f"></script>
|
||||
<script src="_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
<li class="right" >
|
||||
<a href="wintrust.html" title="8. windows.wintrust – Checking signature"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 1.0.1 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 1.0.4 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href=""><span class="section-number">9. </span><code class="xref py py-mod docutils literal notranslate"><span class="pre">windows.debug</span></code> – Debugging</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -1050,7 +1050,7 @@ This can be completly virtual (particularly in the case of <a class="reference i
|
||||
<dt>Exemple:</dt><dd><div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">sh</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">debug</span><span class="o">.</span><span class="n">symbols</span><span class="o">.</span><span class="n">VirtualSymbolHandler</span><span class="p">()</span>
|
||||
<span class="gp">>>> </span><span class="n">mod</span> <span class="o">=</span> <span class="n">sh</span><span class="o">.</span><span class="n">load_file</span><span class="p">(</span><span class="sa">r</span><span class="s2">"c:\windows\system32\kernelbase.dll"</span><span class="p">)</span>
|
||||
<span class="gp">>>> </span><span class="n">mod</span><span class="o">.</span><span class="n">pdb</span>
|
||||
<span class="go">'d:\symbols\wkernelbase.pdb\017FA9C5278235B7E6BFBA74A9A5AAD91\wkernelbase.pdb'</span>
|
||||
<span class="go">'d:\\symbols\\wkernelbase.pdb\\017FA9C5278235B7E6BFBA74A9A5AAD91\\wkernelbase.pdb'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</dd>
|
||||
@@ -1404,7 +1404,7 @@ If the symbol include a displacement, it is not taken into account</p>
|
||||
<li class="right" >
|
||||
<a href="wintrust.html" title="8. windows.wintrust – Checking signature"
|
||||
>previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 1.0.1 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 1.0.4 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href=""><span class="section-number">9. </span><code class="xref py py-mod docutils literal notranslate"><span class="pre">windows.debug</span></code> – Debugging</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
Vendored
+4
-4
@@ -5,12 +5,12 @@
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<title>2.14. Device Manager — PythonForWindows 1.0.1 documentation</title>
|
||||
<title>2.14. Device Manager — PythonForWindows 1.0.4 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="_static/documentation_options.js?v=292eb321"></script>
|
||||
<script src="_static/documentation_options.js?v=71272d9f"></script>
|
||||
<script src="_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
<li class="right" >
|
||||
<a href="object_manager.html" title="2.13. Object Manager – Kernel objects"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 1.0.1 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 1.0.4 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="winobject.html" accesskey="U"><span class="section-number">2. </span>The <code class="xref py py-mod docutils literal notranslate"><span class="pre">windows</span></code> objects</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href=""><span class="section-number">2.14. </span>Device Manager</a></li>
|
||||
</ul>
|
||||
@@ -964,7 +964,7 @@ This class is a base class, all resources returned by <a class="reference intern
|
||||
<li class="right" >
|
||||
<a href="object_manager.html" title="2.13. Object Manager – Kernel objects"
|
||||
>previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 1.0.1 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 1.0.4 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="winobject.html" ><span class="section-number">2. </span>The <code class="xref py py-mod docutils literal notranslate"><span class="pre">windows</span></code> objects</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href=""><span class="section-number">2.14. </span>Device Manager</a></li>
|
||||
</ul>
|
||||
|
||||
Vendored
+4
-4
@@ -5,12 +5,12 @@
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<title>19. Python, Windows & encoding — PythonForWindows 1.0.1 documentation</title>
|
||||
<title>19. Python, Windows & encoding — PythonForWindows 1.0.4 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="_static/documentation_options.js?v=292eb321"></script>
|
||||
<script src="_static/documentation_options.js?v=71272d9f"></script>
|
||||
<script src="_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
<li class="right" >
|
||||
<a href="sample.html" title="18. Samples of code"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 1.0.1 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 1.0.4 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href=""><span class="section-number">19. </span>Python, Windows & encoding</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -347,7 +347,7 @@ Unicode object repr: <MyUtf8Object name="お前はもう死んでい-к
|
||||
<li class="right" >
|
||||
<a href="sample.html" title="18. Samples of code"
|
||||
>previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 1.0.1 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 1.0.4 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href=""><span class="section-number">19. </span>Python, Windows & encoding</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
Vendored
+4
-4
@@ -5,12 +5,12 @@
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<title>2.17. ETW – Event Tracing for Windows — PythonForWindows 1.0.1 documentation</title>
|
||||
<title>2.17. ETW – Event Tracing for Windows — PythonForWindows 1.0.4 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="_static/documentation_options.js?v=292eb321"></script>
|
||||
<script src="_static/documentation_options.js?v=71272d9f"></script>
|
||||
<script src="_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
<li class="right" >
|
||||
<a href="evtlog.html" title="2.16. Event Log"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 1.0.1 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 1.0.4 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="winobject.html" accesskey="U"><span class="section-number">2. </span>The <code class="xref py py-mod docutils literal notranslate"><span class="pre">windows</span></code> objects</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href=""><span class="section-number">2.17. </span>ETW – Event Tracing for Windows</a></li>
|
||||
</ul>
|
||||
@@ -376,7 +376,7 @@ This allow for simpler script that stop/start some EtwTrace.</p>
|
||||
<li class="right" >
|
||||
<a href="evtlog.html" title="2.16. Event Log"
|
||||
>previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 1.0.1 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 1.0.4 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="winobject.html" ><span class="section-number">2. </span>The <code class="xref py py-mod docutils literal notranslate"><span class="pre">windows</span></code> objects</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href=""><span class="section-number">2.17. </span>ETW – Event Tracing for Windows</a></li>
|
||||
</ul>
|
||||
|
||||
Vendored
+4
-4
@@ -5,12 +5,12 @@
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<title>2.16. Event Log — PythonForWindows 1.0.1 documentation</title>
|
||||
<title>2.16. Event Log — PythonForWindows 1.0.4 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/classic.css?v=def86cc0" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/css/mbasic.css?v=957880af" />
|
||||
|
||||
<script src="_static/documentation_options.js?v=292eb321"></script>
|
||||
<script src="_static/documentation_options.js?v=71272d9f"></script>
|
||||
<script src="_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
<li class="right" >
|
||||
<a href="task_scheduler.html" title="2.15. Task scheduler"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 1.0.1 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 1.0.4 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="winobject.html" accesskey="U"><span class="section-number">2. </span>The <code class="xref py py-mod docutils literal notranslate"><span class="pre">windows</span></code> objects</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href=""><span class="section-number">2.16. </span>Event Log</a></li>
|
||||
</ul>
|
||||
@@ -1051,7 +1051,7 @@ Retrieved by parsing <a class="reference internal" href="#windows.winobject.even
|
||||
<li class="right" >
|
||||
<a href="task_scheduler.html" title="2.15. Task scheduler"
|
||||
>previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 1.0.1 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 1.0.4 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="winobject.html" ><span class="section-number">2. </span>The <code class="xref py py-mod docutils literal notranslate"><span class="pre">windows</span></code> objects</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href=""><span class="section-number">2.16. </span>Event Log</a></li>
|
||||
</ul>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user