Selezioni un gioco β scansioni la memoria cercando il valore della valuta β la valuta cambia nel gioco β riscansioni β gli indirizzi si restringono β INIETTI il valore che vuoi (o lo CONGELI per sempre) e vedi i cambiamenti in tempo reale nel terminale.
Un Cheat Engine minimale per Android: app Kotlin + Jetpack Compose, core di scansione in C (NDK) eseguito come root.
- π SCANSIONA β cerca nella memoria del gioco tutti gli indirizzi che contengono un valore
- π RISCANSIONA β raffina dopo un cambio della valuta nel gioco (il classico ciclo Cheat Engine)
- π° INIETTA / INIETTA IN TUTTI β scrive il valore scelto in un indirizzo o in tutti insieme
- β CONGELA / CONGELA TUTTI β blocca il valore per sempre (riscritto ogni 250 ms)
- πΎ Sessioni salvate β esci dall'app e torna quando vuoi: indirizzi e congelamenti di ogni gioco restano salvati e si ripristinano da soli
- π² AVVIA e aggancia β puoi partire anche col gioco chiuso: CharlyEngine lo apre e lo aggancia appena parte
- π₯οΈ Terminale live β registro di tutto + righe
[LIVE]quando un valore cambia - π Guida integrata β procedura a 4 passi spiegata per utenti non esperti (si apre al primo avvio)
- Tipi di valore: intero, decimale, long, word, byte
1 Β· App β 2 Β· Cerco β 3 Β· Affino β 4 Β· Inietto
scegli il scrivi 850 cambia la valuta π° 999999 + β congelati
gioco e SCANSIONA e RISCANSIONA e guardali nel terminale
| Cosa | PerchΓ© |
|---|---|
| Dispositivo rootato (Magisk o KernelSU) | leggere/scrivere /proc/<pid>/mem di un'altra app |
| Android 8.0+ (API 26) | β |
| Android Studio + NDK + CMake (SDK Manager β SDK Tools) | compilare la parte nativa |
# 1. apri la cartella memscan/ in Android Studio (la prima sync scarica tutto)
# 2. Build βΈ Build APK(s) oppure da terminale:
./gradlew assembleDebug
# 3. installa:
adb install app/build/outputs/apk/debug/app-debug.apkAll'avvio concedi l'accesso root quando Magisk lo chiede (il daemon deve girare come root).
- Trova il gioco nell'elenco (se Γ¨ chiuso: βΆ AVVIA, CharlyEngine lo aggancia da solo)
- Guarda la valuta nel gioco (es. monete =
850), scrivi850e premi SCANSIONA - Cambia la valuta nel gioco (spendi o guadagna, es. diventa
743) - Scrivi
743e premi RISCANSIONA β ripeti 3-4 finchΓ© restano pochi indirizzi - Scrivi il valore dei sogni (es.
999999) e premi π° INIETTA IN TUTTI - Se il gioco riporta il valore indietro: β CONGELA TUTTI
Consigli: monete β tipo Β«InteroΒ»; vite/energia β Β«DecimaleΒ». Se non trovi il valore,
prova Γ10/Γ100 (il gioco mostra 850 ma salva 8500).
βββββββββββββββββββββββββββββββ app (Kotlin/Compose, uid app) βββββββββββ
β UI: lista app Β· procedura 4 passi Β· risultati live Β· terminale β
β SessionStore: indirizzi/congelamenti salvati per ogni gioco β
β β righe di testo (stdin/stdout via `su`) β
βββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βΌ
βββββββββββββββββββββ memscand (C, eseguito come root) βββββββββββββββββ
β ATTACH pid β legge /proc/pid/maps (solo regioni rw-p) β
β SCAN valore β pread64 a blocchi di 1 MB + confronto in memoria β
β RESCAN valore β rilegge SOLO gli indirizzi candidati e filtra β
β RESTORE addrs β ricarica una sessione salvata (indirizzi validati) β
β WRITE addr β pwrite64 del nuovo valore (+ verifica read-back) β
β FREEZE addr β thread che riscrive il valore ogni 250 ms β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
L'eseguibile C Γ¨ pacchettizzato nell'APK col trucco libmemscand.so (CMake
PREFIX lib + SUFFIX .so), copiato all'avvio in /data/local/tmp e lanciato
con su. Quando l'app muore, il daemon riceve EOF su stdin e si spegne da solo.
su -c /data/local/tmp/memscand
PING Β· HELLO Β· PROCS Β· ATTACH <pid> Β· REGIONS
SCAN <tipo> <valore> Β· RESCAN <tipo> <valore> Β· COUNT Β· RESULTS <start> <count>
READ <tipo> <addr> Β· WRITE <tipo> <addr> <valore>
FREEZE <tipo> <addr> <valore> Β· UNFREEZE <addr> Β· UNFREEZE_ALL
RESTORE <tipo> <addr> [<addr> β¦] Β· RESET Β· DETACH Β· QUIT
(tipi: b w d q f D)
Ogni risposta: righe dati opzionali + una riga finale OK β¦ / ERR β¦.
cd native-test && ./run_test.sh22 controlli end-to-end: scansione, restringimento dopo cambio valore, scrittura, freeze (il bersaglio prova a cambiare il valore ma resta bloccato), float, restore delle sessioni, detach.
memscan/
βββ app/src/main/cpp/memscand.c β il cuore: scanner/patcher di memoria (C)
βββ app/src/main/java/com/memscan/app/
β βββ MainActivity.kt β navigazione + edge-to-edge corretto
β βββ scan/RootShell.kt β wrapper `su -c`
β βββ scan/MemscanDaemon.kt β ciclo di vita + protocollo col daemon
β βββ scan/ScanViewModel.kt β stato, polling live, sessioni, restore
β βββ scan/SessionStore.kt β persistenza sessioni per ogni gioco
β βββ ui/ β Compose: lista app, procedura, terminale, guida
βββ native-test/ β test end-to-end del core (gcc + python)
βββ gradle/β¦ β build Android (AGP 8.7, Kotlin 2.0, Compose BOM)
MIT β vedi LICENSE.