REA로 가계부 앱 뜯어보니…분석 도구는 멈추고 AI가 코드를 직접 읽었다

윈도우 설치부터 블라인드 사본까지 따라 한 47분, 정답지로 채점한 결과

나무 책상 위 노트북에 터미널 화면이 켜져 있고, 위에 놓인 종이에는 Electron 앱 구조도가 그려져 있다.
AI 생성 이미지
핵심 요약 AI 요약
1
오픈소스 앱 실습:본지는 MIT 라이선스의 Actual Budget 26.10.0을 분석 대상으로 삼고, 설치 파일에 포함된 원본 소스 166개를 제거한 사본을 AI에 제공했다.
2
앱 구조 식별:REA는 화면과 백엔드를 잇는 IPC 핸들러 15개와 API 멤버 23개, 기본 데이터베이스 테이블 13개의 구조를 파악했다.
3
대형 번들 분석 실패:REA는 약 3.9MB의 핵심 자바스크립트 로직을 두 차례 시간제한 안에 분석하지 못했고, AI는 이후 비압축 코드를 직접 검색해 읽었다.
4
거래 처리 검증:AI가 파악한 거래 추가·수정·삭제의 공통 처리 경로와 저장 방식은 원본 소스와 일치했으며, 제작한 웹 앱은 테스트 5개를 통과했다.
5
47분 실습 비용:실습은 47분 동안 진행됐고 정가 기준 12.48달러가 들었으며, 결과는 REA의 구조 분석보다 배포된 코드의 가독성과 AI의 직접 탐색에 크게 의존했다.
기사 목차 펼치기 / 접기

소스 코드 한 줄 받지 않고 노션을 24분 만에 통째로 복사했다는 시연 영상이 지난 17일 유튜브에 올라왔다. 영상이 쓴 도구는 깃허브(GitHub)에서 별 30만개를 넘긴 리버스 엔지니어링 도구 REA다. 본지가 같은 도구로 오픈소스 가계부 앱 하나를 직접 뜯어봤다.

설치에서 어디가 막히는지, 분석 대상을 어떻게 준비하는지, 결과를 무엇으로 채점하는지 순서대로 적었다. 실습 환경은 윈도우와 REA 6.7.0, Node.js 24.20.0이고 확인 기준일은 10월 19일이다.

REA의 정체와 정적 분석의 실제 범위

REA는 AI 에이전트에 역분석 도구를 연결해 주는 MCP 서버이자 명령줄 도구다. 클로드 코드(Claude Code) 같은 에이전트가 REA를 부르면 REA가 대상 프로그램을 분석해 근거를 돌려주며, 라이선스는 MIT다. README를 보면 분석 대상이 넓다. 윈도우·맥 실행 파일 같은 네이티브 바이너리, 자바스크립트로 만든 Electron 데스크톱 앱, .NET 프로그램, 안드로이드 앱, 웹사이트까지 다룬다. 네이티브 바이너리는 Ghidra 같은 별도 분석 엔진이 필요하지만, 자바스크립트 앱의 정적 분석은 엔진 없이 된다.

잠깐, 정적 분석은 뭘까. 프로그램을 실행하지 않고 파일만 읽어 구조를 파악하는 방식이다. 설계도를 펼쳐 보는 일에 가깝고, 이번 실습도 이 방식만 썼다.

Node.js 버전의 덫… 22.14에서 멈춰 선 설치

REA는 공식 시스템 요구 사항에서 Node.js 22.19 이상, 24.11 이상, 또는 26 이상을 요구한다. 본지 PC의 버전은 22.14였다. 22 버전대지만 기준(22.19)에 못 미쳤다.

설치 환경 Node.js 버전 확인
Terminal
node -v
# v22.14.0 (REA 최소 요구 규격인 22.19 미달)

Node.js를 공식 설치 파일로 깔았다면, winget의 업그레이드 명령은 패키지를 찾지 못한다. 설치 명령으로 덮어써야 한다.

Node.js LTS 패키지 재설치
PowerShell
winget upgrade OpenJS.NodeJS.LTS
# 입력 조건과 일치하는 설치된 패키지를 찾을 수 없습니다.
winget install OpenJS.NodeJS.LTS

PowerShell 창을 새로 연 뒤, 버전을 다시 확인했다. 24.20.0이 깔렸고 REA도 정상 실행됐다. 중간에 나오는 prebuild-install 경고는 REA가 쓰는 하위 패키지의 유지보수 종료 안내라 실행과는 관계가 없다.

버전 확인 및 REA 바이너리 테스트
Terminal
node -v
# v24.20.0
npx -y [email protected] --version
# npm warn deprecated [email protected]: No longer maintained. …
# 6.7.0

REA는 실습 폴더에만 등록했다. 평소 쓰는 클로드 코드 설정을 건드리지 않으려는 조치다. 명령은 REA 설치 문서의 윈도우용 형식을 따랐다.

