반응형

morluto/rea는 리버스 엔지니어링을 지원하는 모델 컨텍스트 프로토콜(MCP) 서버이자 커맨드라인 도구입니다. 에이전트와 로컬 도구를 연결해 네이티브 바이너리, 자바스크립트 및 일렉트론(Electron) 애플리케이션, .NET 어셈블리, 웹사이트를 점검하도록 돕습니다. 모든 분석은 로컬 머신에서 직접 실행합니다. 분석 결과마다 도출한 결론의 근거와 함께 분석의 한계점도 명확히 제시합니다.

GitHub 스타 수는 449,917개에 달합니다. 다만 스타는 GitHub 계정의 북마크일 뿐, 소프트웨어를 실제로 실행하는 사용자 수를 나타내지는 않습니다. 포크(Fork) 수는 110,744건이며, 다른 계정이 직접 수정할 수 있는 독립된 복사본입니다. 오픈 이슈는 아직 닫히지 않은 버그 제보나 변경 요청으로, 현재 1,729개가 등록되어 있습니다. 라이선스는 라이선스 문구만 유지하면 사용, 수정, 재배포를 허용하는 MIT입니다. 저장소는 2026년 4월 14일에 생성했으며, 가장 최근 기록된 Git 업데이트(최신 푸시)는 2026년 11월 10일입니다.

주요 기능

초기 설정(setup)을 거치면 REA를 에이전트에 등록하고 이에 맞는 워크플로 지침을 설치합니다. 프로젝트에 소스 코드가 없어도 에이전트가 분석 대상을 직접 점검할 수 있습니다. 이미 설치된 도구가 있다면 Hopper, Ghidra, IDA, Kuna를 네이티브 분석에 활용할 수 있습니다. Hopper는 설치 과정에서 사용자가 승인해야만 설치합니다. 자바스크립트 정적 분석은 네이티브 엔진 없이도 바로 실행할 수 있습니다.

반환하는 결과 필드:

  • 데스크톱 설치본: 디렉터리와 헤더를 가볍게 점검하여 런타임 후보군, 보조 파일, 컴포넌트 마커, 후속 탐색 대상을 파악합니다.
  • 네이티브 바이너리: 의사코드(pseudocode), 어셈블리, 문자열, 심볼, 호출 관계, 참조 정보를 추출합니다. 이 작업에는 Hopper, Ghidra, IDA, Kuna 중 하나가 필요합니다.
  • 오프라인 ELF 레이아웃: 섹션, 세그먼트, 심볼, 재배치(relocation), 정적 완화 기법(mitigation) 후보를 확인합니다. Linux x64 환경에서는 호출자가 직접 pwntools를 제공해야 합니다.
  • Go 바이너리: ELF, PE, thin Mach-O 파일에서 내장 컴파일러 버전, 모듈, 대체(replacement) 목록, 빌드 설정을 확인합니다. Go를 따로 설치하지 않아도 됩니다.
  • GPU 코드 오브젝트: CUDA 및 HIP 타깃, 주요 커널 매개변수와 리소스, 보존된 PTX 텍스트를 분석합니다.
  • 모델 파일: GGUF 및 safetensors 메타데이터, 텐서 선언부, 계산된 총합 값을 읽어옵니다. 전체 파일 해시 추출은 선택 사항입니다.
  • IL2CPP 메타데이터: Unity의 global-metadata.dat 이미지, 타입 및 메서드 이름, 인덱스 범위를 파악합니다. 디코딩은 포맷 버전 24, 27, 29, 31, 39를 지원합니다. 이 숫자는 REA 출시 버전이 아니라 Unity 메타데이터 버전입니다. Unity를 별도로 설치할 필요는 없습니다.

동작 방식

에이전트는 MCP를 통해 REA를 호출합니다. REA가 로컬의 분석 대상을 점검하고 관련 코드를 추적한 뒤 근거와 함께 분석 결과를 반환합니다. 그러면 에이전트가 동작 방식을 설명하거나 코드를 작성하고 테스트할 수 있습니다.

에이전트 컨텍스트에 들어가는 텍스트 양을 줄이고자 입력 스키마는 기본적으로 축약(compact) 모드로 동작합니다. 전체 필드 설명이 필요하다면 REA_MCP_INPUT_SCHEMA_PROFILE=full로 설정하면 됩니다. tools/list 응답이 너무 크다면 REA_MCP_OUTPUT_SCHEMA_PROFILE=compact로 출력 스키마 크기를 제한하거나, off로 지정해 출력 스키마를 아예 생략할 수 있습니다. 스키마 설정을 변경해도 도구 세트, 서버 검증, 구조화된 결과는 빠짐없이 온전히 유지됩니다.

사용 방법

REA를 사용하려면 Node.js와 npm이 필요합니다. 지원하는 최소 버전은 22.x 라인의 22.23.4, 24.x 라인의 24.22.1, 그리고 26.12.1 이상입니다. 각 버전 번호는 프로젝트에서 공식 지원을 명시한 가장 오래된 릴리스 기준입니다.

npx rea-agents setup
npm install --global rea-agents
rea --help

설정(setup) 과정에서는 어떤 에이전트를 구성할지 묻고, 적용할 변경 사항을 보여준 뒤 승인을 기다립니다. 사용자가 승인하면 MCP 서버와 워크플로 지침을 추가하며, 기존 설정의 백업본도 남겨둡니다. 설정이 끝나면 에이전트를 재시작해야 합니다. 지원하는 에이전트로는 Claude Code, Codex, Cursor, Gemini CLI, Grok Build 등이 있습니다. 설치는 대상 프로젝트 외부의 신뢰할 수 있는 디렉터리에서 진행하세요. npx나 bunx로 패키지를 설치했다면 해당 캐시 항목을 유지해야 합니다. 설정 과정에서 런타임과 진입 스크립트 경로를 기록하기 때문입니다.

