콘텐츠로 이동

Relyze - 대화형 바이너리 디스어셈블러 & Diff 치트시트

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/Exportsimport/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 다른 디스어셈블러

측면RelyzeIDA ProGhidraBinary Ninja
디컴파일러예 (Hex-Rays)
바이너리 diff기본 제공추가 (BinDiff)플러그인플러그인
스크립팅RubyPython/IDCJava/PythonPython
비용무료 + Pro상용무료상용

리소스