REA — AI 에이전트에게 리버스 엔지니어링을 맡기는 오픈소스
앱의 기능이 어떻게 동작하는지, 소스 코드 없이 바이너리 단위까지 에이전트가 파고들어 설명해 줍니다. 10월 깃허브에서 가장 뜨거웠던 저장소입니다.

마음에 드는 앱의 기능을 보고 "이건 어떻게 만든 거지?" 싶었던 적이 있으실 겁니다. 소스 코드가 공개돼 있지 않으면 보통 거기서 멈춥니다. 바이너리를 직접 뜯어보는 리버스 엔지니어링은 전문가의 영역이었으니까요.
REA(Reverse Engineer Anything)는 그 일을 AI 에이전트에게 맡깁니다. Claude Code, Codex, Cursor 같은 코딩 에이전트에 분석 도구를 연결해서, 에이전트가 직접 앱을 들여다보고 근거와 함께 설명해 줍니다. 필요하면 같은 기능을 내 프로젝트에 만들어 주기까지 합니다.
10월 둘째 주 깃허브 트렌딩 1위에 오른 뒤 한 달도 안 돼 스타가 40만 개를 넘었습니다. 이번 주에 소개할 저장소입니다.
무엇을 하는 도구인가
한 줄로 줄이면 리버스 엔지니어링용 MCP 서버입니다. MCP 는 AI 에이전트가 외부 도구를 불러 쓰는 표준 방식인데, REA 를 등록하면 에이전트가 디스어셈블러나 디컴파일러 같은 분석 도구를 직접 다룰 수 있게 됩니다.
글 맨 위의 화면이 실제로 동작하는 모습입니다. REA 가 디스어셈블러인 Hopper 를 띄우고,
macOS 의 /usr/bin/true 바이너리를 분석하고 있습니다. 섹션 구조와 진입점의
어셈블리가 보이고, 아래 콘솔에는 분석 단계(11단계)가 차례로 찍힙니다.
사람이 이 화면을 하나하나 읽는 대신, 에이전트가 이 결과를 받아 해석합니다.
어떻게 동작하나
흐름은 네 단계입니다.
- 질문 — 에이전트에게 분석할 대상(앱, 바이너리, 웹사이트)과 궁금한 점을 말합니다.
- 분석과 추적 — 에이전트가 MCP 로 REA 를 불러 대상을 살펴보고 관련 코드를 따라갑니다.
- 근거 확인 — REA 는 찾은 코드, 참조 관계, 그리고 아직 모르는 부분까지 돌려줍니다.
- 활용 — 에이전트가 그 근거로 동작을 설명하거나, 비슷한 기능을 구현하고 테스트합니다.
눈여겨볼 점은 3번입니다. 결론만 내놓는 게 아니라 그 결론의 근거와 한계를 함께 돌려주기 때문에, 에이전트가 지어내는 대신 확인된 사실 위에서 움직입니다. 분석은 모두 내 컴퓨터에서 이뤄집니다.
무엇을 분석할 수 있나
범위가 상당히 넓습니다. 대표적인 것만 추리면 이렇습니다.
| 대상 | 돌려주는 것 |
|---|---|
| 네이티브 바이너리 | 의사 코드, 어셈블리, 문자열, 심볼, 호출 관계 (Hopper · Ghidra · IDA 필요) |
| JavaScript · Electron 앱 | 모듈, import, 소스맵, IPC 경로 |
| .NET 어셈블리 | 메타데이터, IL 명령어 |
| 안드로이드 APK | 매니페스트, 클래스, 디컴파일된 메서드 (JADX 필요) |
| 웹사이트 | 페이지 구조, 스크립트, 네트워크 요청 |
| 게임 리소스 | Unity IL2CPP 메타데이터, Godot PCK 아카이브 |
이 밖에도 Go·Rust 바이너리의 의존성 정보, 펌웨어, 패킷 캡처, SQLite 데이터베이스 등 30가지가 넘는 대상을 다룹니다. JavaScript 와 .NET 분석은 별도 도구 없이도 바로 됩니다.
실제로 해낸 일들
공식 사이트(rea.tools)에는 REA 로 실제 분석한 사례가 과정과 함께 공개돼 있습니다. 모두 에이전트에게 건넨 질문 한 줄에서 시작합니다.
안드로이드 — 인증 앱의 6자리 코드는 어떻게 만들어지나
2단계 인증 앱 Aegis 의 공식 APK 를 분석한 사례입니다. 질문은 이랬습니다.
REA 로 aegis-v3.4.3.apk 를 살펴보고, 6자리 로그인 코드가 어떻게 만들어지는지, 왜 30초마다 바뀌는지 설명한 다음, 시간을 바꿔 볼 수 있는 작은 데모를 만들어 줘.
REA 는 3,077개 클래스 중에서 Totp 로 검색해 후보를 세 개로 좁히고, 화면 표시와
복사 버튼이 실제로 부르는 메서드를 따라가 계산 코드를 찾아냈습니다. 결론은
"시간을 30초 단위 묶음으로 나누고, 그 묶음 번호와 계정 키를 합쳐 6자리를 만든다"
였습니다. 에이전트는 이 규칙으로 시계를 움직여 볼 수 있는 브라우저 데모를 만들었고,
표준 문서(RFC 6238)의 공개 시험값과 결과가 일치하는 것을 확인했습니다.

