티스토리 뷰

📌 3줄 요약

1. AI 에이전트용 리버스 엔지니어링 도구 REA가 2026년 10월 14일 npm에 v6.5.0을 배포했습니다. 기여 기록 기준 커밋 893개, 병합 PR 529개가 들어간 대형 업데이트입니다.

2. 가장 큰 변화는 파일만 읽던 정적 분석에 Frida 계측과 ADB 기기 제어 같은 동적 분석이 더해진 것입니다. 이 기능들은 대상을 실행하거나 기기 상태를 바꿉니다.

3. 호환성 변경이 10건 있고, setup으로 등록한 에이전트는 예전 버전에 고정돼 있으니 업데이트 후 setup을 다시 실행해야 새 기능이 적용됩니다.

지난 글(REA 소개와 도입 전 체크포인트)에서 REA는 며칠 단위로 바뀌는 프로젝트라고 정리했는데요. 글을 올리고 하루 만에 다음 버전이 나왔습니다.

 

혹시 npx rea-agents@latest로 쓰고 계신가요? 그렇다면 이미 6.5로 바뀌었을 수 있습니다. 반대로 setup으로 에이전트에 등록해 뒀다면, 업데이트를 했다고 생각해도 에이전트는 아직 예전 버전을 쓰고 있을 수 있습니다. 이번 글에서는 6.5.0에서 무엇이 바뀌었고, 점검 업무에 쓰는 입장에서 무엇을 조심해야 하는지 정리합니다.


🧭 6.5.0 한눈에 보기

항목 내용
버전 rea-agents 6.5.0 (CHANGELOG 표기 10.13, npm 배포 10.14 UTC)
규모 커밋 893개, 병합 PR 529개 (릴리스 기여 기록 기준)
Node.js 22.x(22.19 이상), 24.x(24.11 이상), 26 이상으로 변화 없음. 단, 새 SQLite 분석은 24.15 이상 또는 26 이상 필요
호환성 변경 10건 (결과 값 null 허용, call graph 구조 변경 등)
보안 지원 최신 배포 버전에만 보안 수정 제공 (SECURITY.md)

v6.0이 나온 지 엿새 만에 다섯 번째 마이너 버전이 나온 셈입니다. 지난 글에서 권했던 "검증한 버전을 고정하고 변경 내역을 본 뒤 올린다"는 원칙이 이번에도 그대로 필요합니다.


🔍 무엇이 바뀌었나

변경 항목이 워낙 많아서 점검·분석 실무와 관계가 큰 것만 분야별로 추렸습니다.

모바일과 기기

기능 변경 내용
Frida 계측 로컬·원격 대상을 골라 붙거나(attach) 새로 띄우고(spawn), 직접 작성한 스크립트를 로드해 메시지를 수집. CLI와 MCP 모두 지원
ADB 기기 분석 연결된 에뮬레이터·실기기의 패키지, 프로세스, 로그, 화면, 버그리포트 조회와 APK·파일 전송, 앱 설치·실행·삭제
Apktool 디코딩된 매니페스트, 문자열 테이블, 로케일, 버전 정보 확인 (사용자가 Apktool 준비)
Flutter APK Dart 스냅샷 해시, ABI별 라이브러리 해시, 엔진 빌드 정보를 외부 엔진 없이 확인
HarmonyOS HAP·HSP·App Pack 구조 인벤토리 (코드 실행 없음)
DEX 참조 메서드 시그니처와 직접 호출(invoke) 위치를 오프셋 단위로 기록

APK 정적 분석과 ADB로 기기에서 앱을 꺼내 오는 흐름이 이어진다는 점이 실무에서 편합니다. 공식 문서도 기기에서 받아 온 APK를 그대로 정적 분석 명령에 넘기는 흐름을 예시로 듭니다.

네트워크와 데이터

