Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
rats-re — 레거시 Windows 바이너리를 Ghidra 디컴파일러 내보내기와 로컬 LLM을 결합하여 C 소스로 재구성하며, 컴파일 검증된 후보와 유사성 기반 보고서를 생성합니다. | Kitploit
도구/GitHubGitHub/neuromancer/rats-re
Reverse EngineeringBinary AnalysisMachine LearningAI-Assisted Reversing
GitHubneuromancer/rats-re

rats-re

레거시 Windows 바이너리를 Ghidra 디컴파일러 내보내기와 로컬 LLM을 결합하여 C 소스로 재구성하며, 컴파일 검증된 후보와 유사성 기반 보고서를 생성합니다.

저장소 보기
1141개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Rats! 로컬 LLM을 이용한 소스 재구성

이 저장소는 Sean O'Connor이 제작한 Rats!(1994)의 원래 Windows 버전인 RATS.EXE의 소스 코드를 재구성하는 진행 중인 작업물입니다. wibo에서 Microsoft Visual C++ 4.1로 Win32 실행 파일을 빌드하고 DREAMM에서 테스트할 수 있습니다.

이 실험은 장난감 예제가 아닌 작지만 실제적인 코드베이스에서 로컬 LLM이 소스 재구성을 어디까지 수행할 수 있는지 탐구합니다. 일치 충실도는 여전히 고르지 않은데, 이것이 여기서 유용합니다. 목표는 어려운 함수를 숨기는 것이 아니라 이 과정과 현재 한계에 대한 현실적인 관점을 제시하는 것이기 때문입니다.

함수 재구성은 로컬 LLM으로 제한됩니다. Codex와 Claude는 저장소 설정과 벤치마크 오케스트레이션에 사용되지만, 재구성된 소스를 작성하거나 편집할 수는 없습니다.

별도로 명시하지 않는 한, 모든 실험은 128GB 메모리를 갖춘 Apple M4 Max(16코어 CPU, 40코어 GPU)가 장착된 2024 MacBook Pro에서 Qwen3.8 27B BF16을 사용했습니다. 이 접근 방식은 완벽하지는 않지만 유용하게 작동합니다. 유지된 36개 함수는 각각 평균 2m 32.1s의 기록된 시간으로 재구성되었습니다.

설정

하위 모듈과 함께 클론하거나, 클론 후 초기화하십시오:

git submodule update --init --recursive

원본 실행 파일은 포함되어 있지 않습니다. 공식 Rats! 페이지에서 무료 Windows 버전을 다운로드하고 RATS.EXE를 저장소 루트에 넣으면 original-executable 및 binary-comparison 타겟을 사용할 수 있습니다.

공통 명령어

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

체크섬으로 고정된 MSVC 4.1 아카이브, 필요한 MSVC 4.1 라이브러리, wibo와 호환되는 msvcrt40.dll, 그리고 DREAMM 4.0x21은 요청 시 다운로드됩니다. 이들은 무시되는 로컬 빌드 의존성으로 남아 있으며 커밋되지 않습니다.

재구성 워크플로

체크인된 ghidra/ 디렉터리에는 177개 내부 함수 전체에 대한 어셈블리 및 디컴파일러 내보내기가 포함되어 있습니다. 어셈블리가 비교의 기준이며, 디컴파일된 C는 의미론적 시드일 뿐입니다.

binary-recons를 한 번 설치한 후 저장소 루트에서 실행하십시오:

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

이 도구는 표준 Hugging Face 캐시에서 Qwen을 자동으로 발견하며, BINARY_RECONS_MODEL_PATH로 재정의할 수 있습니다. binary-recons.toml은 자동 선택을 게임 코드 범위 내로 유지하고, llama.cpp를 시작·종료하며, 트랜잭션 파일과 binary-comp 명령을 정의합니다. 각 제한 실행은 Ghidra에서 함수 하나를 시드로 사용하고, Qwen에게 컴파일 또는 어셈블리 diff에 집중된 수리를 요청한 다음, 가장 좋은 안전한 컴파일 후보를 유지합니다. 더 깊은 패스에는 --target-score 95를 사용하고, Qwen을 로드하지 않고 프롬프트를 검사하려면 --dry-run-prompt를 사용하십시오.

측정된 로컬 모델 실행 기록은 docs/MODEL_RESULTS.md에 있습니다.

모델 결과: 유지된 36개 함수와 연기된 3개 주소

유지된 대부분의 후보는 llama.cpp를 통해 32,768 토큰 컨텍스트와 qwen 모델 프리셋으로 BF16(Qwen3.8-27B-BF16, qwen3.8-27b-bf16으로 서빙)에서 Unsloth의 Qwen3.8 27B GGUF로 생성되었습니다. 현재 워크플로는 Ghidra의 디컴파일을 기계적 시드로 사용하고, Qwen에게 의미 있는 계약과 제한된 소스 편집만 요청하며, 유효한 편집을 수리 궤적으로 따르고, binary-comp로 측정된 최상의 결과를 유지합니다. Gemma 4 31B IT BF16도 벤치마킹되었지만, 그 후보 중 어느 것도 소스 트리에 유지되지 않았습니다.

아래 점수는 2026-08-16에 MSVC 4.1과 binary-comp로 현재 소스 트리에서 다시 측정되었습니다. 기록된 시간에는 관리형 서버 시작, 생성 또는 수리, 빌드, 그리고 유지된 후보에 대한 비교가 포함됩니다. 재개 가능한 후보가 이미 생성된 이후에 수행된 실패한 탐색 실행과 수리 턴은 제외되며, 이들은 실행 로그에서 계속 확인할 수 있습니다.

주소함수현재 유사도기록된 시간
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

다음 주소에 대한 재구성 시도는 소스 구현을 유지하지 못한 채 소진되었습니다. 소요 시간은 기록된 모든 시도의 누적입니다.

연기된 주소소요 시간결과
0x0040100010m 29.7s제한된 첫 패스에 비해 함수가 너무 큼; 원본 1.13% 스캐폴드 유지
0x0040384013m 10.0s컴파일 가능한 후보 없음; 빠른 제한 패스에 비해 너무 큼
0x00406674—건너뜀: 빠른 제한 패스에 비해 너무 큼

감사의 말

특별히 감사드립니다:

  • Rats!를 제작하고 공식 게임 페이지에서 원래 Windows 릴리스를 계속 제공해 주신 Sean O'Connor님께 감사드립니다.
도구 다운로드