Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
rhabdomancer — Assistent für Schwachstellenforschung, der Aufrufe potenziell unsicherer API-Funktionen in einer Binärdatei lokalisiert. | Kitploit
Tools/GitHubGitHub/0xdea/rhabdomancer
Statische AnalyseSchwachstellenanalyseReverse EngineeringBinäranalyse
GitHub0xdea/rhabdomancer

rhabdomancer

Assistent für Schwachstellenforschung, der Aufrufe potenziell unsicherer API-Funktionen in einer Binärdatei lokalisiert.

Repository anzeigen
1311531vor 4 TagenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Webseite
Teilen
# rhabdomancer

[![](https://img.shields.io/github/stars/0xdea/rhabdomancer.svg?style=flat&color=yellow)](https://github.com/0xdea/rhabdomancer)
[![](https://img.shields.io/crates/v/rhabdomancer?style=flat&color=green)](https://crates.io/crates/rhabdomancer)
[![](https://img.shields.io/crates/d/rhabdomancer?style=flat&color=red)](https://crates.io/crates/rhabdomancer)
[![](https://img.shields.io/badge/ida-9.4-violet)](https://hex-rays.com/ida-pro)
[![](https://img.shields.io/badge/[email protected])](https://twitter.com/0xdea)
[![](https://img.shields.io/badge/[email protected])](https://infosec.exchange/@raptor)
[![build](https://github.com/0xdea/rhabdomancer/actions/workflows/build.yml/badge.svg)](https://github.com/0xdea/rhabdomancer/actions/workflows/build.yml)
[![doc](https://github.com/0xdea/rhabdomancer/actions/workflows/doc.yml/badge.svg)](https://github.com/0xdea/rhabdomancer/actions/workflows/doc.yml)

> "Der Weg zu ausnutzbaren Bugs ist mit nicht ausnutzbaren Bugs gepflastert."
>
> -- Mark Dowd

Rhabdomancer ist ein blitzschnelles IDA-Headless-Plugin, das Aufrufe potenziell unsicherer API-Funktionen in einer Binärdatei lokalisiert. Auditoren können von diesen Kandidatenpunkten aus zurückverfolgen, um Pfade zu finden, die Zugriff auf nicht vertrauenswürdige Eingaben ermöglichen.

![](https://assets.kitploit.com/production/public/readmes/49813/668212019df8d7b843ca6bcd0e68432321528d6d1a229ce774358fa80fbecfb2.png)

## Funktionen

- Blitzschnelle, headless Benutzererfahrung dank IDA 9.x und der idalib-rs Rust-Bindings.
- Unterstützung für C/C++-Binärziele, die für jede von IDA implementierte Architektur kompiliert wurden.
- Fundstellen von Aufrufen schlechter API-Funktionen werden auf stdout ausgegeben und in der IDB markiert.
  - Aufrufstellen in Bibliothekscode, der von IDA erkannt wird (z. B. eine statisch gelinkte Runtime, die durch FLIRT-Signaturen erkannt wurde), werden mit `(lib)` gekennzeichnet.
  - Aufrufe über Stubs (z. B. die `.plt`-Einträge von ELF-Binärdateien oder die Import-Stubs von PE- und Mach-O-Binärdateien, die als Thunks aufgeführt sind) werden bis zu ihren Aufrufern zurückverfolgt.
  - In ELF-Binärdateien wird eine Funktion bewusst zweimal mit denselben Aufrufstellen aufgeführt: einmal als ihr `.plt`-Stub (als Thunk markiert) und einmal als ihr Import. Jede Aufrufstelle wird in der IDB nur einmal markiert.
- Bekannte schlechte API-Funktionen sind in Stufen der Schlechtigkeit gruppiert, um die Priorisierung der Audit-Arbeit zu erleichtern.
  - [BAD 0] Hohe Priorität – Funktionen, die allgemein als unsicher gelten.
  - [BAD 1] Mittlere Priorität – Interessante Funktionen, die auf unsichere Anwendungsfälle geprüft werden sollten.
  - [BAD 2] Niedrige Priorität – Codepfade, die diese Funktionen betreffen, sollten sorgfältig geprüft werden.
- Die Liste der bekannten schlechten API-Funktionen ist eingebaut und kann einfach mit einer Konfigurationsdatei auf Basis von `conf/rhabdomancer.toml` angepasst werden.
- Funktionsnamen werden ohne folgende Dekorationen abgeglichen: führende Punkte und Unterstriche (z. B. `_strcpy`), die Präfixe von Bibliotheks-Aliassen (z. B. `__o_malloc` in der Universal CRT, `__libc_system` und `__GI___snprintf` in glibc) und, nur für Stubs und solche Aliase, das numerische Suffix, das IDA an bereits verwendete Namen anhängt (z. B. `memset_0`).

> [!NOTE]
> Fortifizierte Funktionen (z. B. `__strcpy_chk`, das anstelle von `strcpy` verwendet wird, wenn mit `_FORTIFY_SOURCE` gebaut wird) werden bewusst nicht abgeglichen, da sie die geprüften Varianten der aufgeführten Funktionen sind. Um auch ihre Aufrufe zu markieren, füge sie explizit zu einer benutzerdefinierten Konfiguration hinzu (z. B. `"__strcpy_chk"` mit derselben Priorität wie `strcpy`).

## Artikel

- <https://hex-rays.com/blog/streamlining-vulnerability-research-idalib-rust-bindings>
- <https://hnsecurity.it/blog/streamlining-vulnerability-research-with-ida-pro-and-rust>

## Siehe auch

- <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>

## Installation

Der einfachste Weg, die neueste Version zu erhalten, ist über [crates.io](https://crates.io/crates/rhabdomancer):

1. IDA herunterladen, installieren und konfigurieren (siehe <https://hex-rays.com/ida-pro>).
2. LLVM/Clang installieren (siehe <https://rust-lang.github.io/rust-bindgen/requirements.html>).
3. Unter Linux/macOS wie folgt installieren:
   ```sh
   export IDADIR=/path/to/ida # if not set, the build script will check common locations
   cargo install rhabdomancer --locked
   ```
   Unter Windows verwenden Sie stattdessen die folgenden Befehle:
   ```powershell
   $env:LIBCLANG_PATH="\path\to\clang+llvm\bin"
   $env:PATH="\path\to\ida;$env:PATH"
   $env:IDADIR="\path\to\ida" # if not set, the build script will check common locations
   cargo install rhabdomancer --locked
   ```

## Kompilieren

Alternativ können Sie aus dem [Quellcode](https://github.com/0xdea/rhabdomancer) bauen:

1. Laden Sie IDA herunter, installieren und konfigurieren Sie es (siehe <https://hex-rays.com/ida-pro>).
2. Installieren Sie LLVM/Clang (siehe <https://rust-lang.github.io/rust-bindgen/requirements.html>).
3. Unter Linux/macOS kompilieren Sie wie folgt:
   ```sh
   git clone --depth 1 https://github.com/0xdea/rhabdomancer
   cd rhabdomancer
   export IDADIR=/path/to/ida # if not set, the build script will check common locations
   cargo build --release --locked
   ```
   Unter Windows verwenden Sie stattdessen die folgenden Befehle:
   ```powershell
   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" # if not set, the build script will check common locations
   cargo build --release --locked
   ```

## Verwendung

1. Stellen Sie sicher, dass IDA ordnungsgemäß mit einer gültigen Lizenz konfiguriert ist.
2. Passen Sie optional die Liste der bekannten bösartigen API-Funktionen an: Kopieren Sie
   [`conf/rhabdomancer.toml`](https://github.com/0xdea/rhabdomancer/blob/master/conf/rhabdomancer.toml) (wählen Sie das Tag,
   das Ihrer installierten Version entspricht, für deren exakte integrierte Liste), bearbeiten Sie die Kopie und setzen Sie die
   Umgebungsvariable `RHABDOMANCER_CONFIG` auf deren Pfad. Die Datei muss die Arrays `high`, `medium` und `low` definieren und keine anderen Schlüssel.
   Andernfalls wird die integrierte Liste verwendet, die zur Build-Zeit aus `conf/rhabdomancer.toml` in die Binärdatei eingebettet wird
   (das Bearbeiten dieser Datei erfordert einen Neubuild).
3. Stellen Sie sicher, dass die Umgebungsvariable `IDADIR` gesetzt ist, falls sich Ihre IDA-Installation an einem nicht standardmäßigen Ort befindet.
4. Führen Sie es wie folgt aus:
   ```sh
   rhabdomancer <binary_file>
   ```
   Eine vorhandene `.i64`-IDB-Datei wird aktualisiert; andernfalls wird eine neue IDB-Datei erstellt.
5. Öffnen Sie die resultierende `.i64`-IDB-Datei mit IDA.
6. Wählen Sie `View` > `Open subviews` > `Bookmarks`
7. Genießen Sie Ihre Ergebnisse, die bequem in einem IDA-Fenster gesammelt werden.

> [!NOTE]
> Rhabdomancer fügt außerdem Kommentare an markierten Aufrufstellen hinzu. Sowohl Lesezeichen als auch Kommentare werden mit
> `[BAD n] <function_name>` gekennzeichnet, wobei `n` die Prioritätsstufe ist (0 = hoch, 1 = mittel, 2 = niedrig), damit Skripte
> IDBs danach durchsuchen können. Dieses Format ist über Releases hinweg stabil.

## Kompatibilität

Offiziell unterstützt wird nur die neueste IDA-Version, aber ältere Versionen können ebenfalls funktionieren. Die folgende Tabelle
fasst die neueste kompatible Version für jede IDA-Version zusammen:

| IDA-Version | Neueste kompatible Veröffentlichung |
| ----------- | ------------------------- |
| 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 | aktuelle Veröffentlichung           |
| v9.4.260915 | aktuelle Veröffentlichung           |

> [!NOTE]
> Weitere Informationen finden Sie in der Dokumentation zu [idalib-rs](https://github.com/idalib-rs/idalib).

## Danksagungen

Die Entwicklung dieses Projekts wurde von den folgenden Organisationen unterstützt:

- [HN Security](https://hnsecurity.it)
- [Hex-Rays](https://hex-rays.com) über ihr [Contributor Program](https://hex-rays.com/contributor-program)

## Änderungsprotokoll

- [CHANGELOG.md](https://github.com/0xdea/rhabdomancer/blob/master/CHANGELOG.md)

## TODO

- Die Liste der bekannten bösartigen API-Funktionen weiter ausbauen (siehe <https://github.com/0xdea/semgrep-rules>).
- Aufrufen durch Thunks außerhalb von `.plt`-Segmenten folgen (z. B. MSVC-Incremental-Linking-`j_`-Thunks).
- Erwägen, das Markieren von Aufrufstellen in von IDA erkanntem Bibliothekscode zu überspringen (derzeit nur mit `(lib)` gekennzeichnet).
- Serialisierte Ausgabe implementieren, um automatisiertes Parsen und Analysieren zu erleichtern.
- Ein grundlegendes Regelset im Stil von [VulFi](https://github.com/Accenture/VulFi)
  und [VulnFanatic](https://github.com/Martyx00/VulnFanatic) implementieren.
Tool herunterladen