로컬 디렉터리 MCP 서버 등록
MCP Config
cd D:\rea-lab
claude mcp add --scope local rea -- cmd.exe /d /c npx -y [email protected] mcp

분석 대상 Actual Budget과 ‘블라인드 사본’ 격리

대상은 Actual Budget 26.10.0이다. MIT 라이선스로 공개된 Electron 가계부 앱이라 분석과 복제가 라이선스상 허용되고, 공개된 원본 소스를 정답지로 쓸 수 있다. 노션처럼 이용약관이 역분석을 금지하는 상용 앱은 고르지 않았다.

깃허브 릴리스의 Actual-windows-x64.exe(117MB)를 설치했다. 설치 폴더 이름은 앱 이름이 아니라 desktop-electron이었다. 첫 실행 화면에는 “Data folder unavailable”이 떴다. 예산 파일을 저장할 문서 폴더가 없어서 생긴 오류다.

Electron 패키지 탐색
PowerShell
Get-ChildItem "$env:LOCALAPPDATA\Programs" -Recurse -Filter app.asar | Select-Object FullName, Length
# …\Programs\desktop-electron\resources\app.asar 64606048 (약 61.6MB)

Electron 앱은 코드를 app.asar라는 압축 파일 하나에 담는다. 이 파일만 복사해 풀었더니 198개 파일에서 오류가 났다. C++로 만든 네이티브 모듈은 압축 파일에 들어가지 못해 옆 폴더 app.asar.unpacked에 따로 있기 때문이다. 두 폴더를 함께 복사해 합치자 파일 7790개가 나왔다.

asar 압축 해제 및 네이티브 모듈 병합
PowerShell
Copy-Item "$env:LOCALAPPDATA\Programs\desktop-electron\resources\app.asar" .
Copy-Item -Recurse "$env:LOCALAPPDATA\Programs\desktop-electron\resources\app.asar.unpacked" .
npx -y @electron/asar extract app.asar target
Copy-Item -Recurse -Force .\app.asar.unpacked\* .\target\

풀어 보니 설치 파일 안에 원본 소스가 들어 있었다. 동기화 서버와 동기화 엔진의 원본 파일 166개다. 이걸 두면 역분석이 아니라 소스 읽기가 된다. 본지는 이 파일을 지운 사본을 AI에 넘겼고, 다시 소스를 꺼낼 수 있는 원본 압축 파일도 실습 폴더에서 치웠다.

본지가 직접 돌려보니…REA는 껍데기를, AI는 두뇌를 읽었다

과제는 하나였다. 거래 내역을 입력·수정·삭제하는 기능이 어떻게 동작하고 데이터가 어디에 저장되는지 근거와 함께 설명하고, 같은 기능의 웹 앱을 만들게 했다. 클로드 코드는 웹 검색과 웹 조회를 끈 채 대화 화면 없이 실행했고, 모든 동작을 로그로 남겼다.

19일 오후 4시33분에 시작해 47분 만에 끝났다. 정가 기준 비용은 12.48달러(약 1만6600원)였다. 도구 호출 161회 중 REA 호출은 18회였다.

REA 실측 성능 대조: 해낸 것과 멈춰 선 곳
본지 실측 (윈도우 / Actual Budget 26.10.0)
도구의 성과 식별 성공
REA가 해낸 것 (인터페이스 뼈대)
• IPC 핸들러 15개 및 화면과 백엔드를 잇는 API 멤버 23개 식별
• 기본 데이터베이스의 테이블 13개, 거래 테이블 18개 열 구조 파악
• 저장소 드라이버(better-sqlite3)를 불러오는 코드 위치 신속 탐색
도구의 한계 분석 실패
REA가 못 한 것 (로직 계산의 벽)
• 핵심 로직 묶음(약 3.9MB): 300초·900초 두 번 모두 시간 초과
• 기능 추적: 자바스크립트 분석 대상은 네이티브 미지원
• 문자열·의미 추적: 검색 결과 0건 도출에 그침
[핵심 시사점] REA는 앱의 뼈대와 인터페이스 통로만 짚었을 뿐, 거대 자바스크립트 로직 앞에서는 멈춰 섰음. 실제 비즈니스 계산과 저장 로직을 파고든 주체는 비압축 코드를 검색 도구로 직접 읽어낸 LLM이었음.

시간 초과는 본지 PC만의 문제가 아니었다. 본지가 실습 전에 리눅스 환경에서 같은 파일을 30분 제한으로 돌렸을 때도 끝나지 않았다.

AI는 두 번째 시간 초과 뒤 REA를 내려놓았다.

대신 검색 도구로 함수 이름을 찾아 해당 줄로 바로 들어갔다. 핵심 로직 묶음은 압축되지 않은 채 배포돼 있었다. 함수 이름이 그대로 남았고, 원본 파일 경로를 적은 주석도 907개 붙어 있었다.

