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
haruspex — Assistant de recherche de vulnérabilités qui extrait du pseudo-code du décompilateur IDA Hex-Rays. | Kitploit
Outils/GitHubGitHub/0xdea/haruspex
Analyse Statique de Code (SAST)Analyse des VulnérabilitésRétro-ingénierieAnalyse de Binaires
GitHub0xdea/haruspex

haruspex

Assistant de recherche de vulnérabilités qui extrait du pseudo-code du décompilateur IDA Hex-Rays.

Voir le dépôt
1311044il 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 →
Partager
Site web

haruspex

build doc

« Le hacking est la discipline qui consiste à remettre en question toutes ses hypothèses, tout le temps. »

-- Dave Aitel

Haruspex est un plugin headless IDA ultra-rapide qui extrait le pseudocode généré par le décompilateur d'IDA dans un format qui devrait convenir à une importation dans un IDE, ou à une analyse par des outils d'analyse statique tels que Semgrep, weggli, ou oneiromancer.

Fonctionnalités

  • Expérience utilisateur headless ultra-rapide grâce à IDA 9.x et aux bindings Rust idalib-rs.
  • Prise en charge de cibles binaires pour toute architecture implémentée par le décompilateur Hex-Rays d'IDA.
  • Le pseudocode de chaque fonction est stocké dans un fichier séparé dans le répertoire de sortie pour une inspection facile.
  • Les définitions de types globales et par fonction sont extraites dans des fichiers d'en-tête à côté du pseudocode.
  • Des crates externes peuvent invoquer [decompile_to_file] pour décompiler une fonction et sauvegarder son pseudocode et ses définitions de types sur disque, en distinguant les fonctions qui ne peuvent pas être décompilées des erreurs telles qu'une licence Hex-Rays indisponible.

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/Haruspex.java
  • https://github.com/0xdea/semgrep-rules
  • https://github.com/0xdea/weggli-patterns
  • https://docs.hex-rays.com/release-notes/9_0#headless-processing-with-idalib
  • https://github.com/idalib-rs/idalib
  • https://github.com/xorpse/parascope
  • https://hnsecurity.it/blog/automating-binary-vulnerability-discovery-with-ghidra-and-semgrep

Installation

Le moyen le plus simple d'obtenir la dernière version est via crates.io :

  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 :
    export IDADIR=/path/to/ida # if not set, the build script will check common locations
    cargo install haruspex --locked
    
    Sous Windows, en revanche, utilisez les commandes suivantes :
    $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 haruspex --locked
    

Compilation

Alternativement, vous pouvez compiler depuis les sources :

  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 :
    git clone --depth 1 https://github.com/0xdea/haruspex
    cd haruspex
    export IDADIR=/path/to/ida # if not set, the build script will check common locations
    cargo build --release --locked
    
    Sous Windows, en revanche, utilisez les commandes suivantes :
    git clone --depth 1 https://github.com/0xdea/haruspex
    cd haruspex
    $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. Assurez-vous que la variable d'environnement IDADIR est définie si votre installation d'IDA se trouve dans un emplacement non standard.
  3. Exécutez comme suit :
    haruspex <binary_file>
    
  4. Retrouvez le pseudocode extrait et les définitions de types dans le répertoire de sortie à côté de <binary_file>, nommé d'après celui-ci avec son extension, le cas échéant, remplacée par .dec (par exemple, foo.exe et foo produisent tous deux foo.dec, donc les binaires qui ne diffèrent que par leur extension partagent le même répertoire de sortie) :
    vim foo.dec
    code foo.dec
    

Compatibilité

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

Version d'IDADernière version compatible
v9.0.240925v0.2.4
v9.0.241217v0.3.5
v9.1.250226v0.6.2
v9.2.250908v0.7.5
v9.3.260213v0.8.1
v9.3.260327v0.9.0
v9.3.260421v0.9.3
v9.4.260714version actuelle
v9.4.260915version actuelle

[!NOTE] Consultez la documentation d'idalib-rs pour plus d'informations.

Crédits

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

  • HN Security
  • Hex-Rays via leur Contributor Program

Journal des modifications

  • CHANGELOG.md

TODO

  • Ajouter un test de régression Semgrep CI pour s'assurer que le pourcentage de lignes analysées ne diminue pas.
  • Utiliser l'extension .cpp au lieu de .c pour produire le pseudocode (voir ce ticket) ?
  • Implémenter une sortie sérialisée pour faciliter l'analyse et le parsing automatisés.
  • Intégrer avec le scan Semgrep (voir https://github.com/0xdea/semgrep-rules).
  • Intégrer avec le scan weggli (voir https://github.com/0xdea/weggli-patterns).
  • Améliorer la sortie du décompilateur dans le style de HexRaysPyTools et abyss.
  • Implémenter l'analyse parallèle (voir https://github.com/fugue-re/fugue-mptp).
Télécharger l’outil