시계를 59초에서 60초로 옮기면 30초 묶음이 바뀌면서 코드도 바뀝니다. 같은 묶음 안에서는 시간이 흘러도 코드가 그대로입니다.
CTF — 해킹 대회 문제의 답을 바이너리에서 찾기
DownUnderCTF 2023 의 입문 문제를 풀었습니다. 15KB 짜리 실행 파일이 플래그를
입력받아 Correct! 나 Incorrect! 를 출력하는 문제입니다. 함수 이름이 모두
지워진 상태였지만, REA 는 화면에 뜨는 What is the flag? 문자열에서 출발해
검사 함수를 찾아냈습니다.
검사 방식은 36글자를 6×6 칸에 놓고, 26개의 마스크로 칸을 골라 더한 값이 정해진
숫자와 같은지 보는 것이었습니다. 에이전트가 이를 방정식 26개로 옮겨 파이썬으로
풀었고, 그 답을 원래 프로그램에 넣어 Correct! 가 나오는 것까지 확인했습니다.
마스크 하나를 풀어 보면 이렇습니다. 일곱 번째 검사는 딱 한 칸만 골라 더하기 때문에, 그 칸의 글자가 바로 드러납니다.
Electron — Notion 은 복사한 내용을 어떻게 넘기나
Notion 데스크톱 앱(7.6.1)의 패키지된 JavaScript 를 분석했습니다. 화면에서 부르는
clipboard.write 가 preload 스크립트, IPC 채널(notion:clipboard:write), 메인
프로세스를 거쳐 시스템 클립보드에 닿는 네 단계 경로를 찾았습니다. 압축된 코드
안에서도 위치를 줄·칸 단위로 짚어 주기 때문에, 에이전트가 바로 그 자리를 열어
읽을 수 있었습니다.

고전 게임 — 30년 전 코드를 되살리기
DX-Ball (1996) — 벽돌깨기 게임에서 공의 위치에 따라 효과음을 좌우로 나누는 계산을 C 코드로 복원했습니다. 원본과 3,205개 경우를 비교해 모두 일치했고, 컴파일하면 원본 함수의 63바이트가 그대로 나옵니다.
동방 4편 (PC-98) — 일본 PC-98 게임에서 탄막이 플레이어를 향해 고리 모양으로 퍼지는 각도 계산을 16비트 명령어에서 복원했습니다.
AI 학습 환경 만들기
분석이 아니라 재현에 쓰는 사례도 있습니다. 시험용 웹 앱을 쓰는 과정을 녹화하면, REA 가 그 요청과 응답을 AI 에이전트가 부를 수 있는 도구로 바꿔 독립된 연습 환경으로 내보냅니다. 원래 앱 없이도 에이전트가 "폴더 만들기", "이슈 찾기" 같은 작업을 연습할 수 있어서, 강화학습(RL) 훈련이나 에이전트 성능 평가에 씁니다. 녹화로 결과가 확인된 동작만 지원하기 때문에 환경이 엉뚱하게 반응하지 않습니다.

