Skip to content

Latest commit

Β 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

CharlyEngine 🟒>_ β€” mini Cheat Engine per Android (root)

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.

⚠️ Solo per uso legittimo: dispositivo tuo, giochi offline/single-player. Usarlo su giochi online viola i ToS e porta al ban dell'account; testare sistemi di terzi senza autorizzazione è un reato (art. 615-ter c.p. in Italia).


Funzioni

  • πŸ”Ž 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

Screenshot del flusso

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

Requisiti

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

Compilazione

# 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.apk

All'avvio concedi l'accesso root quando Magisk lo chiede (il daemon deve girare come root).

Come si usa β€” il flusso della "valuta"

  1. Trova il gioco nell'elenco (se Γ¨ chiuso: β–Ά AVVIA, CharlyEngine lo aggancia da solo)
  2. Guarda la valuta nel gioco (es. monete = 850), scrivi 850 e premi SCANSIONA
  3. Cambia la valuta nel gioco (spendi o guadagna, es. diventa 743)
  4. Scrivi 743 e premi RISCANSIONA β€” ripeti 3-4 finchΓ© restano pochi indirizzi
  5. Scrivi il valore dei sogni (es. 999999) e premi πŸ’° INIETTA IN TUTTI
  6. 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).

Architettura

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ 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.

Protocollo del daemon (per giocarci da Termux)

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 ….

Test del core nativo (Linux o Termux, senza Android)

cd native-test && ./run_test.sh

22 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.

Struttura

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)

Licenza

MIT β€” vedi LICENSE.

About

🟒>_ CharlyEngine β€” il mini Cheat Engine open source per Android (root): scanner di memoria, iniezione valori, freeze, sessioni salvate

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages