A Memory editing tool built with Kotlin Multiplatform, enabling users to scan and modify values in a program's memory effortlessly. Supports both PC (Windows) and Android (Root Required).
- 🌐 Cross-platform – Works on Windows and rooted Android
- 📋 List Running Processes – Identify all active processes
- 🔢 Supports Multiple Data Types – Scan for Integer, Float, Long, Double, and String
- 🔍 Scan for Target Values – Locate specific memory addresses (e.g.,
Health = 100) - 🧹 Filter Results – Refines candidate addresses by tracking changes (e.g.,
100→83) - ✏️ Edit Memory – Modifies memory address values (e.g., setting health to
999) - ⚡ Optimized Searches – Utilizes Boyer-Moore algorithm for ultra-fast value searching
- 🏎️ Lightning-Fast Performance – Scans only readable memory regions, avoiding scanning each individual page
- 1️⃣ Select a Process – Pick a game or app from the active process list
- 2️⃣ Scan Memory – Input a target value (e.g.,
100for health) - 3️⃣ Modify the Value – Take action in-game to alter the value (e.g., take damage so health drops to
83) - 4️⃣ Filter Addresses – Perform another scan to filter addresses that match the new value (e.g.,
83) - 5️⃣ Adjust the Address Value – Change the identified value (e.g., modify
83→999) - 6️⃣ Verify Changes – Check if the modification is reflected in the game!
- MVVM Architecture - Organizes code for better separation of concerns.
- Compose Multiplatform - Declarative UI framework for Android, Desktop, and beyond.
- Kotlin Multiplatform - Enables seamless code sharing between Android and PC.
- Koin - Lightweight dependency injection framework for Kotlin.
- JNA (Java Native Access) - Access to native system libraries like
libcon Android. - JNA Platform - Provides Java bindings for
Win32API on Windows.
- Import the project into Android Studio.
- Follow Compose Multiplatform Guide "Run your application" section to configure and run the application.
- 🔄 Address Refresh: Click an address to see its latest value.
- ❌ String Cannot Be Refreshed: Refreshing requires knowing the dynamic string length in advance.
- 💻 PC Buffer Size: When reading an entire memory region in one call, the data is copied to a buffer.
- 📱 Android Buffer Size Limitations: Large buffer allocations cause crashes, so memory regions are divided into small chunks to avoid issues.
- 🔒 Root Required: If the Android device is not rooted, only ArtMoney itself appears in the process list.
🚀 PRs & contributions are welcome!
📬 Got ideas? Open an issue or reach out!





