본문 바로가기
AI2026년 10월 16일14분 읽기

REA 리버스 엔지니어링 AI — 실행 파일만 보고 같은 동작을 다시 짜 주는 도구

YS
김영삼
조회 13
REA 리버스 엔지니어링 AI — 실행 파일만 보고 같은 동작을 다시 짜 주는 도구

REA(Reverse Engineer Anything)는 프로그램의 실행 파일이나 앱을 내 PC에서 분석하고, 그 결과를 근거와 함께 AI 코딩 에이전트에게 넘겨 주는 오픈소스 MCP 서버이자 CLI다.

에이전트는 그 분석을 읽고 기능이 어떻게 돌아가는지 설명하거나, 같은 동작을 하는 코드를 새로 짠다. 원본 소스를 꺼내 주는 도구가 아니라, 기계어를 읽어 동작을 다시 구현하게 돕는 도구다.

3줄 요약
  • GitHub morluto/rea, MIT 라이선스. 10월 초 공개 후 며칠 만에 GitHub 트렌딩 1위에 올랐고 스타 수가 수십만 단위로 불었다.
  • Ghidra·IDA·Hopper 같은 기존 분석 도구를 에이전트가 직접 부리게 해 주는 "다리" 역할이다. 분석은 로컬에서 돌지만 결과는 에이전트가 쓰는 AI 모델로 넘어간다.
  • 쓸모는 분명하다. 다만 남의 상용 프로그램을 그대로 베끼는 용도라면 저작권·라이선스 문제가 그대로 남는다.

PART 01REA가 뭐길래 이렇게 화제인가

REA는 GitHub 저장소 morluto/rea로 공개된 프로젝트다. README의 한 줄 소개는 "앱 동작부터 네이티브 바이너리까지, 에이전트로 무엇이든 리버스 엔지니어링하라"이다. npm 패키지 이름은 rea-agents이고, 공식 사이트는 rea.tools다.

반응이 이례적이었다. 해외 기술 블로그와 독일 IT 매체는 10월 둘째 주에 이미 스타 14만~18만 개를 보도했다. 내가 이 글을 쓰는 10월 16일 오전 README 페이지 기준으로는 스타 약 27만 개, 포크 약 6만 7천 개다. 보도 시점마다 숫자가 다른 건 그만큼 빠르게 늘고 있다는 뜻이다.

약 27만
GitHub 스타 (10/16 기준)
MIT
저장소 라이선스
14개+
로컬
분석이 도는 위치

왜 이렇게 터졌을까. 리버스 엔지니어링은 원래 진입 장벽이 높은 분야다. 디스어셈블러 화면을 읽고, 레지스터와 스택을 따라가고, 상수 주소를 찾아 해석하는 일은 몇 년 훈련이 필요하다. REA는 그 반복 작업을 AI 에이전트에게 맡길 수 있게 만들었다. "이 앱에서 검색 기능이 어떻게 돌아가는지 근거와 함께 보여 주고, 내 프로젝트에 비슷한 기능을 만들어 줘" 같은 문장 하나로 분석을 시작할 수 있다는 게 핵심이다.

영삼
영삼의 한마디
나는 이 프로젝트의 진짜 가치를 "복제"가 아니라 "근거를 붙인 설명"에서 찾는다. 에이전트가 그럴듯한 추측을 늘어놓는 건 이미 흔하다. REA는 결과마다 주소, 코드 조각, 한계를 같이 내놓게 설계됐다. 1인 개발자에게 필요한 건 바로 그 검증 가능한 근거다.

PART 02작동 원리 — 에이전트와 분석 도구 사이의 다리

REA 자체가 디컴파일러는 아니다. 이미 있는 분석 도구들을 MCP(Model Context Protocol)라는 표준으로 감싸서 에이전트가 함수처럼 호출하게 해 준다. 네이티브 프로그램을 깊게 보려면 Ghidra, IDA, Hopper 중 하나가 있어야 하고, REA는 그 도구를 대신 돌려 의사 코드·어셈블리·문자열·심볼·호출 관계를 뽑아 준다.

