
REA 리버스 엔지니어링 MCP를 위한 데스크톱 GUI: 리스팅, 디컴파일러, 함수 그래프를 갖춘 코드 브라우저와 229개의 분석 도구 및 AI 에이전트를 동일한 세션에서 제공합니다.
앱을 열고, 골수까지 읽어 내세요.
[!NOTE] Marrow(이전 이름 REA Studio)는 독립 프로젝트입니다. REA의 저자들은 이를 만들지도, 보증하지도 않습니다. Marrow는 사용자가 설치한 REA를 실행하며 자체 사본을 포함하지 않습니다. REA는 morluto/rea 또는 rea-agents npm 패키지에서 받으세요.
Marrow는 macOS, Windows, Linux용 리버스 엔지니어링 앱으로, REA를 기반으로 만들어졌습니다. REA는 MCP 서버를 통해 분석을 수행합니다. Marrow는 리버스 엔지니어가 기대하는 창들을 제공합니다. 디스어셈블리가 있는 Listing, Decompiler, Function Graph, Symbol Tree, Bytes, 문자열, 참조, 북마크, 검색을 많은 사람이 이미 익숙한 클래식 CodeBrowser처럼 배치했습니다.
네이티브 바이너리는 이 CodeBrowser에서 열립니다. Apple 번들, Electron 앱, 웹 페이지, Android APK, .NET 어셈블리, 펌웨어, 패킷 캡처, 버전 비교는 각각 고유한 창을 가지며, REA Tools 창에는 모든 REA 도구가 각 도구별 양식과 함께 나열됩니다.
화면에 표시되는 모든 것은 REA가 보고한 증거와 한계와 함께 REA의 응답에서 나옵니다. Marrow는 파일을 직접 파싱하지 않으며, 도구가 실패하면 REA가 반환한 오류를 표시합니다. 분석은 사용자의 컴퓨터에서 실행됩니다.
Claude를 같은 세션에 두 가지 방식으로 불러올 수 있습니다. 자신의 Anthropic API 키를 AI Chat에 붙여 넣고 Marrow 안에서 Claude와 대화하거나, AI 허브를 켜고 Claude Code, Claude Desktop 또는 다른 MCP 클라이언트를 연결하세요. 어느 방식이든 Claude는 REA의 도구를 실행하고, 뷰를 이동하고, 함수 이름을 바꾸고, 주석과 북마크를 추가할 수 있으며, 이를 지켜보는 동안 Marrow는 분석 외부로 무언가가 나가기 전에 사용자에게 확인을 요청합니다.
최신 릴리스에서 시스템에 맞는 설치 프로그램을 받으세요:
Mac용 DMG(Apple Silicon 또는 Intel), Windows용 .exe 설치 프로그램, 또는 Linux용 AppImage나
.deb. 아직 서명되지 않았으므로 처음 Marrow를 열 때 시스템이 경고를 표시합니다.
릴리스 노트에 이를 통과하는 방법이 나와 있습니다.
npm install --global rea-agents. Node.js 22.23.4+, 24.22.1+ 또는 26.12.1+가 필요합니다.rea doctor --provider ghidra로 REA가
이를 사용할 수 있는지 확인할 수 있습니다. Marrow는 사람들이 보통 Ghidra를 두는 위치(Mac의 ~/Applications,
Windows의 홈 폴더 또는 C:\, Linux의 홈 폴더 또는 /opt)와
Homebrew, Program Files 또는 /usr/lib/jvm의 JDK 21을 찾습니다. Tool Options > REA Engine에서 다른 위치를
지정할 수 있습니다.Marrow가 시작되면 Getting Started가 REA, Ghidra, Java를 확인하고 누락된 항목을 설치하는 방법을 알려줍니다. Help > Contents를 통해 언제든지 다시 열 수 있습니다.
git clone https://github.com/utabk/marrow.git
cd marrow
npm install
npm run dev
/bin/ls, Windows에서는
C:\Windows\System32\notepad.exe를 선택하면 됩니다. 유니버설 macOS 바이너리의 경우 Marrow가 어떤
아키텍처를 분석할지 묻습니다.entry 같은 이름으로 이동합니다. Listing이나 Decompiler에서 이름을 더블클릭하여
따라가고, ⌥← (Windows 및 Linux에서는 Alt+←)를 눌러 돌아갑니다.Marrow 안에서 채팅하려면 Window > AI Chat을 열고 API Key를 클릭한 뒤
Anthropic Console에서 발급받은 키를 붙여넣으세요. Marrow를 시작하기 전에
ANTHROPIC_API_KEY를 설정할 수도 있습니다. 키는 시스템 키 저장소(macOS Keychain,
Windows의 DPAPI, 또는 Linux의 GNOME Keyring이나 KWallet)로 암호화되어 저장되며 Marrow의 메인 프로세스만
이를 읽습니다. 채팅 상단의 메뉴에서 Claude Opus, Sonnet 또는 Haiku를 선택하세요.
이미 가지고 있는 에이전트를 사용하려면 Window > AI Hub를 열고 서버를 켜세요. 창에는
Claude Code용으로 실행할 명령(claude mcp add marrow -- …)과 Claude Desktop의 설정에 붙여넣을 블록이
표시됩니다. 허브는 로컬 소켓(Windows에서는 명명된 파이프)에서 수신 대기하며, MCP 메시지를 주고받기 전에
Marrow와 커넥터가 각각 Marrow 프로필에 보관된 비밀을 알고 있음을 증명하므로 다른 프로그램이 어느 쪽인
척할 수 없습니다. Marrow에는 API 키가 필요하지 않습니다.
여는 모든 프로그램은 자체 rea mcp 프로세스를 갖습니다. REA는 연결당 하나의 열린 대상만 유지하기
때문입니다. Marrow의 메인 프로세스는 stdio를 통한 MCP로 이 프로세스들과 통신합니다. 창들은 작은 타입
지정 브리지를 통해 메인 프로세스로부터 데이터를 받으며 파일이나 프로세스에 직접 접근하지 않습니다.
REA는 네이티브 코드에 대해 Ghidra를 헤드리스로 실행하고 필요할 때 다른 도구(Mac에서는 otool과 codesign,
adb, JADX, 브라우저)를 호출한 뒤 각 결과를 증거와 함께 다시 보냅니다. AI Chat과 AI 허브는 동일한 검사를
거쳐 같은 메인 프로세스를 통해 REA에 접근합니다.
flowchart LR
subgraph marrow["Marrow"]
windows["Windows<br/>Listing, Decompiler, Function Graph,<br/>Security, REA Tools, AI Chat"]
main["Main process<br/>one REA session per open program"]
hub["AI hub"]
windows <-->|"typed bridge"| main
hub <--> main
end
you(["You"]) --> windows
agent(["Your AI agent<br/>Claude Code, Claude Desktop<br/>or any MCP client"]) -->|"MCP over a local socket"| hub
main <-->|"Anthropic API, with your key"| claude(["Claude"])
main <-->|"MCP over stdio"| rea["rea mcp<br/>229 tools"]
rea --> ghidra["Ghidra, headless<br/>native analysis"]
rea --> more["Other programs REA drives<br/>otool, codesign, adb, JADX,<br/>WABT, Chrome"]
| 여는 항목 | Marrow에서 표시되는 위치 | 필요한 것 |
|---|---|---|
| 네이티브 바이너리 (Mach-O, ELF, PE) | CodeBrowser: Listing, Decompiler, Function Graph, 호출 트리, Symbol Tree, Bytes, 문자열, 참조, 북마크, 그리고 Mach-O용 Security 창 | Ghidra 12.1.4 및 JDK 21 |
| Apple 앱 및 번들 | Apple Bundle Inspector: 코드 서명, Objective-C 및 Swift 메타데이터, Info.plist, nib, 에셋 카탈로그, 크래시 리포트 | Xcode 또는 그 명령줄 도구가 설치된 Mac |
| JavaScript 및 Electron 앱 | JS/Electron Inspector: ASAR 또는 폴더에서 생성된 앱 그래프, Electron fuse, 라이브 Node 및 Electron 대상 | 추가로 필요한 것 없음 |
| 웹사이트 | Web Capture: Chrome의 원격 디버깅 포트를 통한 라이브 페이지, REA의 브라우저 시나리오, HAR 파일 | Chrome 계열 브라우저 |
| 아카이브, 설치 프로그램, PE 및 ELF 세부 정보, SQLite | Artifact Inspector | 추가로 필요한 것 없음 |
| Android APK 및 기기 | Android | 도구에 따라 JADX, Apktool 또는 adb |
| .NET 어셈블리 | .NET Assembly Browser | 추가로 필요한 것 없음 |
| WebAssembly | WASM Inspector | WABT 1.0.42 |
| 펌웨어, 로직 분석기 기록, EVM 바이트코드 | Firmware & Signals | Binwalk 또는 Unblob 및 sigrok (REA는 Linux에서만 실행) |
| 네트워크 캡처 | Packet Capture | TShark (REA는 Linux에서만 실행) |
| 동일한 대상의 두 버전 | Version Compare | 추가로 필요한 것 없음 |
| 실행 중인 프로세스 | Debug Sessions: LLDB, Rizin, Frida 및 Cutter, 그리고 Linux의 GDB | 선택한 디버거. Marrow는 각 실행 전에 확인을 요청합니다. |
| REA가 할 수 있는 그 밖의 모든 것 | REA Tools: 입력 스키마로부터 생성된 폼을 갖춘 229개 도구 전체 | 도구에 따라 다름 |
Tool Options > REA Engine은 Marrow가 실행하는 REA와 각 외부 프로그램을 찾은 위치
(PATH 또는 시스템의 일반적인 위치)를 보여줍니다. 파일 대화상자에서 다른 것을 선택한 다음
Restart REA를 누르십시오. Marrow는 이 경로들을 REA_* 설정으로 REA에 전달합니다:
| 프로그램 | 용도 | macOS 설치 |
|---|---|---|
| adb | Android 기기 | brew install --cask android-platform-tools |
| Apktool | Android 리소스 | brew install apktool |
| jadx-headless-mcp 0.7.1 JAR | Android 클래스 | REA의 docs/android-analysis.md 참조 (체크섬 고정 다운로드) |
| WABT 1.0.42 | WebAssembly | brew install wabt |
| GNU objdump | objdump 뷰 | brew install binutils |
| Rizin | Rizin 명령 | brew install rizin |
Windows 및 Linux에서는 평소 사용하는 패키지 관리자나 각 프로젝트 사이트에서 설치하십시오. Marrow가 PATH에서 찾습니다.
REA 체크아웃의 CLI 스크립트(scripts/rea.mjs)를 실행할 REA로 선택할 수도 있습니다. 해당
REA가 열린 프로그램에 대해 더 새로운 도구(예: 임의 주소의 주석 및 북마크, 색상이 적용된
디컴파일러 토큰)를 제공하면 Marrow는 이를 사용합니다.