Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
rats-re — Reconstruit des binaires Windows hérités en code source C en associant les exports du décompilateur Ghidra à des LLM locaux, produisant des candidats vérifiés par compilation et des rapports basés sur la similarité. | Kitploit
Outils/GitHubGitHub/neuromancer/rats-re
Rétro-ingénierieAnalyse de BinairesApprentissage AutomatiqueRétro-Ingénierie Assistée par IA
GitHubneuromancer/rats-re

rats-re

Reconstruit des binaires Windows hérités en code source C en associant les exports du décompilateur Ghidra à des LLM locaux, produisant des candidats vérifiés par compilation et des rapports basés sur la similarité.

Voir le dépôt
il y a 4 joursPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Reconstruction du code source de Rats! avec des LLM locaux

Ce dépôt est une reconstruction en cours du code source de RATS.EXE, la version Windows d'origine de Rats! (1994) de Sean O'Connor. Il compile un exécutable Win32 avec Microsoft Visual C++ 4.1 sous wibo et peut être testé dans DREAMM.

L'expérience explore jusqu'où les LLM locaux peuvent mener la reconstruction de code source sur une base de code petite mais réaliste, plutôt qu'un exemple jouet. La fidélité de correspondance reste inégale, ce qui est utile ici : l'objectif est de présenter une vision réaliste du processus et de ses limites actuelles, et non de masquer les fonctions difficiles.

La reconstruction des fonctions est réservée aux LLM locaux. Codex et Claude sont utilisés pour la configuration du dépôt et l'orchestration des benchmarks, mais ils ne sont pas autorisés à écrire ni à modifier le code source reconstruit.

Sauf mention contraire, toutes les expériences ont utilisé Qwen3.8 27B BF16 sur un MacBook Pro 2024 avec une puce Apple M4 Max (CPU 16 cœurs, GPU 40 cœurs) et 128 Go de mémoire. L'approche fonctionne — imparfaitement, mais utilement : les 36 fonctions conservées ont chacune pris en moyenne 2m 32.1s de temps journalisé pour être reconstruites.

Mise en place

Clonez avec les sous-modules, ou initialisez-les après le clonage :

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

L'exécutable d'origine n'est pas inclus. Téléchargez la version Windows gratuite depuis la page officielle de Rats! et placez son RATS.EXE à la racine du dépôt pour utiliser les cibles original-executable et binary-comparison.

Commandes courantes

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'archive MSVC 4.1 dont la somme de contrôle est épinglée, les bibliothèques MSVC 4.1 requises, la msvcrt40.dll compatible de wibo et DREAMM 4.0x21 sont téléchargés à la demande. Ils restent des dépendances de build locales ignorées et ne sont pas commités.

Workflow de reconstruction

Le répertoire ghidra/ inclus dans le dépôt contient les exportations assembleur et décompilateur pour les 177 fonctions internes. L'assembleur fait autorité pour la comparaison ; le C décompilé n'est qu'une graine sémantique.

Installez binary-recons une fois, puis exécutez-le depuis la racine du dépôt :

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

L'outil détecte Qwen automatiquement dans le cache Hugging Face standard ; BINARY_RECONS_MODEL_PATH peut le remplacer. binary-recons.toml maintient la sélection automatique dans les plages de code du jeu, démarre et arrête llama.cpp, et définit les fichiers transactionnels et la commande binary-comp. Chaque exécution bornée amorce une fonction depuis Ghidra, demande à Qwen des réparations ciblées de compilation ou de diff assembleur, et conserve le meilleur candidat compilable sûr. Utilisez --target-score 95 pour une passe plus approfondie, ou --dry-run-prompt pour inspecter le prompt sans charger Qwen.

Les exécutions mesurées des modèles locaux sont consignées dans docs/MODEL_RESULTS.md.

Résultats du modèle : 36 fonctions conservées et 3 adresses différées

La plupart des candidats conservés ont été générés avec le Qwen3.8 27B GGUF d'Unsloth en BF16 (Qwen3.8-27B-BF16, servi sous qwen3.8-27b-bf16) via llama.cpp avec un contexte de 32 768 jetons et le préréglage de modèle qwen. Le workflow actuel utilise la décompilation de Ghidra comme graine mécanique, ne demande à Qwen qu'un contrat pertinent et des modifications de source bornées, suit les modifications valides comme trajectoire de réparation, et conserve le meilleur résultat mesuré par binary-comp. Gemma 4 31B IT BF16 a également été évalué, mais aucun de ses candidats n'a été conservé dans l'arborescence source.

Les scores ci-dessous ont été remesurés à partir de l'arborescence source actuelle avec MSVC 4.1 et binary-comp le 2026-08-16. Le temps journalisé inclut le démarrage du serveur géré, la génération ou la réparation, la compilation et la comparaison pour le candidat conservé. Il exclut les exécutions exploratoires infructueuses et les tours de réparation effectués après qu'un candidat reprenable a déjà été produit ; ceux-ci restent disponibles dans les journaux d'exécution.

Remerciements

Remerciements particuliers à :

  • Sean O'Connor pour avoir créé Rats! et continuer à rendre disponible sa version Windows d'origine depuis la page officielle du jeu.
Télécharger l’outil
AdresseFonctionSimilarité actuelleTemps journalisé
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

Les tentatives de reconstruction des adresses suivantes ont été épuisées sans qu'une implémentation source ne soit conservée. Le temps passé est cumulatif sur toutes les tentatives journalisées.

Adresse différéeTemps passéRésultat
0x0040100010m 29.7sFonction trop volumineuse pour une première passe bornée ; échafaudage d'origine conservé (1.13 %)
0x0040384013m 10.0sAucun candidat compilable ; fonction trop volumineuse pour une passe bornée rapide
0x00406674—Ignorée : trop volumineuse pour une passe bornée rapide