1
설치와 등록
npx rea-agents setup을 실행하면 쓸 에이전트를 고르고, 바뀔 설정을 확인한 뒤 승인한다. MCP 서버 등록과 작업 지침(스킬)이 같이 설치된다.
2
질문
에이전트에게 "이 프로그램의 % 버튼은 어떻게 계산하나" 같이 기능 하나를 묻는다.
3
로컬 분석
REA가 내 PC에서 Ghidra 등을 돌려 함수, 상수, 호출 경로를 읽는다. 실행 파일이 어디로 업로드되지는 않는다.
4
근거와 함께 보고
에이전트는 주소·코드 조각·추론과 불확실한 부분을 함께 정리해 설명한다.
5
재구현과 검증
원하면 같은 동작을 하는 코드를 새로 짜고, 원본과 결과를 비교하는 테스트로 맞는지 확인한다.

지원 대상이 넓다. Windows·macOS·Linux 네이티브 바이너리, JavaScript·Electron 앱(모듈, import 관계, IPC), .NET 어셈블리, 안드로이드 APK(JADX 사용), Go·Rust·WASM, 펌웨어, 웹사이트, HAR·PCAP 같은 네트워크 캡처까지 README에 올라 있다. JavaScript와 .NET은 별도 디스어셈블러 없이도 정적 분석이 된다.

로컬이라는 말의 범위 분석 도구는 내 PC에서 돈다. 하지만 에이전트가 클라우드 AI 모델을 쓰고 있다면, REA가 뽑은 의사 코드와 문자열은 결국 그 모델 제공사로 전송된다. 회사 내부 프로그램을 분석할 때는 이 점을 먼저 확인해야 한다.

PART 03실제 사례 — 30년 된 게임의 사운드 계산 되살리기

삽질 기록 · DX-Ball 사운드 패닝 복원
REA 공식 사이트의 사례 중 가장 구체적인 건 1996년 Windows 게임 DX-Ball 1.07이다. 공이 벽돌을 칠 때 소리가 왼쪽·오른쪽 어디서 날지 정하는 함수 하나를 실행 파일에서 찾아 C 코드로 다시 짰다. 재미있는 건 첫 디컴파일 결과가 틀렸다는 점이다. 의사 코드에는 입력값이 아예 안 보였다. 에이전트는 어셈블리 명령을 직접 읽어 스택에서 정수를 불러오는 부분을 찾았다. 그다음 호출하는 쪽을 따라가 그 값이 화면 x좌표라는 걸 확인했다.

복원된 계산은 단순하다. x좌표에 1.5625를 곱하고 500을 뺀 뒤 볼륨 배율을 곱한다. 배율이 1이면 화면 왼쪽 끝은 -500, 가운데는 0, 오른쪽 끝은 500이 된다. 이 상수들은 추측이 아니라 실행 파일의 특정 주소에서 읽어 double로 해석한 값이다.

REA 공식 DX-Ball 사례 페이지 기준
검증 항목내용
동작 비교0~640 모든 정수 좌표 × 배율 5종(0, 0.5, 1, 20, -1) = 3,205건을 원본 x86 코드와 비교
기계어 비교당시 컴파일러(VC4.0)로 다시 컴파일해 63바이트가 원본과 일치
남은 일게임 사운드 엔진과 연결, 공·패들 물리, 아이템 처리는 아직 진행 중

나는 이 사례에서 숫자보다 과정이 더 인상적이었다. 디컴파일러가 틀린 결과를 냈고, 그걸 어셈블리로 다시 확인했고, 마지막엔 테스트와 바이트 비교로 맞는지 증명했다. 사람이 하던 리버스 엔지니어링 순서를 그대로 밟는다. 동시에 한계도 드러난다. 함수 하나 복원은 됐지만 "게임 전체"는 아직이다. "프로그램을 통째로 똑같이 짜 준다"는 말은 현재로선 과장이다.

