Skip to main content

Read, write and scan process memory in a few lines of Python — Cheat Engine-style scans, pointer chains and AOB search on Windows, Linux and macOS.

Project description

PyMemoryEditor

A pure-Python library (built on ctypes) that lets you inspect, modify and search the memory of any running process in a few lines of Python — Cheat Engine workflows on Windows, Linux and macOS!


PyMemoryEditor logo

Read, write and scan the memory of any process — straight from Python.
One unified API. Three operating systems. No C compiler. No native build step.

Runs on 🪟 Windows · 🐧 Linux · 🍎 macOS — 32-bit and 64-bit.

Python Package Pypi License Python Version Downloads

PyMemoryEditor app attached to a running process

Tweak a value in a running game · inspect a live program's state · harvest data straight from RAM.


Install

pip install PyMemoryEditor

To also install the bundled GUI app (a Cheat Engine-style scanner), use the app extra:

pip install "PyMemoryEditor[app]"
pymemoryeditor

For faster scans on large processes, add the speed extra. It pulls in NumPy and automatically vectorizes the numeric scan comparison loop — ~10–30× faster on selective scans:

pip install "PyMemoryEditor[speed]"

📖 Full guide at Read the Docs.


See it in action

from PyMemoryEditor import OpenProcess

with OpenProcess(name="game.exe") as process:

    # Scan the whole process for every address holding the value 100.
    for address in process.search_by_value(int, value=100):
        print(f"Found at 0x{address:X}")

    # Read the current value, then write a new one back.
    current = process.read_int(address)
    process.write_int(address, current + 500)

That's it — read, write or scan another process in three lines, the same way on every platform.


What's inside

🐍 The Python library

Full control over another process's memory — in a few lines of Python:

  • Read & write values (int, float, bool, str, bytes)
  • 🔍 Value scan with eight comparison modes
  • 🎯 Pattern scan (IDA-style AOB & regex)
  • 🔗 Pointer chains + a live RemotePointer handle
  • 🧭 Pointer scan — find static pointers that survive ASLR
  • 🗺️ Memory map, modules, threads
  • 🧱 Allocate & free remote memory (Windows / macOS)

🖥️ The bundled GUI app

All the library's power — no code required:

  • Zero setup — attach to a process and start scanning in seconds
  • 🧲 Refine workflow — First Scan → Next Scan with live visual feedback
  • 📋 Cheat table — freeze / write values on the fly, JSON import/export
  • 🔬 Hex viewer — browse raw memory and write back inline
  • 🧩 Pointer scan UI — scan, export & rescan across sessions with a few clicks
  • 🎨 One-click access — every feature at your fingertips, no code needed

📖 Documentation

Full documentation lives at pymemoryeditor.readthedocs.io — installation, the Cheat Engine workflow, every method and parameter, the GUI app guide, platform notes and troubleshooting.

A quick map of where to go:

Quick StartOpen a process, read, write and run your first scan.
Searching memoryValue scans, ranges, refining results, the Cheat Engine loop.
Pattern scanFind code/data with byte signatures (AOB) and regex.
PointersMulti-level pointer chains and the live RemotePointer.
Pointer scanFind static pointers that survive ASLR.
The GUI appThe bundled Cheat Engine-style scanner.
API referenceEvery public class, method and parameter.
Platform notesPermissions and quirks on Windows, Linux and macOS.
TroubleshootingCommon errors and how to fix them.

What can I build with this?

  • 🎮 Game modding & speedrunning tools — the classic Cheat Engine use case.
  • 🔬 Debugging & introspection — inspect live state without attaching a debugger.
  • 📊 Observability tooling — sample variables in a running process for telemetry.
  • 🔐 Security & reverse-engineering research — on systems you own or are authorized to test.
  • 🎓 Learning — the bundled app is a great teaching tool for how memory scanning works.

[!NOTE] Responsible use. PyMemoryEditor talks to other processes through OS-level APIs. Only point it at processes you own or have explicit permission to inspect.


🤝 Contributing

Pull requests, bug reports and feature ideas are very welcome. Read CONTRIBUTING.md for the development setup, test layout and the small set of platform-specific quirks to be aware of.

If PyMemoryEditor helped your project, please ⭐ the repo — it's the easiest way to support the work and to help others discover the library.


License

Released under the MIT License — free for personal and commercial use.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pymemoryeditor-2.0.0.tar.gz (1.6 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pymemoryeditor-2.0.0-py3-none-any.whl (212.5 kB view details)

Uploaded Python 3

File details

Details for the file pymemoryeditor-2.0.0.tar.gz.

File metadata

  • Download URL: pymemoryeditor-2.0.0.tar.gz
  • Upload date:
  • Size: 1.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pymemoryeditor-2.0.0.tar.gz
Algorithm Hash digest
SHA256 03b0abd9f70aaa4687d527efc6b99a507a43d378735c861b5cca7067a009947d
MD5 878ca9ed05e9684a7bad07d31551e501
BLAKE2b-256 96c3c4714eaaba573c4d0114a95dc6e951fb0b27e22edfdb6864d99c1e66d645

See more details on using hashes here.

Provenance

The following attestation bundles were made for pymemoryeditor-2.0.0.tar.gz:

Publisher: publish.yml on JeanExtreme002/PyMemoryEditor

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pymemoryeditor-2.0.0-py3-none-any.whl.

File metadata

  • Download URL: pymemoryeditor-2.0.0-py3-none-any.whl
  • Upload date:
  • Size: 212.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pymemoryeditor-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 efd464f08064c3547ce00090af878fb8a819796adbd6b29b11b5ccee6659b6b7
MD5 f167d025056792fb79abd3915057ba63
BLAKE2b-256 72efaba8f986b7e143c16394fd6ac19dd0b5fcb9934962830821063bca5c0b72

See more details on using hashes here.

Provenance

The following attestation bundles were made for pymemoryeditor-2.0.0-py3-none-any.whl:

Publisher: publish.yml on JeanExtreme002/PyMemoryEditor

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page