REA (Reverse Engineer Anything)란 무엇인가? GitHub에서 일주일 만에 115K 스타를 거머쥔 MCP 서버
요약
REA(Reverse Engineer Anything)는 소스 코드가 없는 소프트웨어를 분석하여 에이전트가 기능을 분해할 수 있도록 돕는 오픈소스 MCP 서버이자 CLI입니다. 이 도구는 네이티브 바이너리, Electron 앱 등 다양한 형태의 프로그램에 연결되어 유사 코드, 모듈 그래프 등을 반환합니다. REA는 기존 리버스 엔지니어링 도구와 에이전트를 연결하는 강력한 커넥터 역할을 합니다.
핵심 포인트
- REA는 소스 코드가 없는 소프트웨어 분석을 위한 MCP 서버입니다.
- 다양한 바이너리 형태(APK, Electron 등)에 연결하여 기능을 분해합니다.
- 유사 코드, 모듈 그래프 등 구조화된 결과물을 제공합니다.
- 기존 리버스 엔지니어링 도구와 에이전트를 통합하는 커넥터 역할을 합니다.
REA (Reverse Engineer Anything)란 무엇인가? 일주일 만에 115K 스타를 거머쥔 MCP 서버
REA는 Reverse Engineer Anything의 약자로, 소스 코드가 없는 상태에서 코딩 에이전트가 소프트웨어를 분해할 수 있도록 하는 오픈소스 MCP 서버이자 CLI입니다. Claude Code, Codex, Cursor 또는 다른 에이전트를 네이티브 바이너리(native binary), Electron 앱, .NET 어셈블리(assembly), Android APK, 웹사이트 또는 기록된 네트워크 캡처에 연결하고 '특정 기능이 어떻게 작동하는지'라고 질문하면, REA는 유사 코드(pseudocode), 모듈 그래프(graph module), 요청 로그(request log) 및 주장 각각을 뒷받침하는 증거를 반환합니다. 이후 에이전트는 그 동작을 설명하거나 재구축합니다.
morluto/rea 리포지토리는 2026년 4월에 생성되었으며, 아무도 관심을 갖지 않다가 10월 첫째 주가 되어서야 주목받기 시작했습니다. 10월 12일까지 이 리포지토리는 115,000 스타와 25,000 포크를 달성하며 GitHub에서 가장 빠르게 성장한 프로젝트 중 하나가 되었습니다. 본 가이드는 REA가 무엇을 하는지, 어떻게 설치하는지, 어떤 면에서 강력한지, 어디서 과장되었는지, 그리고 콘텐츠의 대부분이 건너뛰는 부분: REA가 HAR 및 mitmproxy 캡처를 읽어 사용자가 Apidog에서 수행하는 API 리버스 엔지니어링의 프런트엔드 역할을 하는지에 대해 다룹니다.
트렌드의 배경 수치
Trendshift의 일일 추적에 따르면 REA는 10월 4일에 처음으로 트렌딩 목록에 등장했으며, 하루 만에 약 1,400개의 새로운 스타를 기록했습니다. 그 후 일주일 동안 복리처럼 지속적으로 성장했습니다.
| 날짜 | 해당일 신규 스타 |
|---|---|
| 10월 4일 | 1,373 |
| ... |
이 리포지토리는 10월 6일부터 12일 사이의 7일 중 5일 동안 GitHub 트렌딩에서 1위를 차지했습니다. 릴리스도 비슷한 속도를 보였습니다: 버전 3.2는 10월 3일에, 4.0은 5일에, 5.0은 7일에, 6.0은 8일에, 그리고 6.1부터 6.4까지는 10월 9일~11일 사이에 출시되었습니다. 이 속도는 사용자가 주목해야 할 중요한 지점이며, 우리는 이 점을 다시 다룰 것입니다.
어떤 트윗이나 게시물도 이러한 급상승을 설명할 수 없었습니다. 실제로 작동한 것은 프레젠테이션이었습니다. “좋아하는 기능을 보고, 그것이 바이너리 수준에서 어떻게 작동하는지 이해한다”는 내용의 에이전트 비디오가 새 데스크톱 앱을 자체 바이너리로부터 생성하는 모습으로 빠르게 퍼져나갔고, 전통적인 소프트웨어는 게임 끝이라는 말과 함께 마무리되었습니다. 하지만 더 유용한 해석은 REA보다 좁습니다. REA는 기존 리버스 엔지니어링(reverse engineering) 도구와 에이전트를 연결해주는 패키징이 잘 된 커넥터입니다.
REA란 무엇인가
REA는 당신의 에이전트 내부에서 작동하는 MCP 서버로 기능합니다. 에이전트는 REA 도구를 호출하여 목표를 적절한 엔진으로 검사하고, 에이전트는 구조화된 결과물과 제약 조건 및 알 수 없는 내용을 받습니다. 동일한 워크플로우는 CLI 명령어로도 사용 가능하므로, 에이전트 없이 스크립트를 작성할 수도 있습니다.
README의 목표 테이블에 따라 분석하는 내용:
| 목표 | REA가 반환하는 것 | 필요 사항 |
|---|---|---|
| 네이티브 바이너리 (Native binary) | 의사 코드(Pseudocode), 어셈블리(assembly), 문자열(string), 심볼(symbol), 교차 참조(cross-reference) | Hopper, Ghidra 또는 IDA |
| ... |
REA가 일부 래퍼(wrapper)와 차별화되는 디자인 결정은 증거 모델입니다. 모든 결과물은 출처를 명시합니다: 파일의 다이제스트(digest), 바이트 범위(byte range), 캡처 내 JSON 포인터, 그리고 분석이 입증하지 못한 내용에 대한 명확한 목록입니다. 프로젝트는 이 점을 문서에서 반복적으로 강조하며, 분석은 당신의 장치에서 작동하지만, README의 FAQ에는 에이전트 모델 제공업체가 여전히 해당 제공업체의 데이터 정책 하에 도구 결과물을 받는다고 명시되어 있습니다.
REA 설치 방법
Node.js 22.19 이상(23 및 25는 지원하지 않음)과 npm이 필요합니다. 다음 단일 명령어로 MCP 서버를 등록하고 에이전트에 맞는 스킬 가이드를 설치할 수 있습니다:
npx rea-agents setup
설치 시 기존 값을 백업하고 승인한 후에만 작성합니다. 설치 가이드를 통해 Claude Code, Claude Desktop, Codex, Cursor, Gemini CLI, Windsurf, Devin, OpenCode, Antigravity, GitHub Copilot CLI, VS Code, Grok Build, Hermes 등과 호환됩니다. --client 플래그로 선택할 수 있습니다. 이후 에이전트를 재시작하고 다음과 같은 작업을 요청합니다:
Understand how search works in the Notes app, show me the evidence,
and build a similar feature for my project.
글로벌 CLI의 경우:
npm install --global rea-agents
ea doctor --json
추가 엔진 없이 JavaScript, .NET, 웹사이트 및 캡처에 대한 정적 분석(static analysis), 웹사이트 분석이 가능합니다. 심층적인 네이티브 분석을 위해서는 JDK 21 이상을 갖춘 Hopper, Ghidra 또는 IDA가 필요합니다. Hopper는 승인할 경우 설치할 수 있지만, 별도의 라이선스를 가진 상용 소프트웨어입니다. Windows에서 Ghidra는 실험적(experimental)으로 표시됩니다.
showcase를 통한 REA의 강점
프로젝트 자체의 케이스 스터디가 가장 직접적인 기준이 됩니다. DX-Boll 에이전트의 경우, 음성 호출부터 위치를 pan으로 변환하는 헬퍼에 이르기까지, 불완전한 의사 코드(pseudocode)를 C로 변환하고 원본 3,205 x86 테스트 케이스와 통과하여 재구축하는 작업을 수행했습니다. Notion의 경우, 렌더러를 통해 클립보드 API를 호출하고 preload 및 IPC를 거쳐 Electron의 메인 프로세스에 접근했습니다. 세 번째 사례는 1990년대 PC-98 게임의 16비트 명령에서 포탄 궤적 각도를 복구한 경우입니다.
모든 패턴은 단일 기능이나 단일 데이터 경로에 대한 범위가 좁은 질문이며, 답변을 검증하는 방법이 있습니다. 이것이 현재 에이전트 기반 리버스 엔지니어링(reverse engineering)이 작동하는 지점입니다. “이 모든 앱을 재구축하기” 데모는 비디오에서 보기 좋고 목표와 유사한 무언가를 생성하지만, REA를 단순 Mac 앱의 일반 에이전트에 테스트했던 초기 리뷰에서는 좁은 간격과 느린 REA 실행 속도가 발견되었습니다. 가치는 질문이 구체적이고 목표가 복잡할 때 나타납니다.
API 작업에 대한 REA: 캡처에서 테스트된 스펙으로
이 부분은 API를 기반으로 작업을 수행하는 모든 사람과 관련 있습니다. REA의 inspect_web_network_capture 도구를 사용하여 HAR 파일(또는 Linux에서 네이티브 mitmproxy 캡처)을 오프라인으로 읽습니다. 이 도구는 기록된 URL을 절대로 다시 가져오지 않습니다. 모든 항목을 검사하며, 요청 및 응답 본문과 함께 다이제스트를 보존하고, 권한 부여 헤더(authorization header), 쿠키(cookie), 그리고 URL에서 자격 증명(credential)을 구조적 증거로부터 분리합니다.
그런 다음 API 팀이 즉시 알 수 있는 작업을 수행합니다. 저장된 증거를 inspect_analysis_view의 api-surface 뷰로 전송합니다. REA는 메서드, 오리진, 그리고 추론된 경로 템플릿(path template)에 따라 모든 요청을 그룹화하며, 숫자 ID는 {numeric}으로, UUID는 {uuid}로, 긴 16진수 문자열은 {hex}로, 날짜는 {iso-date}로 변환합니다. 각 그룹은 출처 레코드를 참조하고 혼합된 상태(status) 또는 콘텐츠 유형을 알려줍니다. 캡처 가이드에 주의하세요. 이 뷰는 스키마나 핸들러와 관련된 것이 아닙니다. 이는 추론된 인벤토리(inventory)이며 사양(spec)이 아닙니다.
이 인벤토리는 API 리버스 엔지니어링 워크플로우의 시작점이며, Apidog이 이를 완성합니다:
- Chrome DevTools에서 단일 기록(บันทึกครั้งเดียว) 기능을 사용하여 흐름을 반복하고 모든 요청을 HAR 형식과 내용으로 저장합니다. 이때 유효한 토큰이 포함되어 있으므로 테스트 계정을 사용해야 합니다.
- 에이전트에게 매핑 작업 지시를 내립니다. 에이전트가 HAR 파일에 대해 REA를 실행하고 API 표면(API surface)을 요약하도록 요청합니다. 그러면 엔드포인트 목록, ID 형식, 오류가 발생한 호출과 원본 레코드까지 추적할 수 있는 포인터가 제공됩니다.
- 기존 HAR 파일을 Apidog에 가져오기 Apidog은 캡처된 요청을 엔드포인트로 변환하고, 해당 엔드포인트별 기본 테스트 케이스 생성 옵션을 제공하며, 가져올 때 정적 에셋(static asset)을 제거합니다. HAR 파일 가져오기 가이드에서 정리 방법을 설명합니다.
- 추론된 템플릿을 실제 경로 매개변수로 변경 REA가 제공하는
{numeric}및{uuid}와 같은 플레이스홀더는 Apidog의 엔드포인트 정의에서 파라미터화해야 할 세그먼트를 알려줍니다. - Mock 및 테스트 수행 Apidog의 스마트 목(smart mock) 기능을 켜서 클라이언트 코드가 실제 API에 접근하기 전에 새로 생성된 API와 함께 실행되도록 합니다. 그런 다음 캡처된 응답 형식과 함께 어설션(assertion)을 작성하고, 이를 Apidog CLI에서 CI 환경으로 실행합니다.
역할 분담이 명확합니다. REA는 증거를 읽고 설명하는 데 능숙하며, Apidog은 엔드포인트가 문서화되고 목킹 및 테스트가 완료되어 팀원들이 공유할 수 있는 계약(contract)이 되는 곳입니다. 둘 다 서로의 역할을 대체하지 않습니다.
사용 전 주의사항
릴리스 속도는 양날의 검입니다. 9일 만에 마이너 버전 7개를 릴리스했고, 프로젝트의 always-bump-minor 정책은 마이너 업데이트가 호환성을 깨뜨릴 수 있음을 의미합니다. 6.2 마이그레이션 가이드는 모든 MCP 결과물의 형식을 변경했습니다. REA의 JSON 출력을 사용하여 스크립트를 작성할 경우, 버전을 고정(pin)하고 업데이트 전에 변경 로그(changelog)를 읽어야 합니다.
이것은 샌드박스가 아니라 커넥터입니다. 프로젝트의 보안 정책에 따르면 로컬 프로바이더 브릿지(local provider bridge)는 샌드박스가 아니며, 신뢰할 수 없는 바이너리를 열 경우 사용자의 권한으로 파싱을 실행합니다. 따라서 에이전트의 모든 도구 호출([agent tool call])과 마찬가지로, 의심스러운 목표를 분리된 환경에서 분석해야 합니다.[에이전트 샌드박스란 무엇인가?(What is CubeSandbox for AI Agents?)]
플랫폼 제한 사항이 매우 구체적입니다. mitmproxy의 네이티브 디코딩을 위해서는 Linux 환경의 정확한 mitmdump 12.2.3 버전이 필요하며, 사용자가 직접 준비해야 합니다. 또한, 펌웨어 경로, EVM 및 WASM은 Windows용 빌드가 없는 Linux x64 Hopper를 사용합니다.
법적 책임은 여전히 사용자에게 있습니다. README는 REA가 합법적인 연구, 분석 및 재구축 목적으로만 제한됨을 명시하며, 사용자가 라이선스에 대한 책임을 진다는 점을 밝힙니다. 경쟁사 기능 복제(copying competitor features)는 이 도구가 나오기 전부터 존재했던 법적 문제입니다. 또한 프로젝트는 토큰이나 코인 발행 이력이 없음을 선언해야 하며, 해당 이름의 코인은 관련이 없습니다.
아직 초기 단계입니다. 작성하는 동안 100명 이상의 기여자가 있었고, 현재 170개 이상의 이슈와 풀 리퀘스트가 열려 있습니다. 문서는 상세하지만, 소개된 경로를 벗어난 부분에서는 아직 매끄럽지 않은 모서리(rough edges)가 있을 수 있음을 예상해야 합니다.
자주 묻는 질문 (FAQ)
REA는 무료인가요? 네, 무료입니다. 코드는 MIT 라이선스를 사용하며 npm 패키지는 무료입니다. Hopper는 네이티브 분석에 사용할 경우 유료 제품이며, Ghidra는 무료입니다.
제 앱이나 바이너리를 업로드하나요? 아니요. 분석은 로컬에서 실행됩니다. 도구의 결과물은 에이전트가 사용하는 모델로 전송되므로 해당 서비스 제공업체의 데이터 정책을 따릅니다.
Ghidra나 IDA가 있어야 시작할 수 있나요? 아닙니다. JavaScript, Electron, .NET, 웹사이트 또는 캡처 분석의 경우 필요하지 않으며, 엔진이 필요한 것은 네이티브 바이너리 디컴파일만 해당합니다.
REA로 OpenAPI spec을 트래픽에서 생성할 수 있나요? 할 수 없습니다. api-surface라는 이름은 경로 템플릿과 함께 추론된 인벤토리(inventory)를 보여주며, HAR 파일을 Apidog으로 가져와 수정 가능한 엔드포인트 정의를 얻은 후 거기서 OpenAPI를 내보낼 수 있습니다.Apidog 다운로드하여 가지고 있는 캡처와 함께 테스트해 보세요.
요약
REA는 MCP 서버 뒤에 리버스 엔지니어링 엔진 패키지를 배치하고, 이 엔진이 반환하는 증거 문서를 활용하여 인기를 얻었습니다. 이는 범위가 명확한 질문(예: 특정 기능은 어떻게 작동하는지, 어떤 IPC 채널이 메시지를 전달하는지, 또는 애플리케이션의 트래픽 패턴은 어떠한지)에 유용합니다. 데모에서 모든 것을 재구축했다고 간주하는 것은 단지 데모일 뿐입니다.
API 팀에게 실질적인 성공 경로는 REA를 사용하여 에이전트가 HAR 파일을 캡처하게 한 다음, 이 원본 파일을 Apidog에 가져와 인벤토리를 테스트 및 문서화할 수 있는 엔드포인트로 변경하는 것입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기