Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
rhabdomancer — Assistant de recherche de vulnérabilités qui localise les appels à des fonctions API potentiellement non sécurisées dans un fichier binaire. | Kitploit
Outils/GitHubGitHub/0xdea/rhabdomancer
Analyse StatiqueAnalyse des VulnérabilitésRétro-ingénierieAnalyse de Binaires
GitHub0xdea/rhabdomancer

rhabdomancer

Assistant de recherche de vulnérabilités qui localise les appels à des fonctions API potentiellement non sécurisées dans un fichier binaire.

Voir le dépôt
1311531il y a 4 joursVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Site web
Partager
# 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)

> "La route vers les bugs exploitables est pavée de bugs inexploitables."
>
> -- Mark Dowd

Rhabdomancer est un plugin headless IDA ultra-rapide qui localise les appels à des fonctions d'API potentiellement non sécurisées dans
un fichier binaire. Les auditeurs peuvent remonter la trace depuis ces points candidats pour trouver des chemins permettant l'accès à des entrées non fiables.

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

## Fonctionnalités

- Expérience utilisateur headless ultra-rapide grâce à IDA 9.x et aux bindings Rust idalib-rs.
- Prise en charge des cibles binaires C/C++ compilées pour toute architecture implémentée par IDA.
- Les emplacements des appels à des fonctions d'API dangereuses sont affichés sur stdout et marqués dans l'IDB.
  - Les emplacements d'appel dans du code de bibliothèque reconnu par IDA (par exemple, un runtime lié statiquement reconnu par les signatures FLIRT) sont
    étiquetés `(lib)`.
  - Les appels via des stubs (par exemple, les entrées `.plt` des binaires ELF ou les stubs d'import des binaires PE et Mach-O,
    listés comme thunks) sont retracés jusqu'à leurs appelants.
  - Dans les binaires ELF, une fonction est délibérément listée deux fois avec les mêmes emplacements d'appel : une fois comme son stub `.plt`
    (marqué comme thunk) et une fois comme son import. Chaque emplacement d'appel n'est marqué qu'une seule fois dans l'IDB.
- Les fonctions d'API dangereuses connues sont regroupées en niveaux de dangerosité pour aider à prioriser le travail d'audit.
  - [BAD 0] Priorité élevée - Fonctions généralement considérées comme non sécurisées.
  - [BAD 1] Priorité moyenne - Fonctions intéressantes qui devraient être vérifiées pour des cas d'utilisation non sécurisés.
  - [BAD 2] Priorité faible - Les chemins de code impliquant ces fonctions devraient être soigneusement vérifiés.
- La liste des fonctions d'API dangereuses connues est intégrée et peut être facilement personnalisée avec un fichier de configuration basé sur
  `conf/rhabdomancer.toml`.
