Relyze - 대화형 바이너리 디스어셈블러 & Diff 치트시트
Relyze는 x86, x64, ARM32, ARM64를 지원하는 상용 대화형 디스어셈블러, 디컴파일러, 바이너리 diffing 플랫폼입니다. PE/ELF 바이너리를 함수 및 제어 흐름 그래프로 분석하고, 더 높은 수준의 의사코드를 복구하는 디컴파일러를 제공하며, 두 바이너리 버전을 비교하기 위한 강력한 바이너리 diff 엔진을 포함합니다. 패치 분석 및 악성 코드 변형 추적에 귀중합니다. Ruby 플러그인/스크립팅 프레임워크를 통해 확장 가능합니다. 무료 비상용 버전을 이용할 수 있습니다.
설치
| 단계 | 참고 |
|---|
| 다운로드 | 공식 사이트에서 설치 프로그램 받기 (Windows) |
| 에디션 | 무료 (비상용) 및 Professional |
| 첫 실행 | 디컴파일러 및 분석 옵션 구성 |
| 플러그인 | Ruby 스크립팅 기본 제공 |
분석 워크플로우
| 작업 | 설명 |
|---|
| 파일 열기 | PE 또는 ELF 바이너리를 함수/CFG로 분석 |
| Functions view | 발견된 함수 탐색 |
| Graph view | 선택된 함수의 제어 흐름 그래프 |
| 디컴파일러 | 함수에 대한 C 같은 의사코드 복구 |
| Strings | 참조된 문자열 및 xref 나열 |
| Imports/Exports | import/export 테이블 검사 |
| 크로스 참조 | 함수/데이터가 사용되는 곳으로 이동 |
네비게이션 기본 사항
| 작업 | 방법 |
|---|
| 심볼 이름 바꾸기 | 선택 및 이름 바꾸기 (xref에 전파) |
| 주석 | 명령어/함수에 주석 달기 |
| 호출 따라가기 | 호출 대상 더블 클릭 |
| 주소로 이동 | 주소 네비게이션 상자 |
| 뷰 전환 | 디스어셈블리 / 그래프 / 디컴파일러 토글 |
바이너리 Diffing
Relyze의 diff 엔진은 두 바이너리 간 함수를 일치시키고 동일, 변경, 추가, 제거됨으로 분류합니다. 보안 패치 또는 악성 코드 샘플을 비교하기 위한 핵심 워크플로우입니다.
| 작업 | 방법 |
|---|
| Diff 시작 | 바이너리 A 열기, 그 후 바이너리 B와 비교 |
| 일치된 함수 | 두 빌드 간 페어링된 함수 검토 |
| 변경된 함수 | 코드가 다른 함수에 초점 맞추기 |
| 추가/제거됨 | 패치가 도입하거나 삭제한 항목 보기 |
| 주석 포팅 | 한 빌드에서 다음 빌드로 이름/주석 전달 |
패치 분석 패턴: 사전/사후 패치 바이너리를 diff하고, 작은 변경된 함수 세트에 초점을 맞추고, 공급자가 수정한 내용을 연구하여 기본 취약점을 이해합니다.
Ruby 스크립팅
Relyze는 분석 모델을 Ruby에 노출합니다.
# 개념: 함수를 반복하고 큰 것들을 플래그
model = Relyze::Engine.instance.active_model
model.functions.each do |func|
if func.instructions.length > 500
puts "Large function at #{func.address.to_s(16)}"
end
end
| 사용 | 예 |
|---|
| 일괄 이름 바꾸기 | 함수 전체에 이름 지정 휴리스틱 적용 |
| 사용자 정의 분석 | 패턴 감지 (암호화 상수, gadgets) |
| 데이터 내보내기 | 함수/문자열을 파일로 덤프 |
| Diffing 자동화 | 많은 샘플에 걸쳐 비교 스크립팅 |
일반적인 워크플로우
| 목표 | 접근 |
|---|
| 보안 패치 이해 | 사전/사후 바이너리 diff → 변경된 함수 연구 |
| 네이티브 샘플 분류 | Strings + imports → 의심스러운 함수 디컴파일 |
| 악성 코드 변형 추적 | 새 샘플을 알려진 패밀리 멤버와 비교 |
| 로직 복구 | 디컴파일러 + 이름 바꾸기/주석을 사용하여 의도 재구성 |
Relyze vs 다른 디스어셈블러
| 측면 | Relyze | IDA Pro | Ghidra | Binary Ninja |
|---|
| 디컴파일러 | 예 | 예 (Hex-Rays) | 예 | 예 |
| 바이너리 diff | 기본 제공 | 추가 (BinDiff) | 플러그인 | 플러그인 |
| 스크립팅 | Ruby | Python/IDC | Java/Python | Python |
| 비용 | 무료 + Pro | 상용 | 무료 | 상용 |
리소스