bbylw/rea-cn
REA:逆向一切 通过一个 MCP 服务,逆向分析二进制文件、应用程序和运行时行为。 看到喜欢的功能,弄清它的工作原理,深入到二进制层面。
REA란 무엇인가?
REA(Reverse-Engineered Anything)는 Node.js 기반 플랫폼으로, 대규모 언어 모델 에이전트가 기존의 리버스 엔지니어링 도구(Hopper, Ghidra, IDA 등) 및 JavaScript/Electron, .NET, Android, 펌웨어, 웹 캡처 등을 위한 정적 분석 유틸리티 제품군과 대화할 수 있게 해줍니다. 아이디어는 AI 어시스턴트가 도구에게 “이 기능은 어떻게 작동하나요?”라고 묻고, 에이전트가 추론, 설명, 심지어 재구현할 수 있는 구체적인 증거(역컴파일된 코드, 호출 그래프, 문자열, 리소스 목록, 스크린샷)를 받는 것입니다.
작동 방식
- MCP 서비스 – REA는 분석 명령 카탈로그를 노출하는 로컬 Micro-Component-Protocol 서버를 실행합니다.
- 에이전트 등록 –
npx rea-agents setup을 사용하여 지원되는 LLM 기반 에이전트(Claude, Gemini-CLI, Cursor, Grok 등)에 서비스를 등록합니다. 설정은 에이전트에게 쿼리 작성 방법을 알려주는 스킬(프롬프트 가이드)도 설치합니다. - 질문하기 – “Notion의 검색 기능을 설명하고 증거를 제공하세요.”와 같은 자연어 요청을 입력합니다.
- 도구 실행 – REA는 적절한 백엔드(Hopper, Ghidra, JavaScript 파서, 브라우저 스크레이퍼 등)를 호출하고 구조화된 증거(의사 코드, 어셈블리, 모듈 그래프, 스크린샷, 네트워크 로그)를 반환합니다.
- 에이전트 응답 – 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 명령을 직접 실행하세요.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트