Dryxio/auto-re-agent

Open-source AI reverse-engineering agent using Ghidra and LLMs to reconstruct and validate C/C++ functions from binaries.

해결하는 문제

auto-re-agent는 컴파일된 바이너리에서 재구성 가능한 C/C++ 소스 코드로 역설계하는 번거로운 과정을 자동화합니다. 기존 디컴파일러는 의사코드를 제공하지만, 이 도구는 프로젝트 소스 트리에 통합할 수 있는 유효하고 빌드 가능한, 테스트 가능한 후보 구현을 생성하는 것을 목표로 합니다.

작동 방식

이 도구는 프로그램 분석과 LLM 기반 재구성의 조합을 통해 자율적인 파이프라인을 조율합니다.

  1. 증거 수집: ghidra-ai-bridge를 사용하여 Ghidra에서 디컴파일 결과, 어셈블리, 제어 흐름 그래프(CFG), P-코드, 구조적 데이터(구조체, 열거형, vtable)를 추출합니다.
  2. 리버서/체커 루프: "리버서" LLM이 후보 구현을 생성하고, 독립된 "체커" LLM이 이를 검토합니다. 이 루프는 코드가 수락되거나 제한 수준에 도달할 때까지 반복됩니다.
  3. 보수적 검증: 에이전트는 생성된 코드와 바이너리 증거 간의 불일치를 찾기 위해 구조적 검증기를 사용하며, 누락된 소스나 호출 횟수 불일치와 같은 문제를 경고하는 11개의 내장 히ュ리스틱 패리티 신호를 실행합니다.
  4. 검증 게이트: 일시적인 프로젝트 복사본에서 프로젝트 고유의 빌드 및 테스트 명령어(예: CMake 및 CTest를 통해)를 자동으로 실행하여 생성된 코드가 실제로 컴파일되고 테스트를 통과하는지 확인합니다.

대상 사용자

레거시 바이너리나 폐쇄 소스 프로젝트에서 작업하는 소프트웨어 리버스 엔지니어 및 개발자로, 대규모로 고품질의 C/C++ 함수를 재구성해야 하는 사람들을 위한 도구입니다.

주요 특징

  • 다중 LLM 지원: Claude(API/CLI), OpenAI 호환 API, Codex CLI와 호환됩니다.
  • 자율적 워크플로우: 인간의 지속적인 개입 없이 함수 선택, 증거 수집, 반복적 개선을 처리합니다.
  • 빌드 검증: 실제 빌드 시스템과 통합되어 후보 코드가 문법적으로만 올바른 것이 아니라 기능적으로도 실행 가능함을 보장합니다.
  • 지식 그래프: 함수, 호출, 전역 변수를 연결하는 지속적인 knowledge-graph.json을 유지하여 LLM에 맥락을 제공합니다.
  • 비파괴적: 원본 소스 트리에 직접 수정하지 않고 오버레이 및 일시 디렉터리에 후보를 생성합니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트