예시 1.

Notes 앱의 검색 동작 방식을 파악하고 그 근거를 보여준 뒤, 내 프로젝트에 유사한 기능을 만들어줘.

REA가 지정한 앱을 점검하고 에이전트가 기능을 설명하며 유사한 기능을 구현할 수 있도록 그 근거를 반환합니다. Notes 대신 분석할 대상 앱 이름을 넣으면 됩니다.

예시 2.

npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json

REA가 해당 디렉터리나 ASAR 아카이브를 읽어 모듈, 임포트(import), 일렉트론 경계와 그 근거를 JSON 형태로 반환합니다.

예시 3.

rea update

전역(global)으로 설치한 npm 또는 Bun 패키지를 업데이트합니다. rea --update 명령어로도 실행할 수 있습니다. 업데이트 도구는 표준 출력(stdout)과 표준 에러(stderr)를 합쳐 최대 4MiB까지만 보관합니다. 이 4MiB는 저장하는 명령어 출력의 상한선일 뿐 분석 데이터 크기 제한이 아닙니다. 이보다 큰 메타데이터 응답은 프로세스 종료 후 거부합니다. Bun 환경에서 업데이트하려면 Bun 1.2.17 이상 버전이 필요합니다. 업데이트 후에는 화면에 출력되는 setup 명령을 실행하세요. npx 환경이라면 npx rea-agents@latest setup을, Bun 환경이라면 bunx rea-agents@latest를 실행하면 됩니다.

저장소 내부 구성

저장소 트리에는 총 8,082개의 파일이 들어 있습니다. 이 수치는 단일 스킬의 길이가 아니라 순수한 파일 개수입니다. SKILL.md라는 이름의 파일은 5개가 있으며, 각각 에이전트가 불러올 수 있는 워크플로 지침을 담고 있습니다. 최상위 디렉터리에는 에이전트 및 플러그인 폴더와 함께 AGENTS.md, CHANGELOG.md, CONTRIBUTING.md, DISCLAIMER.md, LICENSE, README.md 파일이 있습니다.

REA는 morluto/rea 저장소, rea.tools 웹사이트, 또는 npm의 rea-agents 패키지를 통해 내려받을 수 있습니다. 이름이 비슷하거나 README를 그대로 복사했다고 해서 공식 배포본이 되는 것은 아닙니다.

GitHub 스타 수 비교

이 수치는 같은 날 같은 출처에서 집계한 GitHub 스타 북마크 수입니다. 다만 북마크 수가 소프트웨어의 정확도를 나타내는 척도는 아닙니다.

저장소 스타 수 저장소 용도
morluto/rea 449,917 에이전트를 통한 앱 및 네이티브 바이너리 리버스 엔지니어링
mattpocock/skills 320,880 작성자의 .agents 디렉터리에서 가져온 엔지니어 스킬 모음
obra/superpowers 315,746 에이전트 스킬 프레임워크 및 개발 방법론
affaan-m/ECC 300,799 스킬, 메모리, 보안, 연구 우선 개발을 위한 에이전트 하네스

REA는 다른 세 저장소보다 더 많은 북마크를 기록했습니다. 다만 이 격차가 실제 사용 횟수를 나타내지는 않습니다.

제한 사항 및 요구 사항

네이티브 분석을 수행하려면 사용자가 선택형 Hopper 설치를 승인하지 않는 한, Hopper, Ghidra, IDA, Kuna 중 하나가 필요합니다. Linux x64 환경에서 오프라인 ELF 레이아웃을 확인하려면 호출자가 직접 pwntools를 제공해야 합니다. Linux 환경에서 Ghidra, JADX, 펌웨어 실행, 자바스크립트 또는 일렉트론 정적 분석을 진행할 때는 프로세스 소유자를 확인하기 위해 REA의 PATH 환경변수에 procps 호환 ps 명령어가 있어야 합니다.

스키마 설정은 외부에 알리는 안내 텍스트만 바꿉니다. 축약형(compact) 입력 스키마는 일부 필드 설명을 생략합니다. 출력 스키마를 축약(compact)하거나 끄면(off) 외부에 노출하는 출력 형태를 줄이거나 제거합니다. 다만 스키마 설정을 바꿔도 서버는 입력을 여전히 검증하며 결과도 온전하게 반환합니다.

업데이트 도구는 과도하게 큰 메타데이터를 거부하고 명령어 출력을 최대 4MiB까지만 보관합니다. 1.2.17 미만 버전의 Bun을 사용 중이라면 Bun을 업그레이드하기 전까지 Bun 업데이트 경로를 사용할 수 없습니다. 새로운 릴리스마다 버그 수정이 자주 이루어지므로, 이미 설치해 두었다면 최신 버전으로 업데이트하는 편이 좋습니다.

REA는 바이너리, 자바스크립트 및 일렉트론 앱 등 다양한 아티팩트를 점검하고, 분석 결과마다 확실한 근거를 함께 제공하는 로컬 MCP 및 커맨드라인 레이어입니다.

출처: GitHub 저장소 morluto/rea, https://github.com/morluto/rea.

반응형
Posted by Real_G