
New releaseAug 20, 2026
rhabdomancer v0.10.0
이진 파일에서 잠재적으로 안전하지 않은 API 함수 호출을 찾아내는 취약점 연구 보조 도구.
rhabdomancer
"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을 편집하여 쉽게 사용자 정의할 수 있습니다.
기사
- https://hex-rays.com/blog/streamlining-vulnerability-research-idalib-rust-bindings
- https://hnsecurity.it/blog/streamlining-vulnerability-research-with-ida-pro-and-rust
참고 자료
- https://github.com/0xdea/ghidra-scripts/blob/main/Rhabdomancer.java
- https://docs.hex-rays.com/release-notes/9_0#headless-processing-with-idalib
- https://github.com/idalib-rs/idalib
- https://books.google.it/books/about/The_Art_of_Software_Security_Assessment.html
설치
최신 릴리스를 얻는 가장 쉬운 방법은 crates.io를 통하는 것입니다:
- IDA를 다운로드, 설치 및 구성합니다 (https://hex-rays.com/ida-pro 참조).
- LLVM/Clang을 설치합니다 (https://rust-lang.github.io/rust-bindgen/requirements.html 참조).
- Linux/macOS에서는 다음과 같이 설치합니다:
Windows에서는 대신 다음 명령을 사용합니다:
export IDADIR=/path/to/ida # 설정하지 않으면 빌드 스크립트가 일반적인 위치를 확인합니다 cargo install rhabdomancer --locked$env:LIBCLANG_PATH="\path\to\clang+llvm\bin" $env:PATH="\path\to\ida;$env:PATH" $env:IDADIR="\path\to\ida" # 설정하지 않으면 빌드 스크립트가 일반적인 위치를 확인합니다 cargo install rhabdomancer --locked
컴파일
또는 소스에서 빌드할 수 있습니다:
- IDA를 다운로드, 설치 및 구성합니다 (https://hex-rays.com/ida-pro 참조).
- LLVM/Clang을 설치합니다 (https://rust-lang.github.io/rust-bindgen/requirements.html 참조).
- Linux/macOS에서는 다음과 같이 컴파일합니다:
Windows에서는 대신 다음 명령을 사용합니다:
git clone --depth 1 https://github.com/0xdea/rhabdomancer cd rhabdomancer export IDADIR=/path/to/ida # 설정하지 않으면 빌드 스크립트가 일반적인 위치를 확인합니다 cargo build --release --lockedgit 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
사용법
- IDA가 유효한 라이선스로 올바르게 구성되어 있는지 확인합니다.
- 필요한 경우
conf/rhabdomancer.toml에서 알려진 잘못된 API 함수 목록을 사용자 정의합니다.RHABDOMANCER_CONFIG환경 변수를 설정하여 기본 구성 파일 위치를 재정의할 수 있습니다. - IDA 설치가 비표준 위치에 있는 경우
IDADIR환경 변수가 설정되어 있는지 확인합니다. - 다음과 같이 실행합니다:
기존
rhabdomancer <binary_file>.i64IDB 파일이 있으면 업데이트되고, 없으면 새 IDB 파일이 생성됩니다. - 결과
.i64IDB 파일을 IDA로 엽니다. View>Open subviews>Bookmarks를 선택합니다.- 결과가 IDA 창에 편리하게 수집되어 표시됩니다.
[!NOTE] Rhabdomancer는 표시된 호출 위치에 주석도 추가합니다.
호환성
공식적으로는 최신 IDA 릴리스만 지원되지만, 이전 버전도 작동할 수 있습니다. 다음 표는 각 IDA 버전에 대한 최신 호환 릴리스를 요약한 것입니다:
| IDA 버전 | 최신 호환 릴리스 |
|---|---|
| v9.0.240925 | v0.2.4 |
| v9.0.241217 | v0.3.5 |
| v9.1.250226 | v0.6.2 |
| v9.2.250908 | v0.7.6 |
| v9.3.260213 | v0.8.1 |
| v9.3.260327 | v0.9.0 |
| v9.3.260421 | v0.9.3 |
| v9.4.260714 | 현재 릴리스 |
[!NOTE] 추가 정보는 idalib-rs 문서를 확인하세요.
크레딧
이 프로젝트의 개발은 다음 조직의 지원을 받았습니다:
변경 로그
TODO
- 알려진 잘못된 API 함수 목록을 더욱 확장합니다 (https://github.com/0xdea/semgrep-rules 참조).
- 더 많은 사례를 처리하기 위해
normalize_name의 정규화 범위를 확장하는 것을 고려합니다. - VulFi 및 VulnFanatic 스타일의 기본 규칙 세트를 구현합니다.