Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
rats-re — Ricostruisce binari Windows legacy in codice sorgente C combinando le esportazioni del decompilatore Ghidra con LLM locali, producendo candidati verificati in fase di compilazione e report basati sulla similarità. | Kitploit
Strumenti/GitHubGitHub/neuromancer/rats-re
Reverse EngineeringAnalisi di BinariMachine LearningReverse Engineering Assistito dall'IA
GitHubneuromancer/rats-re

rats-re

Ricostruisce binari Windows legacy in codice sorgente C combinando le esportazioni del decompilatore Ghidra con LLM locali, producendo candidati verificati in fase di compilazione e report basati sulla similarità.

Vedi Repository
1724 giorni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Ricostruzione del codice sorgente di Rats! con LLM locali

Questo repository è una ricostruzione in corso d'opera del codice sorgente di RATS.EXE, la versione Windows originale di Rats! (1994) di Sean O'Connor. Compila un eseguibile Win32 con Microsoft Visual C++ 4.1 tramite wibo e può essere testato in DREAMM.

L'esperimento esplora fino a che punto gli LLM locali possono spingersi nella ricostruzione del codice sorgente su un codebase piccolo ma realistico, invece che su un esempio giocattolo. La fedeltà delle corrispondenze resta disomogenea, il che qui è utile: l'obiettivo è presentare una visione realistica del processo e dei suoi limiti attuali, non nascondere le funzioni difficili.

La ricostruzione delle funzioni è limitata agli LLM locali. Codex e Claude vengono usati per la configurazione del repository e l'orchestrazione dei benchmark, ma non possono scrivere o modificare il codice sorgente ricostruito.

Salvo diversa indicazione, tutti gli esperimenti hanno utilizzato Qwen3.8 27B BF16 su un MacBook Pro del 2024 con Apple M4 Max (CPU a 16 core, GPU a 40 core) e 128 GB di memoria. L'approccio funziona — in modo imperfetto, ma utile: le 36 funzioni mantenute hanno richiesto in media un tempo registrato di 2m 32.1s ciascuna per essere ricostruite.

Configurazione

Clona con i sottomoduli, oppure inizializzali dopo la clonazione:

root@kitploit:~
git submodule update --init --recursive

L'eseguibile originale non è incluso. Scarica la versione Windows gratuita dalla pagina ufficiale di Rats! e posiziona il suo RATS.EXE nella radice del repository per usare i target original-executable e binary-comparison.

Comandi comuni

root@kitploit:~
make                 # build out/RATS_RE.EXE, .map, .obj, and .asm
make toolchain       # download, extract, and verify Microsoft Visual C++ 4.1
make run             # launch the rebuilt executable in DREAMM
make run-original    # launch the preserved original RATS.EXE
make test            # bounded DREAMM smoke test of the rebuilt executable
make test-original   # bounded DREAMM smoke test of the original executable
make debug           # start the rebuilt executable in DREAMM's debugger
make report          # report similarity for every reconstructed function
make compare-func FUNC=SaveHighScores ADDR=00409092

L'archivio MSVC 4.1 con checksum vincolato, le librerie MSVC 4.1 richieste, la msvcrt40.dll compatibile con wibo e DREAMM 4.0x21 vengono scaricati on demand. Restano dipendenze di build locali ignorate e non vengono committate.

Flusso di lavoro di ricostruzione

La directory ghidra/ inclusa nel repository contiene gli export dell'assembly e del decompilatore per tutte le 177 funzioni interne. L'assembly è l'autorità di confronto; il C decompilato è solo un seme semantico.

Installa binary-recons una volta, poi eseguilo dalla radice del repository:

root@kitploit:~
python3 -m pip install -e /path/to/binary-recons
binary-recons --next-function           # reconstruct the next safe missing target
binary-recons --address 0x409092        # reconstruct or improve a specific target

Il tool rileva Qwen automaticamente nella cache standard di Hugging Face; BINARY_RECONS_MODEL_PATH può sovrascriverla. binary-recons.toml mantiene la selezione automatica all'interno degli intervalli di codice del gioco, avvia e ferma llama.cpp e definisce i file transazionali e il comando binary-comp. Ogni esecuzione limitata semina una funzione da Ghidra, chiede a Qwen riparazioni mirate di compilazione o diff dell'assembly e conserva il miglior candidato compilabile e sicuro. Usa --target-score 95 per una passata più profonda o --dry-run-prompt per ispezionare il prompt senza caricare Qwen.

Le esecuzioni misurate con modelli locali sono registrate in docs/MODEL_RESULTS.md.

