PyMemoryEditor ships with a polished cross-platform GUI built on PySide6 (Qt for Python). It's a Cheat Engine-inspired memory scanner that exercises every public surface of the library — so it doubles as a living demo and a teaching tool.
If you're new to memory editing, start with the app before writing code.
pip install "PyMemoryEditor[app]"The app extra pulls in PySide6 and other dependencies. The core library remains dependency-free.
From any terminal:
pymemoryeditorThe app opens with the Open Process dialog, where you pick a target by name or PID.
🎯 Scanner
- Every
ScanTypesEnummode - All integer widths, Float, Double, Boolean, String (UTF-8), and Byte Array
- Range, AOB / byte-signature (IDA-style), and regex search
🧲 Refine workflow
- First Scan → Next Scan (Cheat Engine style)
- Six more comparison modes (increased, decreased, changed, …)
- Live progress bar
📋 Cheat table
- Live value updates
- Freeze or overwrite values continuously
- Per-entry custom labels
- JSON import / export
🗺️ Memory map
- All regions with their attributes (address, size, R/W/X permissions)
- Auto-refresh as the memory layout changes
- Allocate and free memory directly from the map
🔬 Hex viewer
- Live hex dump with in-place write-back
- Jump to any address, with auto-refresh
📦 Modules
- All loaded modules (DLLs / .so / .dylib) with base address, size, and path
- Auto-refresh as modules are loaded or unloaded
- Double-click to open in the Hex Viewer
🧩 Pointer scan
- Same engine as
scan_pointer_paths - Save / load scans as JSON
- Rescan and compare to narrow results down
:class: tip
The app ships with several built-in dark themes (Kali Teal by default). Pick one
from the **Theme** button on the toolbar; your choice is remembered between runs.
- Open a process from the startup dialog (or later via
File → Change Process…). - Run a First Scan: pick the value type, type the value you can see, hit First Scan.
- Refine with Next Scan after the value changes — pick Exact Value with the new number, or one of the increased / decreased / changed shortcuts.
- Double-click a result to add it to the Cheat Table.
- Freeze the value with the checkbox or change it from the Cheat Table.
- (Optional) Run a Pointer Scan on the result to find a chain that survives restarts.
The Cheat Table and Pointer Scan results are stored as plain JSON, so you can:
- Share a cheat table with a friend.
- Version-control your saved pointer scans.
- Diff scans by hand.
The pointer-scan format is documented in PointerPath.
Use the GUI when…
- You're exploring a target interactively.
- You're learning memory editing.
- You want to inspect what's available before writing code.
Use the library when…
- You want to script a workflow or build a tool.
- You want to embed memory access into a bigger application.
- You need batch processing, automation, or CI integration.
- [Quick Start](quickstart.md) — the same workflow, in code.
- [Logging](guide/logging.md) — the Log Console exposes the library's logger.
