
PyMemoryEditor v2.1.0
A pure-Python library that lets you inspect, modify and search the memory of any running process in a few lines of Python :snake: .
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!
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.
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
RemotePointerhandle - 🧭 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 Start | Open a process, read, write and run your first scan. |
| Searching memory | Value scans, ranges, refining results, the Cheat Engine loop. |
| Pattern scan | Find code/data with byte signatures (AOB) and regex. |
| Pointers | Multi-level pointer chains and the live RemotePointer. |
| Pointer scan | Find static pointers that survive ASLR. |
| The GUI app | The bundled Cheat Engine-style scanner. |
| API reference | Every public class, method and parameter. |
| Platform notes | Permissions and quirks on Windows, Linux and macOS. |
| Troubleshooting | Common 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.