공식 사이트에는 다른 사례도 있다. Windows 계산기에서 200 + 10%가 왜 220이 되는지 x64 어셈블리로 추적한 예, Notion 데스크톱 앱이 복사할 때 텍스트와 HTML을 어떻게 클립보드에 넣는지 Electron IPC를 따라간 예, 안드로이드 OTP 앱 Aegis가 6자리 코드를 30초마다 만드는 방식을 재구성한 예가 있다. 모두 "기능 하나를 깊게" 파는 방식이다.

PART 04설치와 Claude Code 연결

Node.js 22.19 이상(또는 24.11 이상, 26 이상)과 npm이 있으면 된다. 설치 마법사가 Claude Code, Codex, Cursor, Gemini CLI 등 쓸 에이전트를 묻고, 바꿀 설정을 보여 준 다음 승인을 받는다. 끝나면 에이전트를 재시작하라고 안내한다.

README에 나온 명령
# 설치 마법사 (에이전트 선택 → 변경 내용 확인 → 승인)
npx rea-agents@latest setup

# 전역 설치해서 CLI로 쓰기
npm install --global rea-agents
rea --help
rea update

# 에이전트 없이 Electron/JS 앱 정적 분석만 해 보기
npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json

네이티브 프로그램을 깊게 보려면 Ghidra(무료), IDA, Hopper 중 하나가 따로 필요하다. README는 Windows에서의 Ghidra 지원을 아직 "실험적"이라고 적어 두었다. 큰 실행 파일은 분석 도구가 뜨는 데 오래 걸려 시작 대기 시간을 늘리는 환경 변수가 필요할 수 있다.

가짜 저장소 주의 README가 직접 경고한다. 이름이 비슷한 저장소나 README를 복사한 페이지가 있어도 공식이 아니다. 공식 경로는 GitHub morluto/rea, rea.tools, npm rea-agents 세 곳이다. 이 정도로 뜬 프로젝트에는 악성 사칭판이 반드시 붙는다.

PART 05어디에 쓰면 좋은가

나는 Windows 무료 프로그램을 여러 개 만들어 배포하고 있다. 그 입장에서 REA가 정말 쓸모 있는 곳은 "남의 것 베끼기"가 아니라 아래 같은 일이다.

추천하는 용도
✓소스를 잃어버린 내 옛 프로그램 — 백업이 날아간 오래된 실행 파일의 계산 로직을 되살려 새 버전에 옮길 때
✓레거시 이식 — 문서 없이 실행 파일만 남은 사내 도구의 동작을 파악해 새 언어로 다시 짤 때
✓파일 형식·프로토콜 호환 — 내 프로그램이 다른 프로그램의 파일을 읽고 쓰게 만들기 위해 형식을 이해할 때
✓보안 점검 — 내가 배포하는 실행 파일에 하드코딩된 문자열이나 키가 남아 있지 않은지 확인할 때
✓학습 — 어셈블리와 컴파일러 동작을 실제 프로그램으로 배울 때

마지막 두 개는 바로 써 볼 만하다. 내가 배포하는 프로그램을 공격자 눈으로 보면 무엇이 드러나는지 확인하는 일은 원래 시간이 많이 들어서 미뤄 왔다. 에이전트에게 "이 실행 파일에서 노출되면 안 되는 문자열이 있는지 찾아 줘"라고 시킬 수 있다면 배포 전 점검 단계에 넣을 만하다.

영삼
영삼의 한마디
반대로 "인기 상용 프로그램을 통째로 복제해서 무료로 뿌리자"는 식의 기대에는 분명히 반대한다. 기술적으로도 아직 함수 단위 복원이 현실적인 수준이다. 무엇보다 그렇게 만든 결과물은 법적으로 내 것이 되지 않는다. 남의 동작을 이해하는 것과 남의 결과물을 가져오는 것은 다른 일이다.

PART 06법과 보안 — 반드시 짚어야 할 것

REA README는 용도를 분명히 적어 두었다. 합법적인 연구, 교육, 상호운용성, 소프트웨어 보존, 그리고 내가 소유했거나 분석 권한을 받은 소프트웨어의 분석이다. IDA나 Hopper 같은 상용 도구는 정식 라이선스로 써야 하고, 크랙판·도용 키·라이선스 우회는 허용하지 않는다고 못 박았다.