AI가 쓴 보고서는 결론마다 근거의 출처를 달았다. 파일을 직접 읽은 근거가 25건, REA 분석이 5건, 모델이 원래 알던 지식이 3건이었다. 패키지 이름을 보고 앱의 정체를 알아챘다는 사실도 보고서에 적었다.

결론은 원본 소스와 대조했다. AI는 거래의 추가·수정·삭제가 모두 transactions-batch-update 한 곳으로 모인다고 짚었고, 원본도 그렇다. 화면에서 백엔드까지의 호출 경로와 저장 위치도 원본과 같았다.

저장 형태까지 맞았다.

금액은 100을 곱한 정수로, 날짜는 8자리 정수로 들어간다. 삭제한 거래는 지우지 않고 삭제 표시만 해 둔다. 만든 웹 앱은 테스트 5개를 통과했지만, 화면 클릭 검증은 권한이 없어 하지 못했다.

대형 번들의 한계와 REA가 멈춰 서는 지점

큰 자바스크립트 묶음 하나에 로직이 몰린 앱이면 REA의 구조 분석이 끝까지 돌지 못할 수 있다. 이번 앱이 그랬는데, 이 경우 AI는 파일을 직접 읽는 쪽으로 돌아간다. 코드가 압축돼 있으면 이 우회로도 좁아진다. 기능 추적처럼 네이티브 분석 엔진에 기대는 기능은 자바스크립트 앱에 쓰지 못한다. 프로그램 실행 과정을 기록하는 프로세스 캡처는 REA 문서상 리눅스와 맥 전용이다.

에이전트 설정도 결과를 바꾼다. 본지 PC의 클로드 코드에는 플러그인이 여럿 켜져 있었다. AI가 코드 검토 에이전트를 따로 띄우고 보안 지적까지 고친 데에는 이 영향이 있었을 수 있다. 도구 호출 161회 가운데 절반가량이 그 일에 쓰였다.

상용 앱을 대상으로 삼는 일은 다른 문제다.

REA의 면책 문서는 독점 소프트웨어를 복제하거나 보호된 코드를 재현하는 일을 돕지 않는다고 적었다. 이 실습이 성립한 건 대상이 MIT 앱이었기 때문이다.

REA는 지도를 그렸고 길은 AI가 걸었다

REA는 앱의 뼈대를 정확히 짚었다. 어떤 통로로 화면과 백엔드가 이어지고 데이터가 어떤 표에 담기는지는 REA가 처음 몇 차례 호출에서 내놓은 결과에 이미 들어 있었다. 가계부의 두뇌에 해당하는 계산과 저장 로직 앞에서는 멈췄다.

“도구는 앱의 뼈대와 지도를 그렸을 뿐, 비압축 자바스크립트의 원본 함수명을 파고들어 계산대 문을 연 것은 AI 자신이었다.”

복제를 가능하게 한 건 도구의 성능보다 앱이 배포된 방식이었다.

로직은 압축되지 않은 채 함수 이름을 달고 있었고, 원본 소스까지 설치 파일에 실려 있었다.

심층 르포 연작 • 2부 2편 바로가기 →
[2부] REA로 은행 연동까지 뜯어보니…AI는 코드를 다 읽었고 계약 앞에서 멈췄다
로컬 코드는 20분 만에 다 뚫었지만, 실 서비스의 핵심인 은행 연동은 단 한 건도 넘지 못했습니다. 데스크톱 앱 안에 서버 코드가 통째로 실려 있었음에도 AI의 발목을 잡은 진짜 소프트웨어 해자의 자리를 실측으로 밝힙니다.
자주 묻는 질문 (FAQ)
Q. REA로 상용 앱을 복제해도 되나
A.법은 역분석을 다른 프로그램과의 호환에 필요한 경우로 한정해 허용하고, 노션 같은 상용 앱 약관은 기능이나 화면을 베낄 목적의 접근 자체를 금지한다. 혼자 구조를 살펴보는 실험과 비슷한 앱을 만들어 배포하는 일은 완전히 다르다. REA 면책 문서 역시 독점 소프트웨어 복제를 돕지 않는다고 밝히고 있다.
Q. 코딩을 몰라도 쓸 수 있나
A.설치와 등록은 명령 몇 줄이면 충분하다. 다만 분석 대상을 준비하는 단계에서 압축 파일 구조를 알아야 하고, 결과를 검증하려면 원본과 대조할 정답지가 필요하다. 본지 실습에서 가장 손이 많이 간 부분은 대상 준비였으며, REA 설치 자체는 그보다 간단했다.
Q. 비용은 얼마나 드나
A.REA 자체는 오픈소스라 무료다. 비용은 REA를 호출하는 AI 에이전트 API 사용량에서 발생한다. 본지 실습에서 클로드 코드는 47분 동안 정가 기준 12.48달러(약 1만6600원)를 썼으며, 코드 검토와 보안 보완 작업이 비용을 키운 주원인이었다.

RELATED ARTICLES

RECOMMENDED STORIES