REA와 Ghidra: 어떤 리버스 엔지니어링 작업 흐름이 적합할까요?
작업, 입력, 출력, 수동 제어, 설정 요구 사항과 REA를 통해 Ghidra를 사용하는 방법을 기준으로 두 도구를 비교합니다.
이 페이지의 새 소식
- — 출처에 근거한 커뮤니티 사례와 실용적인 가이드를 게시하고, 근거의 한계를 명확히 밝혔습니다.
네이티브 바이너리 분석 프로젝트를 직접 탐색하고 편집하려면 Ghidra를 사용하세요. 코딩 에이전트나 CLI로 소프트웨어를 조사하고 근거를 갖춘 분석 결과를 받으려면 REA를 사용하세요. REA는 Ghidra를 네이티브 분석 프로바이더로 사용할 수 있으므로, 두 도구를 하나의 작업 흐름에 함께 활용할 수 있습니다.
이 글은 독립 커뮤니티 비교 가이드입니다. 현재 기능과 요구 사항에 관한 일차 출처는 REA 저장소와 Ghidra 저장소입니다.
REA와 Ghidra는 어떻게 다른가요?
Ghidra는 디스어셈블, 디컴파일, 그래프, 스크립팅과 대화형 또는 자동 분석을 제공하는 소프트웨어 리버스 엔지니어링 프레임워크입니다. Ghidra 자체 분석 환경에서 분석가는 조사를 직접 제어할 수 있습니다. Ghidra 공식 README에 프로세서, 실행 파일 형식과 확장 기능 지원이 설명되어 있습니다.
REA는 네이티브 바이너리, JavaScript/Electron 애플리케이션, 브라우저 페이지와 관리형 어셈블리 등 여러 대상 유형을 다루는 MCP 서버 겸 CLI입니다. 코딩 에이전트는 REA 도구를 호출하고, 분석 결과와 한계를 전달받은 뒤 다음에 무엇을 살펴볼지 결정합니다. 심층 네이티브 분석을 위해 REA는 지원되는 Ghidra, Hopper 또는 IDA 설치본에 연결합니다. REA 네이티브 가이드에서 이러한 프로바이더 관계를 설명합니다.
| 무엇이 필요한가요? | 더 적합한 시작 도구 | 입력 | 출력 또는 장점 |
|---|---|---|---|
| 바이너리 함수와 그래프를 직접 추적 | Ghidra 직접 사용 | 지원되는 바이너리 | 완전한 대화형 분석 환경과 프로젝트 직접 제어 |
| 네이티브 기능이 특정 방식으로 동작하는 이유를 에이전트에 질문 | 지원되는 네이티브 프로바이더와 연결한 REA | 바이너리와 구체적인 질문 | 에이전트가 이끄는 분석 결과, 근거와 설명 |
| 분석 프로젝트를 장기간 유지하고 발전시키기 | Ghidra 직접 사용 | 가져온 프로그램과 분석가의 변경 사항 | 직접 제어할 수 있는 지속적인 프로젝트 작업 흐름 |
| Electron 모듈이나 IPC 경로 분석 | REA의 JavaScript 작업 흐름 | 앱 폴더 또는 ASAR | 네이티브 엔진 없이 모듈, 관계와 소스 위치 확인 |
| 반복 가능한 네이티브 분석을 스크립트로 작성 | 필요한 제어 수준에 따라 두 도구 중 선택 | 바이너리와 분석 스크립트 또는 CLI 요청 | Ghidra 스크립팅 또는 REA의 구조화된 CLI 결과 |
언제 Ghidra가 더 적합한가요?
지속적인 시각적 탐색, 분석가의 세밀한 변경, 사용자 지정 스크립트나 지속적으로 유지되는 프로그램 데이터베이스가 필요한 작업이라면 Ghidra를 직접 선택하세요. Ghidra의 기본 인터페이스는 분석 프로젝트 자체에 접근할 수 있게 합니다. 숙련된 분석가는 각 조작을 에이전트 요청으로 바꾸지 않고도 명령어와 그래프를 살펴볼 수 있습니다.
REA와 Ghidra를 함께 사용한다고 해서 모든 Ghidra 기능이 MCP를 통해 제공되는 것은 아닙니다. REA 프로바이더 문서에 검증된 작업과 호스트 제한이 설명되어 있습니다. 문서에 명시된 REA의 헤드리스 작업 흐름은 임시 프로젝트를 사용하며, 기존 사용자 프로젝트를 열지 않습니다. 기존 프로젝트를 유지해야 한다면 Ghidra의 직접 인터페이스를 우선 사용하세요.
Ghidra에도 자체 자동화 및 스크립팅 작업 흐름이 있습니다. Ghidra가 수동 작업만 지원한다고 주장하는 것은 잘못입니다. REA의 유용한 차별점은 자동화를 독점적으로 제공한다는 데 있지 않고, 여러 대상 유형에 걸쳐 공통 에이전트 및 CLI 인터페이스를 제공한다는 데 있습니다.
언제 REA가 더 적합한 출발점인가요?
REA는 분석에서 구현으로 이어지는 구체적인 질문에 유용합니다. 예를 들어 에이전트는 계산 과정을 조사하고, 관련 명령어와 참조를 찾아 규칙을 설명한 다음, 사용자가 테스트할 수 있도록 작은 구현을 작성할 수 있습니다. 에이전트의 결론은 여전히 원본 동작과 대조해 확인해야 합니다.
공식 DX-Ball 사례 연구는 사운드 호출을 따라 위치를 패닝 값으로 바꾸는 보조 함수에 도달하고, 그 계산을 C로 재구현합니다. 프로젝트는 원본 x86 테스트 사례 3,205건과 컴파일된 함수의 전체 63바이트 일치를 보고합니다. 이 결과는 해당 실습 예제에 한정되며, REA의 일반적인 성공률이나 Ghidra 대비 성능 우위를 입증하지 않습니다.
REA는 네이티브 디컴파일 이외의 작업 흐름도 제공합니다. Electron 애플리케이션의 경우 정적 JavaScript 분석으로 Ghidra를 시작하지 않고도 모듈과 IPC 관계를 파악할 수 있습니다. 따라서 조사 범위가 애플리케이션 패키징, JavaScript와 일부 네이티브 구성 요소에 걸쳐 있을 때 REA는 편리한 진입점이 됩니다. REA 대상 표에 각각의 사전 요구 사항이 나와 있습니다.
REA를 통해 Ghidra를 어떻게 사용하나요?
REA 프로바이더 문서에서 지원하는 Ghidra 릴리스와 JDK를 설치한 뒤, 해당 설치본을 사용하도록 REA를 구성하세요. REA 설정은 검증된 기존 경로를 기록할 수 있지만, Ghidra나 Java를 대신 다운로드하거나 설치하지는 않습니다. 공식 설정 가이드에 현재 설정 지침이 나와 있습니다.
최신 Ghidra 릴리스가 설치된 REA 패키지와 자동으로 호환된다고 가정하지 마세요. Ghidra 자체의 최신 릴리스 요구 사항과 REA가 테스트한 프로바이더 지원 범위는 목적이 다릅니다. 이 글 작성일 기준으로 REA의 main 브랜치 설치 가이드에는 Ghidra 12.1.x 프로바이더 검사가 설명되어 있습니다. 버전을 선택하기 전에 해당 가이드와 설치된 서버의 기능을 확인하세요.
프로바이더를 구성한 뒤 다음 명령으로 해당 범위의 진단을 수행할 수 있습니다.
npx -y rea-agents@latest doctor --provider ghidra --json
Ghidra를 사용하는 작업은 첫 질의에서 가져오기와 자동 분석에 시간이 필요할 수 있습니다. 대형 바이너리는 프로바이더 시작 제한 시간이 더 길어야 할 수 있지만, MCP 클라이언트에는 별도의 더 짧은 요청 제한 시간이 있을 수 있습니다. 이러한 상황을 진단할 때는 문서에 명시된 제한 시간 및 복구 안내를 따르세요.
결정할 때 어떤 한계를 고려해야 하나요?
REA의 프로바이더 지원은 호스트와 대상에 따라 달라집니다. Windows Ghidra P0 지원 범위는 실험적이라고 명시되어 있으며, Ghidra의 전체 플랫폼 및 형식 지원 범위보다 좁습니다. Ghidra가 파일을 수동으로 가져올 수 있다는 이유만으로 호환성을 추정하지 말고 Windows 프로바이더 가이드를 읽어 보세요.
REA main 브랜치에는 @latest로 설치한 npm 패키지보다 새로운 기능이 설명되어 있을 수도 있습니다. 특정 패키지 버전이 작동한다는 사실만으로 main 브랜치의 모든 작업을 사용할 수 있다고 판단할 수는 없습니다. 릴리스 경계와 연결된 도구의 스키마를 확인하세요.
두 작업 흐름 모두 판단이 필요합니다. 디컴파일된 의사 코드는 원본 소스 코드가 아니며, 간접적인 동작은 해명되지 않은 채 남을 수 있고, 코딩 에이전트는 올바른 근거를 잘못 해석할 수 있습니다. 중요한 결론은 관련 명령어, 참조와 통제된 조건에서의 동작 확인을 통해 검증하세요.
REA와 Ghidra에 대해 어떤 질문이 자주 나오나요?
REA가 Ghidra를 대체하나요?
REA는 Ghidra를 엔진으로 사용할 수 있으며, Ghidra의 완전한 대화형 환경을 대체하지 않습니다. 작업에 맞는 인터페이스를 선택하거나 두 도구를 함께 사용하세요.
두 도구 중 무료인 것이 있나요?
REA가 작성한 코드는 MIT 라이선스로 제공됩니다. Ghidra는 공개된 라이선스와 서드파티 고지가 적용되는 오픈 소스 프로젝트입니다. 코딩 에이전트의 모델 접근과 Hopper 또는 IDA 같은 선택적 상용 프로바이더에는 별도의 약관이 적용됩니다. REA 라이선스와 Ghidra 라이선스를 참조하세요.
Ghidra 없이 JavaScript를 분석할 수 있나요?
네. REA의 정적 JavaScript/Electron 작업 흐름은 네이티브 디컴파일러 대신 Node.js와 npm을 사용합니다. 해당 앱의 네이티브 추가 기능은 자체 요구 사항이 있는 별도 분석 대상입니다.
초보자는 어떤 도구부터 사용하면 좋을까요?
어셈블리와 수동 바이너리 분석을 배우려면 Ghidra 자체 자료부터 시작하세요. 질문을 중심으로 진행하는 에이전트 조사를 배우려면 REA Notes 예제나 저희의 REA 설정 가이드에서 시작하세요. 대상이 작고 질문이 확인 가능할수록 어느 접근 방식이든 평가하기 쉽습니다.