Skip to content

memkit is a lightweight and efficient memory operation framework written in Go

Notifications You must be signed in to change notification settings

CKAndroidProject/memkit

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀 memkit

Go Platform License

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.


✨ Features

  • 🟦 Pure Go Implementation: No dependency on other languages or complex environments.
  • 📱 Android Support: Tailored for Android (Linux /proc based).
  • Multiple Read/Write Modes: /proc/<pid>/mem and process_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.

🧩 Main Functions

  • 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)

📦 Installation

go get github.com/pwh-pwh/memkit

🚀 Quick Start

import "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
}

📌 Release

  • v0.5.0: pagemap, pointer-chain search, AOB patch, fuzzy scan, sliding search, result persistence.

🎯 Use Cases

  • Android game memory editing
  • App reverse engineering
  • Automated testing and debugging
  • System tool development

🤝 Contributing

Feel free to submit issues or pull requests to help improve memkit!


📄 License

MIT License


For more documentation or usage examples, please refer to the source code or open an issue.

About

memkit is a lightweight and efficient memory operation framework written in Go

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 100.0%