앱에서 본 기능을 바이너리까지 에이전트와 뜯어 봅니다, 오픈소스 리버스 엔지니어링 MCP REA(morluto/rea) 정리 | DAKER 커뮤니티
남의 앱에서 마음에 드는 기능을 발견했을 때, 소스 코드 없이 그 기능이 어떻게 돌아가는지 에이전트에게 물어볼 수 있다면 어떨까요. GitHub 저장소 morluto/rea가 내세우는 것이 바로 이것입니다. REA(Reverse Engineer Anything)는 코딩 에이전트를 리버스 엔지니어링 도구에 연결해 주는 MCP 서버이자 CLI로, 네이티브 바이너리부터 JavaScript·Electron 앱, .NET 어셈블리, 웹사이트까지 하나의 창구로 분석하게 해 줍니다. 2026년 10월 13일 GitHub API 기준으로 스타 177,872개, 포크 42,788개를 기록한 MIT 라이선스 TypeScript 프로젝트입니다.

REA 저장소는 무엇을 하려는 프로젝트인가
REA 저장소 소개 문구는 에이전트로 무엇이든 리버스 엔지니어링한다, 앱 동작부터 네이티브 바이너리까지라고 요약합니다. README는 이를 조금 더 구체적으로 풀어, 에이전트가 소스 코드 없이 앱을 살펴보고 기능의 동작 원리를 설명하며 근거를 보여 준 뒤 내 프로젝트용 구현까지 만들 수 있다고 설명합니다.
보고 마음에 든 기능을 바이너리 수준까지 이해한다는 것이 REA README가 첫 화면에 내건 한 줄입니다.
REA의 차별점으로 README가 강조하는 부분은 분석이 로컬에서 실행되고, 결과마다 결론을 뒷받침하는 근거와 한계가 함께 반환된다는 점입니다. 에이전트가 그럴듯한 추측을 늘어놓는 대신 어떤 코드와 참조를 보고 그렇게 판단했는지, 무엇이 아직 모르는 부분인지를 함께 받는 구조입니다.
REA가 에이전트와 연결되는 방식
REA 설치는 Node.js와 npm이 있는 환경에서 npx rea-agents setup 한 줄로 시작합니다. 설정 과정에서 사용할 에이전트를 고르고 변경 사항을 검토·승인하면, REA의 MCP 서버와 그에 맞는 작업 지침이 등록되고 기존 설정은 백업됩니다. README가 명시한 지원 에이전트는 Claude Code, Codex, Cursor, Gemini CLI, Grok Build이며 그 밖의 에이전트는 설치 문서에서 안내합니다.
동작 흐름은 단순합니다. 에이전트가 MCP로 REA를 호출해 대상을 검사하고 관련 코드를 추적하면, REA가 근거가 붙은 발견 사항을 돌려줍니다. 에이전트는 이를 바탕으로 후속 질문을 하거나 동작을 설명하거나, 구현을 작성하고 테스트합니다. 같은 워크플로를 터미널 CLI 명령으로도 쓸 수 있어서, 압축을 푼 Electron 앱 디렉터리나 ASAR 파일을 analyze-javascript-application 명령으로 바로 분석해 모듈·임포트·Electron 경계를 JSON으로 받아 볼 수 있습니다.
네이티브 분석에는 이미 설치된 Hopper, Ghidra, IDA를 엔진으로 붙이고, 정적 JavaScript 분석은 별도 네이티브 엔진이 필요 없다고 README는 적고 있습니다. 요구 사양은 Node.js 22.x(22.19 이상), 24.x(24.11 이상) 또는 26 이상입니다.
REA로 분석할 수 있는 대상의 범위
REA README의 분석 대상 표에는 20개가 넘는 항목이 올라 있습니다. 네이티브 바이너리에서는 의사코드·어셈블리·문자열·심볼·호출 관계를, Go 바이너리에서는 내장된 컴파일러 버전과 모듈 정보를 꺼냅니다. WASM 아티팩트, EVM 바이트코드, SQLite 데이터베이스, 기록된 리눅스 크래시, 펌웨어, 패킷 캡처와 HAR 같은 네트워크 기록, 로직 신호 기록까지 다룹니다.
앱 쪽으로는 JavaScript·Electron 앱의 모듈과 IPC, .NET 어셈블리의 메타데이터와 CIL 명령, Android APK의 매니페스트와 디컴파일된 메서드, Flutter 앱의 Dart 스냅샷 해시, 웹사이트의 페이지 구조와 네트워크 관찰 결과가 포함됩니다. 항목마다 필요한 외부 도구가 다르므로, 예를 들어 APK 분석에는 JADX와 JDK가, 패킷 분석에는 TShark가 따로 필요하다는 점을 표에서 함께 확인해야 합니다.
REA 쇼케이스에서 보이는 결과물의 수준
REA 프로젝트는 공식 사이트 rea.tools에 실제 분석 사례를 쇼케이스로 공개합니다. README가 소개하는 DX-Ball 사례에서는 효과음 호출을 따라가 위치를 좌우 패닝 값으로 바꾸는 보조 함수를 찾고, 불완전한 의사코드를 C로 재구성했습니다. 재구성 결과는 원본 x86 기준 3,205개 케이스를 통과하고 컴파일된 함수 63바이트를 그대로 재현했다고 README는 적고 있습니다.
Notion 사례는 Electron 앱에서 렌더러의 클립보드 API를 찾아 preload와 IPC를 거쳐 메인 프로세스까지 따라가는 과정을, TH04 사례는 PC-98용 원작 게임의 16비트 명령에서 탄막 각도 계산을 복원해 당시 컴파일러 출력과 비교하는 과정을 다룹니다. 바이너리와 데스크톱 앱, 레트로 게임이라는 서로 다른 층위를 하나의 도구 흐름으로 보여 주려는 구성입니다.
REA 저장소의 개발 속도와 참여 규모
REA 저장소의 첫 커밋은 2026년 4월 14일이며, 당시 이름은 Hopper Disassembler용 MCP 서버를 개선한 betterBinaryMCP였습니다. 이후 7월 12일 기존 Python MCP 구현을 걷어 냈고, 10월 13일 현재 기본 브랜치 커밋은 2,684개, 커밋 작성자 이름 기준 참여자는 150명을 넘습니다. npm 패키지 이름은 rea-agents이며 저장소 package.json의 버전은 6.4.0입니다. README가 직접 REA는 빠르게 바뀌고 잦은 버그 수정이 포함되니 설치를 최신으로 유지하라고 당부할 만큼 업데이트 주기가 짧습니다.
REA를 쓰기 전에 읽어야 할 책임 있는 사용 원칙
REA 저장소의 DISCLAIMER 문서는 허용 범위를 분명히 합니다. 보안 연구, 악성코드·사고 분석, 취약점 연구와 조율된 공개, CTF와 교육, 상호운용성, 소프트웨어 보존, 내가 소유하거나 검토 권한이 있는 소프트웨어의 디버깅·감사가 대상입니다.
DRM·라이선스 검사·안티치트 우회, 게임 치트 개발, 권한 없는 시스템의 인증 우회, 독점 소프트웨어 복제는 REA 프로젝트가 지원하지 않는다고 DISCLAIMER는 명시합니다.
필요한 권한을 확보하고 관련 법과 라이선스, 이용 약관을 지킬 책임은 사용자에게 있으며, 국가나 분석 대상 소프트웨어의 라이선스에 따라 리버스 엔지니어링 자체가 제한될 수 있다는 점도 같은 문서에 적혀 있습니다. 해커톤이나 CTF에서 활용한다면 대회 규정이 허용하는 범위인지 먼저 확인하는 것이 좋습니다.
해커톤 팀이 REA에서 가져갈 수 있는 것
해커톤에서는 바퀴를 다시 만들 시간이 없습니다. 오픈소스 데스크톱 앱이나 직접 만든 이전 버전 바이너리를 대상으로 REA를 붙여 보면, 에이전트가 근거와 모르는 부분을 구분해 보고하는 습관 자체를 팀 워크플로에 들일 수 있습니다. 보안·CTF 성격의 대회라면 Ghidra나 IDA 결과를 에이전트가 읽기 좋은 형태로 묶어 주는 연결 고리로도 살펴볼 만합니다. 다만 분석 대상의 권한 확인은 언제나 먼저입니다.
여러분이라면 어떤 앱의 어떤 기능을 REA로 가장 먼저 뜯어 보고 싶으신가요? 권한 범위 안에서 시도해 본 결과가 있다면 댓글로 나눠 주십시오.
출처
- GitHub 저장소 morluto/rea: https://github.com/morluto/rea
- REA README: https://github.com/morluto/rea/blob/main/README.md
- REA DISCLAIMER: https://github.com/morluto/rea/blob/main/DISCLAIMER.md
- REA 공식 사이트: https://rea.tools/
- REA 쇼케이스: https://rea.tools/showcase/
- npm 패키지 rea-agents: https://www.npmjs.com/package/rea-agents