Skip to main content

external_proc python module

Python Version PYPI Downloads

External process memory manager

Installation

Ensure you have at least Python 3.8+

pip install external_proc
or
pip install git+https://github.com/bananasss00/external_proc.git

Usage examples

More examples in 'tests' directory

Open/Close process

from external_proc import *

p = ExtProcess.open(PROCESS_NAME or PROCESS_ID)
p.close()
### or ###
with ExtProcess.ctx_open(PROCESS_NAME or PROCESS_ID) as p:
  pass

Read/Write values

with ExtProcess.ctx_open(process_name) as p:
  # write
  p.write.list_bytes(address, [0x90, 0x90])
  p.write.bytes(address, b'\x90\x90')
  p.write.str(address, 'string')
  p.write.wstr(address, 'unicode string')
  p.write.uint8(address, 1)
  p.write.uint16(address, 1)
  p.write.uint32(address, 1)
  p.write.uint64(address, 1)
  p.write.int8(address, -1)
  p.write.int16(address, -1)
  p.write.int32(address, -1)
  p.write.int64(address, -1)
  p.write.float(address, 0.01)
  p.write.double(address, 0.01)
  # read
  v = p.read.list_bytes(address, BYTES_COUNT)
  v = p.read.bytes(address, BYTES_COUNT)
  v = p.read.str(address, MAX_BYTES_COUNT) # read string to first \x00
  v = p.read.wstr(address, MAX_BYTES_COUNT) # read string to first \x00
  v = p.read.uint8(address) # signed 1 byte value
  v = p.read.uint16(address) # signed 2 byte value
  v = p.read.uint32(address) # signed 4 byte value
  v = p.read.uint64(address) # signed 8 byte value
  v = p.read.int8(address) # unsigned 1 byte value
  v = p.read.int16(address) # unsigned 2 byte value
  v = p.read.int32(address) # unsigned 4 byte value
  v = p.read.int64(address) # unsigned 8 byte value
  v = p.read.float(address) # 4 byte
  v = p.read.double(address) # 8 byte

Pointers

# Pointer types:
#   ListBytes
#   Bytes
#   Str
#   Wstr
#   Uint8
#   Uint16
#   Uint32
#   Uint64
#   Int8
#   Int16
#   Int32
#   Int64
#   Float
#   Double
#   Invalid
ptr = p.make_ptr(address, PtrType.Int32)
address = ptr.get_address() # return current address
ptr.set_value(333)
value = ptr.get_value()

# get address from multilevel pointers
ptr = p.make_ptr(0x6426E0, core.PtrType.Uint32)\
            .go_ptr(0xC)\
            .go_ptr(0x14)\
            .go_ptr()\
            .go_ptr(0x18)

# PtrTypes: ListBytes, Bytes, Str, Wstr
#   require additional argument
#   for get_value(BYTES_COUNT or MAX_BYTES_COUNT for strings)

Simple dll injector x32/x64

with ExtProcess.ctx_open(process_name) as p:
  dll_path = os.path.abspath('lib.dll')
  loadlib_func = get_proc_address('kernel32', 'LoadLibraryA', x64=p.is_x64_process())
  param = p.alloc()
  p.write.str(param, dll_path)
  with p.ctx_create_thread(loadlib, param, wait_thread=True) as th_id:
      pass

Signature scanner. IDA Style

exe_module = p.get_module()
client_module = p.get_module('client.dll')

# .text:00428873 8D 4D F0          lea ecx, [ebp+var_10]
# .text:00428876 E8 05 4E FE FF    call 0x40D680

# E8 ? ? ? ? - it's instruction call 0x40D680
signature = "8D 4D F0 E8 ? ? ? ?" 

# equal: find_pattern(signature) + 3
sig_in_all_module: Ptr = client_module.find_pattern(signature, add_offset=3)
sig_in_code_section: Ptr = client_module.section('.text').find_pattern(signature, 3)

# for read relative offset from call instruction you can simple do this
adr = sig_in_code_section.go_call_ptr().get_address()
# same for jmp, je and etc inctructions: .go_jmp_ptr(), .go_jmp_short_ptr()

