Usage Guide¶
Prerequisites¶
adbin PATH (brew install android-platform-toolson macOS)- Android device with root (Magisk) and USB debugging enabled
Build & Run¶
No root on the host is required. All privileged operations run on the device via adb shell su.
Flags¶
| Flag | Default | Description |
|---|---|---|
-addr |
127.0.0.1:8080 |
Listen address for the Web UI and API |
-token |
$MEMDROID_TOKEN |
Require this token on /api and /ws; empty means no auth |
-file-root |
. |
Confine API file reads/writes to this directory; empty disables the restriction |
Binding -addr to anything other than loopback without a -token hands root
memory access to the whole network, and memdroid prints a warning when you do.
-file-root only affects the HTTP API — the interactive CLI is unrestricted,
since it is already running as you.
Connecting a Device¶
USB¶
Connect the device and run memdroid. It auto-selects if only one device is found. If multiple devices are connected, you will be prompted to select one.
Wi-Fi ADB¶
Or in the Web UI: Device panel → Wi-Fi Connection field → Connect.To enable Wi-Fi ADB on the device:
Menu Overview¶
--- Device --- --- Pattern / String ---
d. Select Device p. Byte Pattern Search (e.g. FF 00 ?? 01)
dw. Connect Wi-Fi s8. String Search UTF-8
dd. Disconnect Wi-Fi s16. String Search UTF-16LE
sw. Modify String at Address
--- Process ---
1. Process List --- Memory ---
1s. Attach by Name 15. Modify Address
2. Attach by PID 16. Undo Last Modify
3. Detach 17. Freeze Address
3s. Switch Process 17i. Set Freeze Interval
3l. List Attached 17a. Freeze All Candidates
4. Stop Process 18. Unfreeze Address
5. Continue Process 19. List Frozen
20. Watch Address
--- Search --- 21. Unwatch Address
6. Set Value Type 22. List Watched
7. Search Value 22a. Set Alert
7r. Search (Region) 22r. Remove Alert
8. Filter: Changed 22l. List Alerts
9. Filter: Unchanged 23. Dump Memory Region
10. Filter: Increased 23d. Snapshot Diff
11. Filter: Decreased 23m. Show Memory Maps
12. Filter: Exact Val
13. Show Candidates --- Pointer ---
14. Reset Search pt. Pointer Scan
pr. Resolve Pointer Chain
--- Import ---
ct. Import .CT file --- Bookmarks ---
24. Add Bookmark
--- Session --- 25. List Bookmarks
28. Save State 26. Modify All Bookmarks
29. Load State 27. Remove Bookmark
Typical Workflows¶
Numeric value cheat (e.g. HP)¶
1s → Attach by Name → "com.example.game"
4 → Stop process
7 → Search: 100 (current HP)
5 → Continue process
→ Take damage in-game
4 → Stop process
11 → Filter: Decreased (HP went down)
→ Repeat until ~5 candidates remain
15 → Modify the address (set HP to 9999)
17 → Freeze the address (hold at 9999)
24 → Add Bookmark "HP"
Pointer scan (stable address across restarts)¶
7 → Search current HP value, narrow to 1 candidate
pt → Pointer Scan → target address (from candidate)
→ Wait 30-60 s for results
→ Note a chain like [libil2cpp.so+0x1234]+0x20+0x8
→ Next session: follow that chain to find HP again
String / name edit¶
Byte pattern search¶
Region-filtered scan (faster)¶
Byte sequence search¶
Session save & restore¶
Value Types¶
| Type | Size | Example use |
|---|---|---|
| int32 | 4 bytes | HP, ammo, score (signed) |
| int64 | 8 bytes | currency, large counters (signed) |
| float32 | 4 bytes | position X/Y, speed |
| float64 | 8 bytes | high-precision floats |
| uint32 | 4 bytes | unsigned integer counters |
| uint64 | 8 bytes | large unsigned values |
| bytes | variable | arbitrary byte sequences |
Switch type with menu 6. Changing type resets the search session.
Region Filters (7r)¶
| Option | Scans | Best for |
|---|---|---|
| all | all rw regions | thorough first scan |
| heap | [heap] |
most game object values |
| stack | [stack] |
local variables |
| anon | anonymous maps | JIT / runtime allocations |
| custom | address range | known library segment |
Web UI¶
Open http://localhost:8080 while memdroid is running. All features are available.
Special Web UI features: - Watch panel: real-time value change stream via WebSocket - Maps panel: interactive memory region browser with filter - Candidates: "Ptr" button pre-fills the Pointer Scan target - Device panel: Wi-Fi connect / disconnect without CLI
Notes¶
- Freeze writes the value every 100 ms in the background. Use
18or17ato stop. - Watch prints to stdout (and Web UI Watch panel) when a value changes.
- Undo reverts only the most recent
Modify. Depth shown in status bar. - Pointer scan may take 30-60 s on large processes; it reads all mapped memory.
- Dump output is standard hex dump format compatible with any hex editor.