bbylw/rea-cn

REA:逆向一切 通过一个 MCP 服务,逆向分析二进制文件、应用程序和运行时行为。 看到喜欢的功能,弄清它的工作原理,深入到二进制层面。

REA란 무엇인가?

REA(Reverse-Engineered Anything)는 Node.js 기반 플랫폼으로, 대규모 언어 모델 에이전트가 기존의 리버스 엔지니어링 도구(Hopper, Ghidra, IDA 등) 및 JavaScript/Electron, .NET, Android, 펌웨어, 웹 캡처 등을 위한 정적 분석 유틸리티 제품군과 대화할 수 있게 해줍니다. 아이디어는 AI 어시스턴트가 도구에게 “이 기능은 어떻게 작동하나요?”라고 묻고, 에이전트가 추론, 설명, 심지어 재구현할 수 있는 구체적인 증거(역컴파일된 코드, 호출 그래프, 문자열, 리소스 목록, 스크린샷)를 받는 것입니다.


작동 방식

  1. MCP 서비스 – REA는 분석 명령 카탈로그를 노출하는 로컬 Micro-Component-Protocol 서버를 실행합니다.
  2. 에이전트 등록 – npx rea-agents setup을 사용하여 지원되는 LLM 기반 에이전트(Claude, Gemini-CLI, Cursor, Grok 등)에 서비스를 등록합니다. 설정은 에이전트에게 쿼리 작성 방법을 알려주는 스킬(프롬프트 가이드)도 설치합니다.
  3. 질문하기 – “Notion의 검색 기능을 설명하고 증거를 제공하세요.”와 같은 자연어 요청을 입력합니다.
  4. 도구 실행 – REA는 적절한 백엔드(Hopper, Ghidra, JavaScript 파서, 브라우저 스크레이퍼 등)를 호출하고 구조화된 증거(의사 코드, 어셈블리, 모듈 그래프, 스크린샷, 네트워크 로그)를 반환합니다.
  5. 에이전트 응답 – LLM은 증거를 사용하여 질문에 답하고 테스트할 수 있는 새 코드를 생성할 수도 있습니다.

동일한 워크플로를 명령줄에서 사용할 수 있으므로 LLM 없이도 분석을 스크립트로 작성할 수 있습니다.


분석할 수 있는 것

대상 반환되는 증거 필요한 도구
네이티브 바이너리(x86/ARM) 의사 코드, 어셈블리, 문자열, 심볼, 호출 참조 Hopper, Ghidra 또는 IDA
ELF 레이아웃 섹션, 심볼, 재배치, 정적 보호 Linux의 pwntools
EVM 바이트코드 디스패치 선택기, 추론된 매개변수, 상태 변경 가능성 Linux의 원시 바이트/16진수 입력
기록된 Linux 크래시 레지스터, 신호, 선택적 메모리 맵 pwntools, 선택적 GDB
JavaScript / Electron 앱 모듈, 가져오기, 소스 맵, IPC 브리지, 네이티브 확장 Node.js/npm
웹사이트 DOM 구조, 스크립트, 네트워크 추적, 스크린샷 Chrome 기반 브라우저
HAR 캡처 요청, 응답, 페이로드 HAR 파일, 선택적 mitmdump
.NET 어셈블리 메타데이터, CIL, 네이티브 종속성, 빌드 차이 정적 분석만
Android APK 매니페스트, 클래스, 역컴파일된 메서드 JADX + JDK
Android 기기 패키지, 프로세스, 로그, 덤프, 스크린샷 adb
JEB 프로젝트 프로젝트 단위, 아티팩트 요약, 의사 코드 MCP를 통한 JEB 클라이언트
Android 리소스 디코딩된 매니페스트, 문자열 테이블, 로케일 Apktool
펌웨어 이미지 파티션, 추출된 파일, binwalk로 핸드오프 Binwalk/Unblob
패키지 및 리소스(Apple 번들, JS 아티팩트) 파일 목록, plists, 리소스 추출 다양한 헬퍼
프로세스 동작 터미널 출력, 파일 시스템 변경, 런타임 차이 PTY 지원 Linux/macOS

정적 JavaScript/.NET 검사는 파일만 읽습니다. 런타임 캡처는 사용자 권한으로 대상 프로그램을 실행합니다.


시작하기(빠른 시작)

# 1. Node 22/24/26 및 npm 설치
npx rea-agents setup          # MCP 서비스 등록 및 스킬 설치
# 2. 에이전트에게 질문(선택한 LLM 클라이언트를 통해)
#    예: "Notes 앱의 검색 기능을 설명하고 증거를 보여주세요."
# 3. 또는 CLI 분석을 직접 실행
npx -y rea-agents@latest analyze-javascript-application /path/to/app --json

CLI를 전역으로 설치할 수도 있습니다:

npm install -g rea-agents
rea --help

업데이트는 rea update(npm install) 또는 스킬용 npx rea-agents@latest setup으로 수행합니다.


예시 쇼케이스

  • DX-Ball – REA는 고전 PC-98 게임의 사운드 패닝 루틴을 추적하고, 불완전한 의사 코드를 C로 변환하여 3,205개의 원본 x86 테스트 케이스를 통과했습니다.
  • Notion – 렌더러 프로세스에서 프리로드 스크립트를 거쳐 메인 프로세스까지 Electron 클립보드 브리지를 추적하여 리치 포맷 클립보드 API를 노출했습니다.
  • TH04 – 16비트 DOS 탄도 궤적 코드를 역컴파일하고 C++ 로직을 재구성하여 원본 컴파일러 출력과 일치시켰습니다.

전체 사례 연구는 REA 웹사이트에 있으며 재구성된 저장소에 대한 링크가 있습니다.


대상 사용자

  • LLM 기반 에이전트 – 클로즈드 소스 소프트웨어를 리버스 엔지니어링할 때 구체적이고 검증 가능한 증거가 필요한 에이전트.
  • 보안 연구원 – 바이너리, 펌웨어 또는 웹 앱 분석을 자동화하고 결과를 로컬에 유지하려는 사람.
  • 개발자 – 소스 코드 없이 경쟁업체 앱의 기능을 복제하려는 사람.

제한 사항 및 안전

  • REA는 바이너리를 업로드하지 않습니다. 모든 분석은 로컬에서 실행됩니다. LLM 공급자는 전송한 증거를 기록할 수 있습니다.
  • 심층 네이티브 분석에는 라이선스가 있는 디스어셈블러(Hopper, Ghidra, IDA)가 필요합니다. 정적 JavaScript/.NET 분석은 즉시 작동합니다.
  • 대상 프로그램을 리버스 엔지니어링할 법적 권리가 있는지 여부는 사용자 책임입니다.

자세히 알아보기

  • 웹사이트 및 문서 – https://rea.tools/ (가이드, 아키텍처, 로드맵)
  • Discord 커뮤니티 – 실시간 Q&A 및 쇼케이스 공유.
  • GitHub – 소스, CI, 이슈 트래커, 기여 가이드.

TL;DR

REA는 LLM 에이전트와 기존 리버스 엔지니어링 도구를 연결하는 Node.js 툴킷으로, AI에게 바이너리, Electron 앱, Android 패키지, 펌웨어, 웹 캡처 등을 조사하도록 요청하고 AI가 설명하거나 재구현할 수 있는 구체적인 증거(의사 코드, 그래프, 스크린샷)를 받을 수 있습니다. npx rea-agents setup으로 설치하고 LLM을 등록한 다음 질문하거나 CLI 명령을 직접 실행하세요.

관련

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