기능 변경 내용
패킷 캡처 저장된 패킷을 TShark로 분석하고 요약·페이지 단위로 조회 (Linux 기준 검증)
Fiddler SAZ Fiddler 저장 아카이브를 HTTP 출처 정보와 함께 분석
HAR API 추론 HAR에서 메서드·출처·경로 패턴과 쿼리 파라미터 이름으로 API 구조를 추정. 쿼리 값, 헤더, 본문은 제외
QUIC qlog aioquic 1.5.0이 만든 qlog 0.3 JSON 분석 (그 외 형식 미지원)
SQLite 오프라인 DB 스냅샷의 테이블·컬럼·행 조회

네이티브 바이너리와 엔진

기능 변경 내용
IDA IDA에 붙는 네이티브 브리지 추가. 연결한 DB는 읽기 전용이며 저장하거나 닫지 않음
Ghidra MIPS, RISC-V, PowerPC 등 아키텍처 확대, 와일드카드·마스크 바이트 검색, 분석기 설정 지정
Rust·Go 바이너리에 내장된 의존성(cargo-auditable)과 빌드 정보 확인
Electron 패키징된 fuse 설정을 앱 실행 없이 읽음
결과 요약 분석 결과를 요약본으로 받고, 필요한 부분만 다시 분석하지 않고 페이지 단위로 조회

클라이언트와 사용성

setup으로 등록할 수 있는 에이전트에 Qoder, Trae, ZCode, DeepSeek Harness, Kimi Code, Factory Droid, WorkBuddy가 추가됐습니다. 공식 웹사이트에는 다국어판과 초보자용 안내가 생겼습니다.


🔐 보안 포인트

1. Frida 스크립트는 대상 프로세스 권한으로 실행된다

공식 문서는 Frida 스크립트가 대상 프로세스의 메모리·파일·네트워크 권한을 그대로 가진다고 설명합니다. 에이전트가 스크립트를 쓰고 로드까지 할 수 있게 열어 두면, 사람이 검토하지 않은 코드가 분석 대상 안에서 돌게 됩니다. 스크립트 로드는 매번 승인하도록 두는 편이 안전합니다.

편의 장치도 있습니다. 원격 접속용 인증값은 Evidence에 남기지 않고, 스크립트 원문 대신 경로와 SHA-256만 기록합니다. 수집 메시지는 16MiB로 제한됩니다. 다만 REA는 대상 프로세스를 강제 종료하지 않기 때문에, 정리 작업이 실패하면 대상이 멈춘(paused) 상태로 남을 수 있습니다.

2. ADB 작업 중 일부는 기기를 바꾼다

목록 조회나 로그 읽기와 달리 앱 설치·삭제, 실행·중지, 파일 push는 기기 상태를 바꿉니다. 문서의 예시에도 Frida 서버를 기기에 올리는 명령이 포함돼 있습니다. 업무 기기나 개인 휴대폰 대신 분석 전용 에뮬레이터나 초기화 가능한 테스트 기기를 쓰세요.

3. 기기에서 나온 데이터도 모델로 간다

logcat, 화면 캡처, 버그리포트에는 계정 정보나 알림 내용 같은 개인정보가 섞이기 쉽습니다. 에이전트에 연결해 쓰면 이 결과도 모델 제공자에게 전달됩니다. 지난 글의 원칙(민감한 대상은 CLI로 먼저 보기)이 동적 분석에서는 더 중요해집니다.

4. 설정 파일 관련 수정

6.5.0에서 setup이 신뢰할 수 없는 Gemini 워크스페이스 설정을 파싱하기 전에 무시하도록 바뀌었습니다. 수동 등록 시에는 Claude Code의 project 범위 등록을 피하라는 안내도 있습니다. 저장소에 .mcp.json이 생겨 커밋되거나 복사될 수 있기 때문입니다.

⚠️ 분석 권한은 여전히 먼저

동적 분석은 정적 분석보다 법적·계약상 민감도가 높습니다. 소유하거나 분석 권한을 받은 앱과 기기에만 쓰고, 업무에서는 범위와 방법을 문서로 확정한 뒤 진행하세요.


⚠️ 업데이트했는데 왜 그대로지? 의외의 사실 세 가지

1. setup으로 등록한 에이전트는 버전이 고정된다