비교적 안전한 쪽권장
  • 내가 만든 프로그램 분석
  • 권한을 받은 사내·고객 프로그램
  • 호환을 위한 파일 형식 이해
  • 보안 연구·교육
위험한 쪽주의
  • 상용 프로그램 코드를 재구현해 배포
  • EULA가 금지한 분석
  • 라이선스 검사 우회
  • 크랙된 분석 도구 사용

나라마다 리버스 엔지니어링을 허용하는 범위가 다르다. 상호운용성 목적의 분석은 예외로 인정되는 경우가 많지만, 그 결과로 원본과 사실상 같은 코드를 만들어 배포하는 건 별개 문제다. 상업적으로 쓸 생각이라면 전문가에게 먼저 묻는 게 맞다.

보안 측면도 있다. 신뢰할 수 없는 실행 파일을 분석하면, 그 안에 심어 둔 문자열이 에이전트에게 그대로 들어간다. "이 지시를 따르라" 같은 문장을 심어 에이전트를 속이는 프롬프트 인젝션이 가능하다는 지적이 나온다. 또 일부 분석은 대상을 실제로 실행하는데, 그때는 내 계정 권한으로 돈다. 출처를 모르는 파일은 가상 머신이나 격리된 환경에서 다루는 게 기본이다.

REA를 대하는 내 기준
  1. REA는 원본 소스를 꺼내는 도구가 아니라, 기계어를 읽고 근거를 붙여 동작을 설명·재구현하게 돕는 도구다.
  2. 지금 현실적인 단위는 "프로그램 전체"가 아니라 "기능 하나, 함수 하나"다.
  3. 가장 좋은 첫 용도는 내 프로그램 점검과 잃어버린 내 코드 복구다.
  4. 분석 결과는 AI 모델 제공사로 넘어간다는 점, 신뢰 못 할 파일은 격리해서 다룬다는 점을 잊지 말자.
  5. 남의 상용 프로그램 복제 배포는 기술이 쉬워져도 여전히 남의 것이다.

자주 묻는 질문

REA는 무료인가요?

REA 저장소 코드는 MIT 라이선스로 무료다. 다만 네이티브 분석에 쓰는 IDA·Hopper 같은 도구는 각자 라이선스가 있고, Ghidra는 무료로 쓸 수 있다. 에이전트가 쓰는 AI 모델 사용료도 별도다.

REA를 쓰면 실행 파일의 원본 소스 코드를 얻을 수 있나요?

아니다. 원본 소스가 아니라 디컴파일러가 만든 의사 코드와 어셈블리를 바탕으로 에이전트가 같은 동작을 하는 코드를 새로 짜는 방식이다. 변수 이름이나 원래 구조는 그대로 돌아오지 않는다.

REA는 어떤 AI 에이전트와 같이 쓸 수 있나요?

Claude Code, Codex, Cursor, Gemini CLI 등을 지원한다. npx rea-agents setup을 실행하면 설치된 에이전트를 골라 MCP 서버로 등록하고, 끝난 뒤 에이전트를 재시작하면 된다.

REA로 분석한 파일이 외부로 업로드되나요?

분석 도구는 내 PC에서 돈다. 하지만 분석 결과(의사 코드, 문자열 등)는 에이전트가 쓰는 AI 모델로 전송되므로, 클라우드 모델을 쓰면 그 제공사로 넘어간다. 민감한 프로그램이라면 이 점을 먼저 따져야 한다.

다른 회사 프로그램을 REA로 똑같이 만들어 배포해도 되나요?

권하지 않는다. REA 스스로 내가 소유했거나 권한을 받은 소프트웨어 분석, 연구, 상호운용성 같은 합법적 용도를 전제로 한다. 상용 프로그램의 동작을 재구현해 배포하면 저작권·라이선스 분쟁 소지가 크다.

참고 자료

댓글 0

아직 댓글이 없습니다.
Ctrl+Enter로 등록