Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
rats-re — Reconstruye binarios Windows heredados en código fuente C combinando exportaciones del descompilador de Ghidra con LLM locales, produciendo candidatos verificados por compilación e informes basados en similitud. | Kitploit
Herramientas/GitHubGitHub/neuromancer/rats-re
Ingeniería InversaAnálisis de BinariosAprendizaje AutomáticoReversing Asistido por IA
GitHubneuromancer/rats-re

rats-re

Reconstruye binarios Windows heredados en código fuente C combinando exportaciones del descompilador de Ghidra con LLM locales, produciendo candidatos verificados por compilación e informes basados en similitud.

Ver Repositorio
114hace 1 mesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Reconstrucción del código fuente de Rats! con LLM locales

Este repositorio es una reconstrucción en curso del código fuente de RATS.EXE, la versión original para Windows de Rats! (1994) de Sean O'Connor. Compila un ejecutable Win32 con Microsoft Visual C++ 4.1 bajo wibo y puede probarse en DREAMM.

El experimento explora hasta dónde pueden llegar los LLM locales en la reconstrucción de código fuente de una base de código pequeña pero realista, en lugar de un ejemplo de juguete. La fidelidad de las coincidencias sigue siendo desigual, lo cual resulta útil aquí: el objetivo es presentar una visión realista del proceso y sus limitaciones actuales, no ocultar funciones difíciles.

La reconstrucción de funciones está restringida a LLM locales. Codex y Claude se utilizan para la configuración del repositorio y la orquestación de puntos de referencia, pero no se les permite escribir o editar el código fuente reconstruido.

Salvo que se indique lo contrario, todos los experimentos utilizaron Qwen3.8 27B BF16 en un MacBook Pro de 2024 con un Apple M4 Max (CPU de 16 núcleos, GPU de 40 núcleos) y 128 GB de memoria. El enfoque funciona—de manera imperfecta, pero útil: las 36 funciones conservadas tardaron un tiempo medio registrado de 2m 32,1s cada una en reconstruirse.

Configuración

Clona con submódulos, o inicialízalos después de clonar:

git submodule update --init --recursive

El ejecutable original no está incluido. Descarga la versión gratuita para Windows desde la página oficial de Rats! y coloca su RATS.EXE en la raíz del repositorio para usar los objetivos de ejecutable original y comparación binaria.

Comandos comunes

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

El archivo MSVC 4.1 con suma de verificación fijada, las bibliotecas MSVC 4.1 necesarias, el msvcrt40.dll compatible con wibo y DREAMM 4.0x21 se descargan bajo demanda. Siguen siendo dependencias de compilación locales ignoradas y no se incluyen en el repositorio.

Flujo de trabajo de reconstrucción

El directorio ghidra/ incluido en el repositorio contiene exportaciones de ensamblador y descompilador para las 177 funciones internas. El ensamblador es la autoridad de comparación; el C descompilado es solo una semilla semántica.

Instala binary-recons una vez, y luego ejecútalo desde la raíz del repositorio:

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

La herramienta descubre Qwen automáticamente en la caché estándar de Hugging Face; BINARY_RECONS_MODEL_PATH puede sobrescribirla. binary-recons.toml mantiene la selección automática dentro de los rangos de código del juego, inicia y detiene llama.cpp, y define los archivos transaccionales y el comando binary-comp. Cada ejecución acotada siembra una función desde Ghidra, pide a Qwen reparaciones centradas en compilación o diferencias de ensamblador, y conserva el mejor candidato compilable y seguro. Usa --target-score 95 para una pasada más profunda o --dry-run-prompt para inspeccionar el prompt sin cargar Qwen.

Las ejecuciones medidas con modelos locales se registran en docs/MODEL_RESULTS.md.

Resultados del modelo: 36 funciones conservadas y 3 direcciones diferidas

La mayoría de los candidatos conservados se generaron con el Qwen3.8 27B GGUF de Unsloth en BF16 (Qwen3.8-27B-BF16, servido como qwen3.8-27b-bf16) mediante llama.cpp con un contexto de 32.768 tokens y el ajuste preestablecido de modelo qwen. El flujo de trabajo actual usa la descompilación de Ghidra como semilla mecánica, pide a Qwen solo un contrato significativo y ediciones de código fuente acotadas, sigue las ediciones válidas como trayectoria de reparación, y conserva el mejor resultado medido por binary-comp. Gemma 4 31B IT BF16 también fue evaluada, pero ninguno de sus candidatos se conserva en el árbol de fuentes.

Las puntuaciones siguientes se volvieron a medir desde el árbol de fuentes actual con MSVC 4.1 y binary-comp el 2026-08-16. El tiempo registrado incluye el arranque del servidor gestionado, la generación o reparación, la compilación y la comparación del candidato conservado. Excluye ejecuciones exploratorias fallidas y turnos de reparación realizados después de que ya se hubiera producido un candidato reanudable; esos permanecen disponibles en los registros de ejecución.

AddressFunctionCurrent similarityLogged time
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

Los intentos de reconstrucción de las siguientes direcciones se agotaron sin conservar una implementación en el código fuente. El tiempo invertido es acumulativo en todos los intentos registrados.

Descargar herramienta