설치 문서에 따르면 setup은 에이전트의 MCP 등록을 setup을 실행한 그 버전으로 고정합니다. 새 버전을 설치해도 실행 중인 서버나 기존 등록은 바뀌지 않습니다. 예를 들어 rea update로 CLI만 6.5로 올렸다면, 터미널은 6.5인데 에이전트는 6.4 도구를 쓰는 상태가 됩니다. 업데이트 후 출력되는 setup 명령을 다시 실행하고 에이전트를 재시작해야 합니다. 직접 claude mcp add로 등록한 경우에는 rea update도 손대지 않으니 등록을 지우고 새 버전으로 다시 만들어야 합니다.

팀 입장에서는 오히려 장점이기도 합니다. 검증한 버전에 고정해 두고 원할 때만 올릴 수 있기 때문입니다.

2. 지난 글 정정: Windows에서도 APK 분석 경로가 생겼다

지난 글에서는 상세 문서를 근거로 Windows에서는 APK 분석을 지원하지 않는다고 썼습니다. 6.5.0 문서에서는 README 표에 Linux·macOS·Windows x64가 함께 적혀 있고, Android 문서에도 JDK 21과 JADX 0.7.1로 Windows x64를 실제 검증하는 경로가 추가됐습니다.

다만 문서 스스로 이 Windows 지원이 저장소 main 기준으로 새로 생긴 것이라 이전 배포 패키지에서는 거부될 수 있다고 적어 두었습니다. Windows arm64는 여전히 범위 밖입니다. 그리고 APK 정적 분석 자체의 한계(split APK·AAB 처리, 서명 검증, 네이티브 라이브러리 분석, 런타임 캡처 미지원)는 그대로입니다. 동적 쪽은 ADB와 Frida라는 별도 기능으로 붙은 것입니다.

3. 기능 목록에 있다고 다 검증된 건 아니다

6.5.0 변경 내역은 항목마다 실제로 어떤 환경에서 검증했는지를 꽤 솔직하게 적어 두었습니다. 쓰려는 환경이 검증 범위 밖이라면 직접 확인이 필요합니다.

기능 기록된 검증 범위 미검증으로 명시된 부분
Frida Linux 로컬 Node 대상 흐름 macOS, Windows, 원격 기기·서버
패킷 캡처 Linux + Wireshark 4.6.6 Windows·macOS 네이티브 실행
WASM macOS arm64 + WABT 1.0.42 그 외 호스트
IDA 브리지 Linux IDA Free 9.4, Windows IDA Pro 9.3 macOS 네이티브, Windows IDA Free
새 클라이언트 setup 계획 단계 Trae, DeepSeek 실제 연동

🛠 6.5로 올리는 방법

호환성 변경, 나와 관계있을까

에이전트로 대화하듯 쓰는 사용자라면 대부분 체감하지 못합니다. REA의 JSON 결과를 스크립트로 읽어 자동화하고 있다면 아래를 확인하세요.

변경 영향받는 경우 대응
null 허용 attached, 소스맵 source name, 세그먼트 길이, command_path 등을 읽는 코드 null을 false·0으로 바꾸지 말고 '알 수 없음'으로 처리
필터 출력 --filter-output 결과를 jq 등으로 후처리 선택 값이 null이면 {} 대신 null이 나옴. 객체가 필요하면 --full-output
call graph get_call_graph 결과를 읽는 코드 결과가 { graph, limitations } 구조로 바뀜
도구 목록 binary_session에서 도구 목록을 읽던 코드 연결된 서버의 tool list 사용
엔진 조건 macOS에서 Hopper 저장 DB를 열던 사용자, 미해결 ABI의 MIPS 대상 DB 대신 실행 파일을 대상으로 지정, ABI 정보 제공
ADB·P/Invoke 설치 결과의 replaced, P/Invoke 대응 결과를 읽는 코드 replace_requested 확인, status·basis·limitations로 해석

업데이트 명령

# 1. 배포된 최신 버전과 내 버전 확인
npm view rea-agents dist-tags.latest
rea --version

# 2. 전역 설치한 CLI 업데이트
rea update