커뮤니티 — "베끼지 않고" 기능을 다시 만드는 법
사용자들 사이에서는 에이전트 여러 개에 역할을 나누는 방식이 공유되고 있습니다. 한 에이전트가 REA 로 기능을 조사하고, 다음 에이전트가 그 결과를 동작만 적은 명세서로 옮깁니다. 이때 원본의 코드나 내부 이름, 파일 경로는 일부러 빼고 적습니다. 구현 담당 에이전트는 그 명세서만 보고 새로 만들고, 마지막 에이전트가 원본과 비교해 일치율과 차이를 보고합니다. 원본 코드를 옮겨 오지 않고 동작만 참고하는, 이른바 클린룸 방식을 에이전트로 흉내 낸 것입니다. 이 경우에도 분석 대상은 내가 소유했거나 권한이 있는 소프트웨어여야 합니다.
써 보기
Node.js 와 npm 이 깔려 있다면 한 줄이면 됩니다.
npx rea-agents setup
쓰고 있는 에이전트를 고르고, 바뀔 설정을 확인한 뒤 승인하면 끝입니다. 기존 설정은 백업해 둡니다. 에이전트를 재시작한 뒤 이렇게 물어보면 됩니다.
메모 앱의 검색이 어떻게 동작하는지 알아보고, 근거를 보여 준 다음
내 프로젝트에 비슷한 기능을 만들어 줘.
에이전트 없이 터미널에서 바로 쓸 수도 있습니다. Electron 앱 폴더를 분석하는 예입니다.
npx -y rea-agents@latest analyze-javascript-application "D:/apps/example" --json
업데이트가 매우 잦으니(10월 25일 기준 6.8.0) 문제가 생기면 먼저 최신 버전으로 올려 보시는 게 좋습니다.
쓰기 전에 알아 둘 것
- 합법적인 범위에서만 — 공식 안내도 연구, 교육, 호환성 확보, 소프트웨어 보존, 그리고 내가 소유했거나 분석 권한이 있는 소프트웨어에 쓰라고 못박고 있습니다. REA 가 있다고 해서 남의 소프트웨어를 마음대로 뜯어봐도 되는 것은 아닙니다. 라이선스와 지식재산권은 그대로 적용됩니다.
- 유료 분석 도구는 따로 — IDA Pro, Hopper, JEB 같은 상용 도구를 연결하려면 각 도구의 정식 라이선스가 필요합니다. REA 가 대신 제공하지 않습니다.
- 공식 경로에서 받기 — 인기가 높아지면서 이름이 비슷한 가짜 저장소가 생기고
있습니다. 깃허브
morluto/rea, 공식 사이트 rea.tools, npm 의rea-agents패키지에서만 받으세요. - 분석 결과는 에이전트로 넘어갑니다 — 분석 자체는 내 컴퓨터에서 하지만, 그 결과는 에이전트가 쓰는 AI 모델 쪽으로 전달됩니다. 민감한 대상이라면 해당 서비스의 데이터 정책을 확인하세요.
정리
REA 는 "이 기능은 어떻게 만들었을까"라는 질문을 전문 지식 없이도 끝까지 따라가 볼 수 있게 해 줍니다. 결론과 함께 근거와 모르는 부분을 같이 보여 준다는 점에서, 에이전트에게 맡겨도 믿고 확인할 수 있는 구조입니다. 리버스 엔지니어링을 배워 보고 싶었던 분께도 좋은 출발점이 될 것 같습니다.
- 저장소: github.com/morluto/rea
- 공식 사이트: rea.tools
- 사례 모음: rea.tools/showcase — Aegis · CTF · Notion · DX-Ball · 동방 4편 · RL 환경
- 라이선스: MIT