Shellcode injection. Using nasm(need add in to PATH environment variable directory with nasm.exe)

    # CheatEngine Tutorial x64. Step 7: Code Injection: (PW=013370)
    with ExtProcess.ctx_open('Tutorial-x86_64.exe') as t:
        m = t.get_module()
        code_decrement_health = 0x10002D4F7
        new_code = t.alloc(2048, code_decrement_health)  # alloc memory near 'code_decrement_health'
                                                                                   # for short relative jump!!!
        t.virtual_protect(code_decrement_health, 7, PageFlags.PAGE_EXECUTE_READWRITE)
        t.write.bytes(code_decrement_health, nasm(f'''jmp {hex(new_code)}\nnop\nnop''', 64, hex(code_decrement_health)))
        t.write.bytes(new_code, nasm('''add dword [rsi+0x7E0], 0x2 ; +2 health instead -1
                                        jmp qword 0x10002D4FE''', 64, new_code))

Release files for external-proc 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for external-proc 0.1.2
File Size Uploaded
external_proc-0.1.2.tar.gz 16.8 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for external-proc 0.1.2
File
external_proc-0.1.2-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
external_proc-0.1.2-cp312-cp312-win32.whl CPython 3.12 CPython 3.12 Windows x86-32 Details
external_proc-0.1.2-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
external_proc-0.1.2-cp311-cp311-win32.whl CPython 3.11 CPython 3.11 Windows x86-32 Details
external_proc-0.1.2-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
external_proc-0.1.2-cp310-cp310-win32.whl CPython 3.10 CPython 3.10 Windows x86-32 Details
external_proc-0.1.2-cp39-cp39-win_amd64.whl CPython 3.9 CPython 3.9 Windows x86-64 Details
external_proc-0.1.2-cp39-cp39-win32.whl CPython 3.9 CPython 3.9 Windows x86-32 Details
external_proc-0.1.2-cp38-cp38-win_amd64.whl CPython 3.8 CPython 3.8 Windows x86-64 Details
external_proc-0.1.2-cp38-cp38-win32.whl CPython 3.8 CPython 3.8 Windows x86-32 Details

Total release size: 1.4 MB

Release files / external_proc-0.1.2.tar.gz

Download URL external_proc-0.1.2.tar.gz
Size 16.8 kB
Tags Source
SHA-256 checksum
How to use checksums
2ef48368c2edbca395dfa072308f7da8207cb4b30e8628d7080f06110e432435
BLAKE2b-256 checksum
How to use checksums
3cabaf91ce2e9b49e64eadc92b2c1f14d48308faec7cca4fcb0a56038441bbe9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 5, 2026.

Transparency log

Release files / external_proc-0.1.2-cp312-cp312-win_amd64.whl

Download URL external_proc-0.1.2-cp312-cp312-win_amd64.whl
Size 143.1 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
c25f6b49c8cb04709457b5e6571bdf5023ea4a145a2723e89eebde9e5ecb026c
BLAKE2b-256 checksum
How to use checksums
baf76f0c2b1a297d7673c4118307906f963f9d01013799420dc3ab4fb4340cf5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 5, 2026.

Transparency log

Release files / external_proc-0.1.2-cp312-cp312-win32.whl

Download URL external_proc-0.1.2-cp312-cp312-win32.whl
Size 128.2 kB
Tags CPython 3.12 Windows x86-32
SHA-256 checksum
How to use checksums
7c8d9e5fe54032784b4b917f5c569cc2a35077681dfd8ce659c5ccd5ef6dd6d9
BLAKE2b-256 checksum
How to use checksums
012a9502eed5c66e796f02f0b6955fd219e1f27f053901ace274858be54e7302
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 5, 2026.

Transparency log

Release files / external_proc-0.1.2-cp311-cp311-win_amd64.whl

Download URL external_proc-0.1.2-cp311-cp311-win_amd64.whl
Size 141.8 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
3cab49eeb86f7a3ab0b42e7dff8f2319ab27127fca612f12c421f2bb111caf29
BLAKE2b-256 checksum
How to use checksums
4c4482eb64020f69d6379e7e7e112496ca2651672e0467720ffede83d0c283b7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 5, 2026.

