
Studio educativo di reverse engineering di un gioco Android Unity/IL2CPP. Documenta il decoding del protocollo gateway, l'analisi dell'SDK nativo anti-manomissione, il bypass del SSL pinning e le tecniche di analisi dinamica basate su Frida.
Progetto educativo. L'obiettivo è comprendere come un moderno gioco Android Unity/IL2CPP comunica, come funzionano i suoi SDK di protezione nativi e come applicare tecniche di analisi statica e dinamica a un APK reale.
Questo repository documenta uno studio di reverse engineering in corso su com.run.tower.defense (Game of Thrones: Conquest), un gioco Unity con runtime IL2CPP, molteplici SDK di protezione nativi e un protocollo gateway binario personalizzato.
Nessun cheat, nessuno sfruttamento, nessuna modifica dei dati di gioco in tempo reale. L'attenzione è puramente sulla comprensione dell'architettura interna.
| Area | Stato | Risultato chiave |
|---|---|---|
| Protocollo gateway (porta 30101) | Decodificato | Binario personalizzato, frame uint16_BE, corpo varint, nessun TLS |
| Opcode | Mappati | 0x55 handshake, 0x5d azioni di gioco, 0x1d sincronizzazione stato, 0x15 heartbeat, 0x59 ACK client |
| Codifica coordinate | Decodificata | 4 caratteri stile ASCII85 → uint32 (x=regno, y=posizione) |
| API di analisi | Catturata | logagent-wf.centurygame.com — eventi JSON, non pinnata |
| SSL pinning | Parzialmente bypassato | Layer Java bypassato (OkHttp + TrustManager); layer nativo BestHTTP identificato |
| Anti-tampering (libnesec) | Identificato | Uccide il processo ~58s dopo l'attacco di Frida; funzione di kill e livello di rilevamento mappati |
| libxt_a64.so | Identificato | SDK di hook PLT caricato in namespace linker isolato — invisibile a Frida/mappe |
| libNetHTProtect.so | Analizzato | SDK di integrità di rete; fingerprinting MD5; serializzazione stile protobuf |
| Dump IL2CPP | Parziale | Lista assembly recuperata; RVA di certval di BestHTTP mappata |
got-re/
├── README.md ← questo file
├── FLOW.md ← flusso dati completo scoperto
├── SETUP.md ← guida alla configurazione dell'ambiente
├── TOOLS_AND_COMMANDS.md ← riferimento a tutti i comandi e strumenti
├── CLAUDE.md ← contesto per sessioni assistite da AI
├── captures/
│ ├── battle.pcap ← esempio di traffico gateway (sessione 1)
│ └── battle2.pcap ← esempio di traffico gateway (sessione 2, più ricca)
└── scripts/
├── frida/
│ ├── certval_hook.js ← osserva la validazione dei certificati BestHTTP
│ ├── button_hook.js ← aggancia eventi bottoni dell'interfaccia Unity
│ ├── ssl_unpin.js ← rimozione SSL pinning (layer Java + IL2CPP)
│ └── nesec_bypass.js ← neutralizza l'anti-tampering di libnesec
├── analysis/
│ ├── analyze_gateway.py ← analizza e decodifica catture pcap sulla porta 30101
│ ├── analyze_mitm.py ← legge e filtra file .mitm di mitmproxy
│ ├── decode_1d_v2.py ← decodifica approfondita dei frame di sincronizzazione stato 0x1d
│ └── deep_analysis.py ← coordinate, frammenti JSON, opcode 0x59
└── proxy/
├── mitm_setup.py ← installa il certificato CA di mitmproxy sul dispositivo
├── run_ssl_unpin.py ← esecutore combinato mitmdump + Frida SSL unpin
└── run_button_hook.py ← esecutore combinato mitmdump + Frida button hook
# 1. Avvia frida-server sul dispositivo
adb shell "su -c '/data/local/tmp/fs17 -l 0.0.0.0:37555 &'"
adb forward tcp:37555 tcp:37555
# 2. Cattura il traffico gateway
adb shell "su -c 'tcpdump -i any -w /sdcard/session.pcap port 30101'"
# ... gioca ...
adb pull /sdcard/session.pcap captures/
# 3. Analizzalo
python scripts/analysis/analyze_gateway.py captures/session.pcap
Vedi FLOW.md per la mappa completa del protocollo e le domande aperte.
Vedi SETUP.md per mettere in funzione il tuo ambiente.
Se hai analisi Ghidra, output di il2cppdumper o ulteriori catture pcap — PR e issue sono benvenuti.