# 3. 에이전트 등록 갱신: 먼저 계획만 확인 (예: Claude Code)
npx -y rea-agents@latest setup --client claude_code --dry-run
#    계획을 확인했으면 --dry-run 없이 다시 실행하고 승인

# 4. 상태 점검
rea doctor --json

팀에서 버전을 고정해 쓰려면 @latest 대신 rea-agents@6.5.0처럼 정확한 버전을 지정하세요. 수동 등록 예시도 공식 문서에 버전이 명시된 형태로 나와 있습니다.

claude mcp add --scope local rea -- npx -y rea-agents@6.5.0 mcp

💡 팁

업데이트는 실제 분석 환경이 아니라 격리된 시험 VM에서 먼저 해 보세요. 지난 글에서 쓴 공개 테스트 파일로 결과가 예전과 같은지 비교하면, 스키마 변경이 내 자동화에 영향을 주는지 바로 보입니다.


🎉 정리

REA 6.5.0은 정적 분석 범위를 넓힌 데서 그치지 않고, Frida와 ADB로 실행 중인 앱과 기기까지 다루기 시작한 업데이트입니다. 모바일 점검에서 기기에서 앱을 꺼내 정적 분석하고 동작을 관찰하는 흐름을 하나로 묶을 수 있게 됐습니다. 그 대신 일부 기능은 더 이상 읽기 전용이 아니고, 에이전트 등록은 setup 당시 버전에 고정돼 있다는 점을 기억해야 합니다.

✅ 업데이트 체크리스트

항목 확인 내용
버전 CLI와 에이전트 등록 버전이 모두 6.5.0인가 (setup 재실행 여부)
자동화 JSON 결과를 읽는 스크립트가 null과 바뀐 구조를 처리하는가
동적 분석 Frida·ADB는 분석 전용 에뮬레이터나 테스트 기기에서만 쓰는가
스크립트 승인 에이전트가 만든 Frida 스크립트를 로드 전에 검토하는가
데이터 흐름 logcat·화면 캡처 같은 결과가 모델로 가도 되는 대상인가
검증 범위 내 운영체제·엔진 조합이 기록된 검증 범위 안에 있는가
등록 범위 project 범위 등록으로 .mcp.json이 저장소에 들어가지 않았는가

💬 자주 묻는 질문

Q. 6.4에서 꼭 올려야 하나요?
A. 보안 수정은 최신 배포 버전에만 제공되므로 올리는 것을 권합니다. 다만 자동화에 쓰고 있다면 호환성 변경을 먼저 확인하고 시험 환경에서 올리세요.

Q. 이제 REA만으로 모바일 동적 점검이 되나요?
A. Frida 계측과 ADB 기기 제어가 생겨 일부는 가능해졌습니다. 하지만 Frida는 Linux 로컬 흐름만 실제 검증됐고, 원격 기기와 macOS·Windows는 미검증으로 표시돼 있습니다. 기존 동적 분석 도구를 대체한다기보다 함께 쓰는 단계로 보는 게 현실적입니다.

Q. Windows에서 APK 분석이 되나요?
A. 6.5.0 문서 기준 Windows x64 경로가 추가됐습니다. 다만 문서에 이전 배포 패키지에서는 거부될 수 있다는 단서가 있으니 rea doctor로 확인하고, 안 되면 WSL2나 Linux VM을 쓰세요.

Q. Frida를 따로 설치해야 하나요?
A. Node 바인딩은 선택 의존성이라 Frida 기능을 쓸 때만 로드됩니다. 대상 기기의 Frida 서버는 REA가 설치해 주지 않으므로 직접 준비해야 합니다.

🔗 참고 자료

morluto/rea — GitHub 저장소
REA CHANGELOG (6.5.0 변경 내역)
REA 문서 — Installation and setup (6.5.0)
REA 문서 — Static Android APK analysis (6.5.0)
REA 문서 — Frida instrumentation (6.5.0)
REA 문서 — ADB device inspection and acquisition (6.5.0)
REA — Security Policy
이전 글: REA 소개와 도입 전 체크포인트