Transparency log

Release files / external_proc-0.1.2-cp311-cp311-win32.whl

Download URL external_proc-0.1.2-cp311-cp311-win32.whl
Size 127.2 kB
Tags CPython 3.11 Windows x86-32
SHA-256 checksum
How to use checksums
7dabb4dd6882891182e703ed052af4148dc4f7fc08feda24a26c8f17c8c984d5
BLAKE2b-256 checksum
How to use checksums
9bb6f6ecd416c6822b28a2354bcff7b312d0c7424ddd020515ff025527fd31a3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 5, 2026.

Transparency log

Release files / external_proc-0.1.2-cp310-cp310-win_amd64.whl

Download URL external_proc-0.1.2-cp310-cp310-win_amd64.whl
Size 140.7 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
97ef0c5d84169ee11eb7c18cbff24d952541f546129f93141790fc22d19df651
BLAKE2b-256 checksum
How to use checksums
247f3a0ca554e7e80decb2e19ba748491fe6151771cba8c2e158ea307113ea06
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 5, 2026.

Transparency log

Release files / external_proc-0.1.2-cp310-cp310-win32.whl

Download URL external_proc-0.1.2-cp310-cp310-win32.whl
Size 126.2 kB
Tags CPython 3.10 Windows x86-32
SHA-256 checksum
How to use checksums
ab3ed64dea676dcd3823458b03c88623f7f3676ec7e063586ea66cd0561074f3
BLAKE2b-256 checksum
How to use checksums
fd0cc7dce1fcaf0d91a30cf333fdd67df1722bfee03f1d0e1e12f0c345e6cdd4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 5, 2026.

Transparency log

Release files / external_proc-0.1.2-cp39-cp39-win_amd64.whl

Download URL external_proc-0.1.2-cp39-cp39-win_amd64.whl
Size 148.8 kB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
1a325d170e25c0ff6538c66575864244dde55ce8352f1dcdb060f8c12bed753c
BLAKE2b-256 checksum
How to use checksums
496ff6fe5580201d9117e13db4ccbacc5d94823d82446674c7c0faa5bfbf487c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 5, 2026.

Transparency log

Release files / external_proc-0.1.2-cp39-cp39-win32.whl

Download URL external_proc-0.1.2-cp39-cp39-win32.whl
Size 126.3 kB
Tags CPython 3.9 Windows x86-32
SHA-256 checksum
How to use checksums
b8171d2c93eb035345efae92e613d717304a7a0912527cc998ba3bf7714bfe06
BLAKE2b-256 checksum
How to use checksums
a09ba8a8e5c6ef728460e5453506850ae950c1603266bbbe82b3845a8a2d09fb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 5, 2026.

Transparency log

Release files / external_proc-0.1.2-cp38-cp38-win_amd64.whl

Download URL external_proc-0.1.2-cp38-cp38-win_amd64.whl
Size 140.4 kB
Tags CPython 3.8 Windows x86-64
SHA-256 checksum
How to use checksums
318b50032b4bca68bbd0b11dc76811f32715aa1516f640187c0248e2f6aae85a
BLAKE2b-256 checksum
How to use checksums
96844a69c147f23a2d4e6656f4933f642538b7014757f00b11e23330cbcbf580
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 5, 2026.

Transparency log

Release files / external_proc-0.1.2-cp38-cp38-win32.whl

Download URL external_proc-0.1.2-cp38-cp38-win32.whl
Size 126.1 kB
Tags CPython 3.8 Windows x86-32
SHA-256 checksum
How to use checksums
25762c0f613af39bafa6dcb4d1e65e18041f35914f2983fc740a9efe200fd765
BLAKE2b-256 checksum
How to use checksums
19a6ad5cb832ce81a60fcee652a71fe9ead36263e8898a751c88cfe58d324205
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 5, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.2 This release

11 release files

0.1.0

7 release files

0.0.2

8 release files

0.0.1

8 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page