업데이트로 돌아가기
New releaseAug 20, 2026

rhabdomancer v0.10.0

이진 파일에서 잠재적으로 안전하지 않은 API 함수 호출을 찾아내는 취약점 연구 보조 도구.

공유

rhabdomancer

build doc

"The road to exploitable bugs is paved with unexploitable bugs."

-- Mark Dowd

Rhabdomancer는 바이너리 파일에서 잠재적으로 안전하지 않은 API 함수에 대한 호출을 찾아내는 초고속 IDA 헤드리스 플러그인입니다. 감사자는 이러한 후보 지점에서 역추적하여 신뢰할 수 없는 입력에 접근할 수 있는 경로를 찾을 수 있습니다.

기능

  • IDA 9.x 및 idalib-rs Rust 바인딩을 통한 초고속 헤드리스 사용자 경험.
  • IDA가 지원하는 모든 아키텍처로 컴파일된 C/C++ 바이너리 타깃 지원.
  • 잘못된 API 함수 호출 위치는 stdout에 출력되고 IDB에 표시됩니다.
  • 알려진 잘못된 API 함수는 위험도 계층으로 그룹화되어 감사 작업의 우선순위를 정하는 데 도움을 줍니다.
    • [BAD 0] 높은 우선순위 - 일반적으로 안전하지 않은 것으로 간주되는 함수.
    • [BAD 1] 중간 우선순위 - 안전하지 않은 사용 사례가 있는지 확인해야 하는 흥미로운 함수.
    • [BAD 2] 낮은 우선순위 - 이러한 함수와 관련된 코드 경로는 신중하게 확인해야 합니다.
  • 알려진 잘못된 API 함수 목록은 conf/rhabdomancer.toml을 편집하여 쉽게 사용자 정의할 수 있습니다.

기사

참고 자료

설치

최신 릴리스를 얻는 가장 쉬운 방법은 crates.io를 통하는 것입니다:

  1. IDA를 다운로드, 설치 및 구성합니다 (https://hex-rays.com/ida-pro 참조).
  2. LLVM/Clang을 설치합니다 (https://rust-lang.github.io/rust-bindgen/requirements.html 참조).
  3. Linux/macOS에서는 다음과 같이 설치합니다:
    export IDADIR=/path/to/ida # 설정하지 않으면 빌드 스크립트가 일반적인 위치를 확인합니다
    cargo install rhabdomancer --locked
    
    Windows에서는 대신 다음 명령을 사용합니다:
    $env:LIBCLANG_PATH="\path\to\clang+llvm\bin"
    $env:PATH="\path\to\ida;$env:PATH"
    $env:IDADIR="\path\to\ida" # 설정하지 않으면 빌드 스크립트가 일반적인 위치를 확인합니다
    cargo install rhabdomancer --locked
    

컴파일

또는 소스에서 빌드할 수 있습니다:

  1. IDA를 다운로드, 설치 및 구성합니다 (https://hex-rays.com/ida-pro 참조).
  2. LLVM/Clang을 설치합니다 (https://rust-lang.github.io/rust-bindgen/requirements.html 참조).
  3. Linux/macOS에서는 다음과 같이 컴파일합니다:
    git clone --depth 1 https://github.com/0xdea/rhabdomancer
    cd rhabdomancer
    export IDADIR=/path/to/ida # 설정하지 않으면 빌드 스크립트가 일반적인 위치를 확인합니다
    cargo build --release --locked
    
    Windows에서는 대신 다음 명령을 사용합니다:
    git clone --depth 1 https://github.com/0xdea/rhabdomancer
    cd rhabdomancer
    $env:LIBCLANG_PATH="\path\to\clang+llvm\bin"
    $env:PATH="\path\to\ida;$env:PATH"
    $env:IDADIR="\path\to\ida" # 설정하지 않으면 빌드 스크립트가 일반적인 위치를 확인합니다
    cargo build --release --locked
    

사용법

  1. IDA가 유효한 라이선스로 올바르게 구성되어 있는지 확인합니다.
  2. 필요한 경우 conf/rhabdomancer.toml에서 알려진 잘못된 API 함수 목록을 사용자 정의합니다. RHABDOMANCER_CONFIG 환경 변수를 설정하여 기본 구성 파일 위치를 재정의할 수 있습니다.
  3. IDA 설치가 비표준 위치에 있는 경우 IDADIR 환경 변수가 설정되어 있는지 확인합니다.
  4. 다음과 같이 실행합니다:
    rhabdomancer <binary_file>
    
    기존 .i64 IDB 파일이 있으면 업데이트되고, 없으면 새 IDB 파일이 생성됩니다.
  5. 결과 .i64 IDB 파일을 IDA로 엽니다.
  6. View > Open subviews > Bookmarks를 선택합니다.
  7. 결과가 IDA 창에 편리하게 수집되어 표시됩니다.

[!NOTE] Rhabdomancer는 표시된 호출 위치에 주석도 추가합니다.

호환성

공식적으로는 최신 IDA 릴리스만 지원되지만, 이전 버전도 작동할 수 있습니다. 다음 표는 각 IDA 버전에 대한 최신 호환 릴리스를 요약한 것입니다:

IDA 버전최신 호환 릴리스
v9.0.240925v0.2.4
v9.0.241217v0.3.5
v9.1.250226v0.6.2
v9.2.250908v0.7.6
v9.3.260213v0.8.1
v9.3.260327v0.9.0
v9.3.260421v0.9.3
v9.4.260714현재 릴리스

[!NOTE] 추가 정보는 idalib-rs 문서를 확인하세요.

크레딧

이 프로젝트의 개발은 다음 조직의 지원을 받았습니다:

변경 로그

TODO

  • 알려진 잘못된 API 함수 목록을 더욱 확장합니다 (https://github.com/0xdea/semgrep-rules 참조).
  • 더 많은 사례를 처리하기 위해 normalize_name의 정규화 범위를 확장하는 것을 고려합니다.
  • VulFiVulnFanatic 스타일의 기본 규칙 세트를 구현합니다.

카테고리