Risultati dei modelli: 36 funzioni mantenute e 3 indirizzi rinviati

La maggior parte dei candidati mantenuti è stata generata con Qwen3.8 27B GGUF di Unsloth in BF16 (Qwen3.8-27B-BF16, servito come qwen3.8-27b-bf16) tramite llama.cpp con un contesto di 32.768 token e il preset del modello qwen. Il flusso di lavoro attuale usa la decompilazione di Ghidra come seme meccanico, chiede a Qwen solo un contratto significativo e modifiche del sorgente limitate, segue le modifiche valide come traiettoria di riparazione e conserva il miglior risultato misurato da binary-comp. Anche Gemma 4 31B IT BF16 è stata sottoposta a benchmark, ma nessuno dei suoi candidati è stato mantenuto nell'albero del sorgente.

I punteggi seguenti sono stati rimisurati dall'attuale albero del sorgente con MSVC 4.1 e binary-comp in data 2026-08-16. Il tempo registrato include l'avvio del server gestito, la generazione o la riparazione, la build e il confronto per il candidato mantenuto. Esclude le esecuzioni esplorative non riuscite e i turni di riparazione effettuati dopo che un candidato riprendibile era già stato prodotto; questi restano disponibili nei log di esecuzione.

Riconoscimenti

Un ringraziamento speciale a:

  • Sean O'Connor per aver creato Rats! e per continuare a rendere disponibile la sua versione Windows originale dalla pagina ufficiale del gioco.
Scarica lo strumento
IndirizzoFunzioneSomiglianza attualeTempo registrato
0x0040215CIsLevelIndexInRange65.31%3m 06.4s
0x00402205ShowLevelComplete93.96%5m 26.1s
0x0040250CSubmitHighScore97.37%1m 49.7s
0x004026D0RenderScoreboard95.40%2m 30.9s
0x00402BF3AddLevelToTable73.85%4m 04.6s
0x00402DC6UpdateGameDisplay78.18%1m 36.4s
0x00402EE7GetLevelDisplayInfo71.70%2m 15.9s
0x00402FD5GetLevelIndex87.27%5m 48.3s
0x00403430IsBombAtLevel80.62%27.3 s
0x00403607PlaceLevel80.00%2m 32.6s
0x00404764DrawLevelIndicator97.33%1m 35.6s
0x0040499FRenderCornerGlyph69.83%1m 50.9s
0x00404D6EDrawBitmapPair98.67%1m 04.6s
0x00404E3BRenderBitmapToWindow94.74%26.4 s
0x00404ECEDrawBitmapToWindow95.59%59.3 s
0x00404F8BDrawScore96.20%1m 32.4s
0x0040507FDrawScorePanel97.97%2m 45.0s
0x0040525DDrawScoreDigits94.20%2m 13.7s
0x00405343RenderScoreOverlay77.78%1m 28.1s
0x0040546BDrawFrameBorder84.93%37.0 s
0x0040552EExplodeBomb64.71%1m 50.9s
0x0040560ERenderExplosionWave85.07%5m 40.0s
0x0040591ADrawBombExplosion89.31%1m 45.8s
0x00405AF5DrawPausedOverlay96.21%1m 05.1s
0x00405C52HighScoreDialogProc79.82%41.5 s
0x00405DB8ScorePanelDialogProc50.34%1m 53.1s
0x00405F72DemoVersionDialogProc46.31%4m 18.5s
0x004061D3OrderDialogProc53.16%10m 46.5s
0x00408854DrawStartButton70.80%1m 35.6s
0x00408A51UpdateMainMenuState97.56%28.9 s
0x00408AD3InitializeGameLevel83.72%5m 35.7s
0x00408E6ALoadLevelData77.50%52.5 s
0x00408F02LoadHighScores79.61%1m 15.0s
0x00409092SaveHighScores94.12%1m 25.9s
0x0040910CLoadLevelBitmaps98.93%7m 08.4s
0x00409DB6IsRatsHelpFile91.67%41.5 s

I tentativi di ricostruzione per i seguenti indirizzi sono stati esauriti senza mantenere un'implementazione del sorgente. Il tempo impiegato è cumulativo su tutti i tentativi registrati.

Indirizzo rinviatoTempo impiegatoEsito
0x0040100010m 29.7sFunzione troppo grande per una prima passata limitata; mantenuto lo scaffold originale al 1.13%
0x0040384013m 10.0sNessun candidato compilabile; troppo grande per una passata limitata veloce
0x00406674—Saltato: troppo grande per una passata limitata veloce