- Les noms de fonctions sont mis en correspondance sans ces décorations : points et underscores initiaux (par exemple, `_strcpy`), les préfixes
  des alias de bibliothèque (par exemple, `__o_malloc` dans l'Universal CRT, `__libc_system` et `__GI___snprintf` dans glibc), et,
  pour les stubs et ces alias uniquement, le suffixe numérique qu'IDA ajoute aux noms déjà utilisés (par exemple, `memset_0`).

> [!NOTE]
> Les fonctions fortifiées (par exemple, `__strcpy_chk`, utilisée à la place de `strcpy` lors de la compilation avec `_FORTIFY_SOURCE`) ne sont
> délibérément pas mises en correspondance, car ce sont les variantes vérifiées des fonctions listées. Pour aussi marquer leurs appels,
> ajoutez-les explicitement à une configuration personnalisée (par exemple, `"__strcpy_chk"` avec la même priorité que `strcpy`).

## Articles

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

## Voir aussi

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

Le moyen le plus simple d'obtenir la dernière version est via [crates.io](https://crates.io/crates/rhabdomancer) :

1. Téléchargez, installez et configurez IDA (voir <https://hex-rays.com/ida-pro>).
2. Installez LLVM/Clang (voir <https://rust-lang.github.io/rust-bindgen/requirements.html>).
3. Sous Linux/macOS, installez comme suit :
   ```sh
   export IDADIR=/path/to/ida # if not set, the build script will check common locations
   cargo install rhabdomancer --locked
   ```
   Sous Windows, utilisez plutôt les commandes suivantes :
   ```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
   ```

## Compilation

Alternativement, vous pouvez compiler à partir des [sources](https://github.com/0xdea/rhabdomancer) :

1. Téléchargez, installez et configurez IDA (voir <https://hex-rays.com/ida-pro>).
2. Installez LLVM/Clang (voir <https://rust-lang.github.io/rust-bindgen/requirements.html>).
3. Sous Linux/macOS, compilez comme suit :
   ```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
   ```
   Sous Windows, utilisez plutôt les commandes suivantes :
   ```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
   ```

## Utilisation

1. Assurez-vous qu'IDA est correctement configuré avec une licence valide.
2. Personnalisez éventuellement la liste des fonctions API malveillantes connues : copiez
   [`conf/rhabdomancer.toml`](https://github.com/0xdea/rhabdomancer/blob/master/conf/rhabdomancer.toml) (choisissez le tag
   correspondant à votre version installée pour obtenir sa liste intégrée exacte), modifiez la copie, et définissez la variable
   d'environnement `RHABDOMANCER_CONFIG` vers son chemin. Le fichier doit définir les tableaux `high`, `medium` et `low`, et aucune autre clé.
   Sinon, la liste intégrée est utilisée, laquelle est incorporée dans le binaire au moment de la compilation depuis `conf/rhabdomancer.toml`
   (modifier ce fichier nécessite une recompilation).
3. Assurez-vous que la variable d'environnement `IDADIR` est définie si votre installation d'IDA se trouve dans un emplacement non standard.
4. Exécutez comme suit :
   ```sh
   rhabdomancer <binary_file>
   ```
   Tout fichier IDB `.i64` existant sera mis à jour ; sinon, un nouveau fichier IDB sera créé.
5. Ouvrez le fichier IDB `.i64` résultant avec IDA.
6. Sélectionnez `View` > `Open subviews` > `Bookmarks`
7. Profitez de vos résultats commodément rassemblés dans une fenêtre IDA.

> [!NOTE]
> Rhabdomancer ajoute également des commentaires aux emplacements d'appels marqués. Les signets et les commentaires sont tous deux étiquetés comme
> `[BAD n] <function_name>`, où `n` est le niveau de priorité (0 = élevé, 1 = moyen, 2 = faible), afin que les scripts puissent
> les rechercher dans les IDB. Ce format est stable entre les versions.

## Compatibilité

Seule la dernière version d'IDA est officiellement prise en charge, mais les versions antérieures peuvent également fonctionner. Le tableau suivant
résume la dernière version compatible pour chaque version d'IDA :

| Version IDA | Dernière version compatible |
| ----------- | ------------------------- |
| 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 | version actuelle           |
| v9.4.260915 | version actuelle           |

> [!NOTE]
> Consultez la documentation d'[idalib-rs](https://github.com/idalib-rs/idalib) pour plus d'informations.

## Crédits

Le développement de ce projet a été soutenu par les organisations suivantes :

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

## Journal des modifications

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

## À faire

- Enrichir davantage la liste des fonctions API malveillantes connues (voir <https://github.com/0xdea/semgrep-rules>).
- Suivre les appels à travers les thunks en dehors des segments `.plt` (par exemple, les thunks `j_` de l'édition de liens incrémentielle MSVC).
- Envisager d'ignorer le marquage des emplacements d'appels dans le code de bibliothèque reconnu par IDA (actuellement seulement étiqueté `(lib)`).
- Implémenter une sortie sérialisée pour faciliter l'analyse et le traitement automatisés.
- Implémenter un ensemble de règles de base dans le style de [VulFi](https://github.com/Accenture/VulFi)
  et [VulnFanatic](https://github.com/Martyx00/VulnFanatic).
Télécharger l’outil