English | 中文文档
memkit is a lightweight and efficient memory framework written in Go, designed for Android memory reading, editing, and manipulation tasks. It provides developers with an easy-to-use API for direct memory operations on Android processes.
- 🟦 Pure Go Implementation: No dependency on other languages or complex environments.
- 📱 Android Support: Tailored for Android (Linux
/procbased). - ⚡ Multiple Read/Write Modes:
/proc/<pid>/memandprocess_vm_readv/writev(with fallback). - 🧭 Maps Parsing + Range Tags: Parse
/proc/<pid>/maps, classify ranges (heap/stack/java/etc.). - 🔎 Search Toolkit: Bytes/AOB search, typed number search, and range filters.
- 🚀 Concurrent Scanning: Worker-based scanning with progress callbacks.
- 🧩 Advanced Tooling: Pagemap support, pointer chain search, AOB patching, fuzzy scan.
- Read and write memory from specified processes
- Parse and filter memory maps; query module base addresses
- Search values/patterns; refine results; set operations on result sets
- Resolve pointer chains for dynamic addresses
- Pagemap lookup (virtual -> physical) where permitted
- Save/load scan results (JSON/CSV)
go get github.com/pwh-pwh/memkitimport "github.com/pwh-pwh/memkit/memory"
func main() {
pid := 1234
proc := memory.NewProcess(pid)
defer proc.Close()
// Read a value
v, _ := memory.ReadValFromProcess[int32](proc, 0x12345678)
_ = v
// Get module base
base, _ := proc.ModuleBase("libil2cpp.so")
_ = base
// Search bytes / AOB
s := memory.NewSearcher(proc)
s.Workers = 4
addrs, _ := s.SearchPattern("12 34 ?? 56")
_ = addrs
}v0.5.0: pagemap, pointer-chain search, AOB patch, fuzzy scan, sliding search, result persistence.
- Android game memory editing
- App reverse engineering
- Automated testing and debugging
- System tool development
Feel free to submit issues or pull requests to help improve memkit!
MIT License
For more documentation or usage examples, please refer to the source code or open an issue.