Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
rats-re — Rekonstruiert Legacy-Windows-Binärdateien in C-Quellcode, indem Exporte des Ghidra-Dekompilierers mit lokalen LLMs kombiniert werden, wodurch kompilierungsgeprüfte Kandidaten und ähnlichkeitsbasierte Berichte erzeugt werden. | Kitploit
Tools/GitHubGitHub/neuromancer/rats-re
Reverse EngineeringBinäranalyseMaschinelles LernenKI-gestütztes Reverse Engineering
GitHubneuromancer/rats-re

rats-re

Rekonstruiert Legacy-Windows-Binärdateien in C-Quellcode, indem Exporte des Ghidra-Dekompilierers mit lokalen LLMs kombiniert werden, wodurch kompilierungsgeprüfte Kandidaten und ähnlichkeitsbasierte Berichte erzeugt werden.

Repository anzeigen
17vor 23 TagenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Rats! Quellcode-Rekonstruktion mit lokalen LLMs

Dieses Repository ist eine in Arbeit befindliche Rekonstruktion des Quellcodes für RATS.EXE, die ursprüngliche Windows-Version von Rats! (1994) von Sean O'Connor. Es erstellt eine Win32-Programmdatei mit Microsoft Visual C++ 4.1 unter wibo und kann in DREAMM getestet werden.

Das Experiment untersucht, wie weit lokale LLMs die Quellcode-Rekonstruktion an einer kleinen, aber realistischen Codebasis statt an einem Spielzeugbeispiel vorantreiben können. Die Übereinstimmungstreue bleibt uneinheitlich, was hier nützlich ist: Ziel ist es, eine realistische Sicht auf den Prozess und seine aktuellen Grenzen zu vermitteln, nicht schwierige Funktionen zu verstecken.

Die Funktionsrekonstruktion ist auf lokale LLMs beschränkt. Codex und Claude werden für die Repository-Einrichtung und die Benchmark-Orchestrierung verwendet, dürfen den rekonstruierten Quellcode jedoch nicht schreiben oder bearbeiten.

Sofern nicht anders angegeben, wurden alle Experimente mit Qwen3.8 27B BF16 auf einem MacBook Pro von 2024 mit Apple M4 Max (16-Kern-CPU, 40-Kern-GPU) und 128 GB Arbeitsspeicher durchgeführt. Der Ansatz funktioniert – unvollkommen, aber nützlich: Die 36 beibehaltenen Funktionen benötigten eine durchschnittliche protokollierte Zeit von 2m 32.1s pro Funktion zur Rekonstruktion.

Setup

Mit Submodulen klonen oder diese nach dem Klonen initialisieren:

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

Die ursprüngliche Programmdatei ist nicht enthalten. Laden Sie die kostenlose Windows-Version von der offiziellen Rats!-Seite herunter und legen Sie deren RATS.EXE im Repository-Stammverzeichnis ab, um die Ziele original-executable und binary-comparison zu verwenden.

Häufige Befehle

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

Das per Prüfsumme fixierte MSVC-4.1-Archiv, die erforderlichen MSVC-4.1-Bibliotheken, wibos kompatible msvcrt40.dll und DREAMM 4.0x21 werden bei Bedarf heruntergeladen. Sie bleiben ignorierte lokale Build-Abhängigkeiten und werden nicht committet.

Rekonstruktions-Workflow

Das eingecheckte Verzeichnis ghidra/ enthält Assembly- und Decompiler-Exporte für alle 177 internen Funktionen. Assembly ist die maßgebliche Vergleichsinstanz; dekompilierter C-Code ist nur ein semantischer Seed.

Installieren Sie binary-recons einmal und führen Sie es dann aus dem Repository-Stammverzeichnis aus:

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

Das Tool findet Qwen automatisch im Standard-Hugging-Face-Cache; BINARY_RECONS_MODEL_PATH kann dies überschreiben. binary-recons.toml hält die automatische Auswahl innerhalb der Spielcode-Bereiche, startet und stoppt llama.cpp und definiert die transaktionalen Dateien sowie den binary-comp-Befehl. Jeder begrenzte Lauf seedet eine Funktion aus Ghidra, bittet Qwen um fokussierte Compile- oder Assembly-Diff-Reparaturen und behält den besten sicher kompilierenden Kandidaten. Verwenden Sie --target-score 95 für einen tieferen Durchlauf oder --dry-run-prompt, um den Prompt zu prüfen, ohne Qwen zu laden.

Gemessene lokale Modell-Läufe sind in docs/MODEL_RESULTS.md dokumentiert.

Modellergebnisse: 36 beibehaltene Funktionen und 3 aufgeschobene Adressen

Die meisten beibehaltenen Kandidaten wurden mit Unsloths Qwen3.8 27B GGUF in BF16 (Qwen3.8-27B-BF16, bereitgestellt als qwen3.8-27b-bf16) über llama.cpp mit einem 32.768-Token-Kontext und dem Modell-Preset qwen erzeugt. Der aktuelle Workflow verwendet Ghidras Dekompilierung als mechanischen Seed, bittet Qwen nur um einen aussagekräftigen Contract und begrenzte Quellcode-Änderungen, folgt gültigen Änderungen als Reparatur-Trajektorie und behält das beste mit binary-comp gemessene Ergebnis. Gemma 4 31B IT BF16 wurde ebenfalls benchmarkt, aber keiner seiner Kandidaten ist im Quellbaum enthalten.

Die folgenden Ähnlichkeitswerte wurden am 16.08.2026 aus dem aktuellen Quellbaum mit MSVC 4.1 und binary-comp neu gemessen. Die protokollierte Zeit umfasst den Start des verwalteten Servers, die Generierung oder Reparatur, den Build und den Vergleich für den beibehaltenen Kandidaten. Sie schließt erfolglose explorative Läufe und Reparaturrunden aus, die nach der Erzeugung eines fortsetzbaren Kandidaten erfolgten; diese bleiben in den Laufprotokollen verfügbar.

Danksagungen

Besonderer Dank geht an:

  • Sean O'Connor für die Entwicklung von Rats! und dafür, dass er die ursprüngliche Windows-Version weiterhin auf der offiziellen Spielseite verfügbar macht.
Tool herunterladen
AdresseFunktionAktuelle ÄhnlichkeitProtokollierte Zeit
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

Rekonstruktionsversuche für die folgenden Adressen wurden ausgeschöpft, ohne eine Quellcode-Implementierung beizubehalten. Die aufgewendete Zeit ist kumulativ über alle protokollierten Versuche.

Aufgeschobene AdresseAufgewendete ZeitErgebnis
0x0040100010m 29.7sFunktion zu groß für einen begrenzten ersten Durchlauf; ursprüngliches 1.13%-Gerüst beibehalten
0x0040384013m 10.0sKein kompilierbarer Kandidat; zu groß für einen schnellen begrenzten Durchlauf
0x00406674—Übersprungen: zu groß für einen schnellen begrenzten Durchlauf