REA 작동 원리, 분석 대상별 결과와 맥·윈도·리눅스 차이
REA(Reverse Engineer Anything)는 AI 에이전트가 완성된 앱을 거꾸로 분석해 기능의 원리를 찾도록 도구를 이어 주는 오픈소스입니다. 이 글은 REA 작동 원리, 분석 대상마다 돌려주는 결과, 맥·윈도·리눅스에서 달라지는 준비물, 에이전트에게 설치를 맡기는 법과 제거 방법, 그리고 결과를 쓰기 전에 알아야 할 한계와 저작권·약관 문제를 다룹니다.

REA 작동 원리, 에이전트가 MCP로 부르는 구조
리버스 엔지니어링은 원래 다 만든 기계를 분해해 부품 구성을 확인하는 일에서 나온 말입니다. 소프트웨어에서는 이미 나온 앱을 출발점으로 개발자가 처음 써 넣은 코드와 규칙을 되짚는 일을 가리킵니다.
이 일이 어려웠던 이유는 단순합니다. 우리 손에 오는 앱은 사람이 읽는 코드가 아니라 컴퓨터만 알아보는 숫자 묶음(기계어)입니다. 열어 봐도 알 수 없고, 해석하려면 전용 분석 프로그램을 다뤄야 해서 경험 많은 보안 전문가의 몫이었습니다. REA는 그 자리에 Claude Code 같은 AI 에이전트를 앉힙니다. 여기서 AI 에이전트는 대화만 하는 챗봇과 달리 내 컴퓨터에서 파일을 열고 명령을 실행하며 일을 끝까지 처리하는 AI입니다.
REA 공식 README에 그려진 흐름을 순서대로 풀면 이렇습니다.
- 사용자 요청: 원하는 기능이 있는 앱을 골라 에이전트에게 "이 기능이 어떻게 동작하는지 알아내고 비슷하게 만들어 달라"고 맡깁니다.
- MCP로 REA 호출: 에이전트가 MCP(AI가 바깥 프로그램을 자기 도구처럼 쓰게 이어 주는 표준 연결 방식)로 REA를 부릅니다.
- 대상에 맞는 분석기 사용: 설치형 프로그램이면 Hopper·
Ghidra· IDA 같은 분석기를, 웹사이트면 크롬 계열 브라우저를 씁니다. 분석은 내 컴퓨터 안에서 돌아갑니다. - 결과 돌려주기: 찾은 코드, 그 결론의 근거가 된 위치(참조), 아직 확인하지 못한 부분을 함께 넘깁니다.
- 구현과 시험 반복: 에이전트가 결과로 코드를 짜서 돌려 보고, 기대와 다르면 REA에 다시 묻습니다. 분석·구현·시험을 몇 바퀴 돌며 원래 동작에 가까워집니다.
눈여겨볼 곳은 4번의 "확인하지 못한 부분"입니다. 짐작과 확인된 사실을 섞지 않고 모르는 것은 따로 표시해 둡니다. REA 안내 문서도 결론마다 근거와 한계를 함께 돌려준다는 점을 내세웁니다.
새로운 것은 분석기가 아니라 묶는 방식
REA가 쓰는 분석기는 대부분 오래된 도구입니다.
- Ghidra: 미국 국가안보국(NSA)이 내부에서 쓰던 분석 도구입니다. 2017년 위키리크스 폭로로 존재가 알려졌고, 2019년 무료 오픈소스로 공개됐습니다.
- IDA: 1991년에 처음 나온 분석기로, 지금은 Hex-Rays가 만드는 상용 도구입니다.
- Hopper: 맥과 리눅스용 상용 분석기입니다. 무료 데모가 있고 정식 라이선스는 유료입니다.
예전에는 이런 분석기를 하나씩 설치하고 사용법을 익힌 다음, 어디부터 뜯어볼지 사람이 정했습니다. REA는 분석기를 에이전트가 쓸 수 있게 MCP로 묶고, 결과를 근거와 함께 정리해 넘기는 일까지 합니다. 사람은 원하는 기능을 말로 설명하면 됩니다.
REA 분석 대상별로 돌려주는 결과
README의 분석 대상 표에서 자주 쓰일 만한 것을 추리면 이렇습니다. 대상마다 필요한 도구가 다릅니다.
| 분석 대상 | 돌려주는 결과 | 필요한 것 |
|---|---|---|
| 설치형 프로그램(네이티브 실행 파일) | 의사 코드, 어셈블리, 문자열, 함수 호출과 참조 | Hopper, Ghidra, IDA 중 하나 |
| 자바스크립트·일렉트론 앱(노션 같은 데스크톱 앱) | 모듈, 불러오기 관계, 화면과 본체 사이 통신(IPC) | Node.js와 npm |
| 웹사이트 | 페이지 구조, 스크립트, 네트워크 관찰, 요청한 화면 캡처 | 크롬 계열 브라우저 |
| .NET 프로그램 | 메타데이터, 중간 언어(CIL) 명령, 의존 관계 | 추가 도구 없음(정적 분석만) |
| 안드로이드 앱(APK) | 매니페스트, 클래스, 디컴파일한 메서드 | JADX와 JDK |
| SQLite 데이터베이스 | 테이블, 열, 인덱스, 일부 행 | Node.js 24.15 이상 또는 26 이상 |
| 저장한 네트워크 기록(HAR) | 요청·응답과 노출된 데이터 | HAR 파일 |
의사 코드는 기계어를 사람이 읽을 수 있게 C 언어 비슷한 모양으로 되살린 코드입니다. 원본 소스 코드 그대로가 아니라 분석기가 추정해 복원한 것이라 틀린 부분이 섞일 수 있습니다.
자바스크립트 앱과 .NET 프로그램은 파일을 읽기만 하고 앱을 실행하지 않습니다. 반면 웹사이트 관찰이나 실행 과정 기록처럼 앱을 직접 돌리는 분석은 내 사용자 권한으로 대상을 실행하므로, 파일이나 계정 상태가 바뀔 수 있습니다.
공개 사례로 보는 쓰임새
REA 사례 페이지에는 결과를 검증할 수 있는 사례가 올라와 있습니다.
- 1996년 게임 DX-Ball: 효과음이 공의 위치에 따라 좌우로 나뉘는 계산을 찾아 C 코드로 다시 썼고, 원본과 3,205가지 경우를 비교해 같은 결과를 냈습니다.
- 노션 데스크톱 앱: 복사·붙여넣기 기능이 화면 쪽에서 앱 본체로 넘어가는 경로를 따라갔습니다.
- PC-98용 고전 게임: 16비트 명령에서 총알이 고리 모양으로 퍼지는 각도 계산을 찾아 C++로 다시 만들었습니다.
REA 설치 환경별 차이, 맥·윈도·리눅스
공통 조건은 Node.js와 npm입니다. Node.js는 22.x라면 22.19 이상, 24.x라면 24.11 이상, 또는 26 이상이어야 합니다. 23, 25 같은 홀수 버전과 시험판은 지원하지 않습니다. 설치 명령은 운영체제와 상관없이 같습니다.
npx rea-agents setup
달라지는 것은 설치형 프로그램을 분석할 때 쓰는 분석기입니다.
맥
- Hopper: 설치 중에 승인하면 공식 설치 파일을 받아
~/Applications에 넣어 줍니다. macOS 12 이상이 대상입니다. 처음 실행하면 데모 모드와 라이선스 등록 중 하나를 골라야 분석이 이어집니다. - Ghidra: 미리 설치돼 있어야 합니다. 12.1.x 버전과 JDK 21 이상이 필요합니다. 애플 실리콘 맥에서 인텔용 JDK를 로제타로 돌리면 점검에서 실패합니다.
리눅스
- Hopper 자동 설치는 Ubuntu 24.04 이상, Fedora 41 이상, 64비트 Arch 계열 등에서 됩니다.
- Ghidra, JADX, 자바스크립트 분석을 쓰려면
ps명령을 제공하는 procps(배포판에 따라 procps-ng) 패키지가 있어야 합니다. 없으면 분석이 시작 전에 거부됩니다.
윈도
- Hopper는 윈도용이 없습니다.
- Ghidra 연결은 시험(experimental) 단계입니다. Windows 10 이상 64비트, NTFS 로컬 디스크, Ghidra 12.1.x와 JDK 21 이상이 조건입니다.
- 자바스크립트·일렉트론 앱, 웹사이트, .NET 분석은 분석기 없이 쓸 수 있어 윈도에서 시작하기 쉬운 대상입니다.
Claude Desktop에 연결할 계획이라면 설정을 승인하기 전에 앱을 완전히 종료합니다. 켜져 있는 앱이 등록 내용을 덮어쓸 수 있습니다.
에이전트에게 REA 설치를 맡기는 방법
터미널 명령 대신 AI 에이전트에게 설치를 맡길 수도 있습니다. 클로드 코드를 예로 들면 저장소 주소를 붙여 넣고 클로드 코드에 맞게 설치해 달라고 입력하면 됩니다. 이때 공식 주소를 정확히 주는 것이 중요합니다. REA 저장소는 비슷한 이름의 저장소나 README를 베낀 곳이 공식 배포처가 아니라고 경고합니다. 공식 배포처는 github.com/morluto/rea, rea.tools, npm의 rea-agents 패키지입니다.
입력 예시는 이렇습니다.
https://github.com/morluto/rea 공식 저장소의 README대로 REA를 Claude Code에 설치해 줘.
설정 파일을 바꾸기 전에 어떤 경로에 무엇을 추가하는지 먼저 보여 주고,
내가 승인하면 진행해. Hopper 설치는 묻고 나서 결정할게.
- 확인: 에이전트가
npx rea-agents setup을 실행하고, 바꿀 설정 내용을 보여 준 뒤 승인을 기다립니다. - 끝나면 에이전트를 다시 시작해야 REA가 연결됩니다. Claude Code라면
/mcp로 연결 목록에 REA가 있는지 확인합니다.
설정 도구가 바로 연결해 주는 에이전트는 Claude Code, Claude Desktop, Codex, Cursor, Gemini CLI, Windsurf, VS Code, GitHub Copilot CLI 등 24가지입니다(2026년 10월 14일 나온 6.5.0 기준). 그 밖에도 로컬 MCP 서버를 지원하는 에이전트라면 수동 등록으로 쓸 수 있습니다.
한 프로젝트에서만 쓰고 싶다면
기본 설치는 에이전트 전체에 REA를 등록합니다. Claude Code라면 ~/.claude.json에 등록하고 ~/.claude/skills에 작업 안내 스킬을 깔기 때문에, Claude Code로 여는 모든 프로젝트에서 REA를 부를 수 있습니다. 특정 작업에서만 쓰려면 CLAUDE_CONFIG_DIR로 별도 프로필을 만들어 그 안에만 설치하는 방법이 안내돼 있습니다.
REA 점검·업데이트·제거 명령
REA는 업데이트가 잦습니다. 버그를 만나면 먼저 최신판으로 올리는 것이 공식 안내입니다. rea 명령은 npm install --global rea-agents로 전역 설치했을 때만 쓸 수 있고, 아니라면 명령 앞에 npx rea-agents@latest를 붙여 실행합니다.
| 하고 싶은 일 | 명령 |
|---|---|
| 설치 상태 점검(아무것도 바꾸지 않음) | rea doctor |
| 분석기 하나만 점검 | rea doctor --provider ghidra --json |
| 전역 설치본 업데이트 | rea update |
| npx로 쓰는 경우 최신 설정 다시 적용 | npx rea-agents@latest setup |
| 에이전트 등록과 스킬 제거 | rea uninstall |
| 캐시와 상태 파일까지 제거 | rea uninstall --purge-data |
제거해도 Hopper, Node.js, 분석 결과 파일, 다른 MCP 서버는 남습니다. --purge-data는 홈 폴더의 ~/.rea 아래 REA 캐시와 상태만 지웁니다.
REA 분석 결과의 한계
REA 면책 문서는 디컴파일, 재구성, AI 분석 결과가 불완전하거나 틀릴 수 있다고 밝힙니다. 결과가 정확성, 보안, 호환성, 법적 적합성을 보장하지 않는다는 뜻입니다. 중요한 결론은 근거 위치를 직접 열어 확인한 뒤 씁니다.
데이터 흐름도 따져 봐야 합니다. 분석 자체는 내 컴퓨터에서 하지만 결과는 에이전트에게 넘어가고, 그 에이전트의 모델 회사가 자기 데이터 정책에 따라 받습니다. 회사 기밀 프로그램이라면 회사 규정을 먼저 확인합니다.
출처를 알 수 없는 프로그램을 실행형 분석으로 돌릴 때는 본래 쓰는 컴퓨터가 아닌 별도 환경(가상 머신 등)을 쓰는 편이 안전합니다. 면책 문서도 신뢰할 수 없는 대상에는 그에 맞는 환경을 쓰라고 적었습니다.
덩치 큰 프로그램을 통째로 다시 만드는 도구도 아닙니다. 기능 하나씩 근거를 찾아 원리를 확인하는 방식이라, 큰 앱을 비슷하게 만들려면 여전히 시간과 손이 많이 듭니다.
REA 저작권과 약관, 하지 말아야 할 용도
REA는 MIT 라이선스 오픈소스라 무료로 쓸 수 있습니다. 하지만 도구가 무료라고 분석 대상 앱의 권리까지 생기지는 않습니다. 면책 문서는 분석 보고서나 소스 비슷한 결과물을 얻었다고 원래 프로그램이나 결과물에 대한 권리가 생기지 않는다고 분명히 적었습니다.
REA 프로젝트가 돕지 않는다고 밝힌 용도는 이렇습니다.
- DRM, 라이선스 확인, 안티치트 같은 기술적 보호 장치 우회
- 게임 핵 개발이나 온라인 서비스 조작
- 권한 없는 시스템의 인증·접근 통제 우회
- 상용 소프트웨어를 베끼거나 보호된 코드·자산을 그대로 재현하는 일
- AI 모델 회사의 이용 정책 회피, AI 계정·API 재판매
유료 기능을 돈 내지 않고 여는 것은 위의 라이선스 우회에 해당합니다. 약관 위반이고 법적 문제로 이어질 수 있습니다.
우리나라 저작권법 제101조의4는 정당한 권한으로 프로그램을 쓰는 사람이, 다른 프로그램과 호환하는 데 필요한 정보를 쉽게 얻을 수 없을 때, 그 호환에 필요한 부분에 한해 역분석을 허용합니다. 앱 이용약관이 역분석·디컴파일을 따로 금지하는 경우도 많습니다. 처음 써 본다면 내가 만든 앱이나 분석 허락을 받은 앱부터 시작합니다.
상용 분석기도 정식으로 구해야 합니다. REA는 IDA, Hopper, JEB 같은 상용 도구의 라이선스나 키를 주지 않고, 크랙 버전이나 훔친 키는 허용하지 않습니다. 체험판과 데모도 각 회사 조건을 따릅니다.
AI 역분석을 막는 보호 기술도 나왔다
AI 역분석이 쉬워지자 막는 쪽 제품도 나왔습니다. 보안 기업 탈레스(Thales)는 2026년 10월 1일 완성된 프로그램에 덧씌우는 보호 제품 Sentinel Envelope Plus를 발표했습니다. 소스 코드를 고치지 않고 실행 흐름을 뒤섞는 난독화 같은 여러 겹의 보호를 거는 방식입니다.
탈레스가 공개한 자체 시험에서는 Ghidra와 IDA를 쥔 AI 에이전트가 보호가 없는 앱에서는 약점 10개 중 8개를 찾았고, 보호를 건 앱에서는 7시간 가까이 시도해도 하나도 찾지 못했습니다. 회사가 직접 한 한 번의 통제 시험이라 독립 검증은 아닙니다.
앱을 만드는 쪽이라면 코드를 숨겨 두는 것만으로 작동 방식을 지키기 어려워졌다는 뜻입니다. 중요한 판단과 비밀 값은 앱 안이 아니라 서버 쪽에 두는 설계가 기본입니다.
자주 묻는 질문
REA는 윈도에서도 쓸 수 있나요?
쓸 수 있습니다. 자바스크립트·일렉트론 앱, 웹사이트, .NET 프로그램은 분석기 없이 바로 분석할 수 있습니다. 설치형 프로그램 분석은 Hopper가 윈도를 지원하지 않고 Ghidra 연결은 아직 시험 단계라 맥이나 리눅스보다 제약이 많습니다.
REA가 돌려주는 코드는 원본 소스 코드인가요?
아닙니다. 설치형 프로그램에서는 분석기가 기계어를 사람이 읽게 되살린 의사 코드와 어셈블리를 돌려줍니다. 추정해 복원한 것이라 틀릴 수 있어 근거 위치를 함께 확인해야 하고, 결과를 얻었다고 원본에 대한 권리가 생기지도 않습니다.
REA를 지우려면 어떻게 하나요?
rea uninstall을 실행하면 REA가 등록한 에이전트 설정과 스킬만 지웁니다. 캐시까지 지우려면 rea uninstall --purge-data를 씁니다. 전역 설치를 안 했다면 앞에 npx rea-agents@latest를 붙입니다.
REA로 유료 앱의 기능을 무료로 쓸 수 있나요?
그런 용도는 라이선스 우회에 해당합니다. REA 면책 문서가 돕지 않는 용도로 못 박아 둔 일이고, 약관과 법에 어긋날 수 있습니다. 원리를 배워 내 코드로 새로 만드는 것과 남의 유료 기능을 여는 것은 다른 일입니다. 내가 만든 앱이나 허락받은 앱부터 분석합니다.
이 글의 본문은 아래 원본 유튜브 영상의 내용을 바탕으로 쓸모연구소가 다시 정리해 쓴 것입니다. 세부 내용과 최신 정보는 원본 영상과 공식 안내에서 확인해 주세요.
원본 영상 보러가기 ↗