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
hermit — Inspecte, décompile et applique des correctifs structurels au bytecode Hermes (HBC) des applications React Native, avec un REPL de style GDB, un CFG, un décompilateur et un patcheur de re-sérialisation. | Kitploit
Outils/GitHubGitHub/xv4l3x/hermit
Sécurité AndroidAnalyse StatiqueSécurité iOSAnalyse de CodeAnalyse Dynamique de Code (DAST)Rétro-ingénierieDébogueursSécurité MobileUtilitaires et FrameworksAnalyse de Binaires
GitHubxv4l3x/hermit
72103il y a 20 joursPas encore vérifié

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

hermit

Inspecte, décompile et applique des correctifs structurels au bytecode Hermes (HBC) des applications React Native, avec un REPL de style GDB, un CFG, un décompilateur et un patcheur de re-sérialisation.

Voir le dépôt

Hermit

Boîte à outils interactive de rétro-ingénierie et de manipulation pour Hermes.

hermit inspecte, décompile et modifie structurellement le bytecode Hermes (HBC), le format dans lequel les applications React Native embarquent leur JavaScript. Ouvrez un fichier .hbc, parcourez ses fonctions, lisez le JavaScript décompilé, modifiez les instructions, les chaînes et les littéraux dans un éditeur interactif, puis réécrivez un fichier que la VM Hermes charge et exécute toujours.

Contrairement aux outils qui se contentent d'analyser le bytecode, ou qui le modifient sur place sans changer les tailles, hermit re-sérialise l'intégralité du fichier. Il peut insérer et supprimer des instructions, relocaliser les sauts et les gestionnaires d'exceptions, reconstruire les tables de chaînes et de littéraux, ajouter de nouvelles fonctions et recalculer le pied de page SHA-1. Un fichier non modifié effectue un aller-retour octet pour octet.

  • Fonctionnalités
  • Versions HBC prises en charge
  • Binaires précompilés
  • Compilation
  • Obtenir un fichier .hbc
  • Utiliser le REPL
  • Édition et modification
  • Outils en ligne de commande
  • API Python
  • Tests
  • Structure du projet
  • Limitations

Fonctionnalités

  • Analyseur : en-tête, table de chaînes (entrées UTF-16 et de débordement incluses), table de fonctions (en-têtes de débordement et corps de bytecode partagés inclus), tampons de littéraux, gestionnaires d'exceptions, informations de débogage, table des sources de fonctions.
  • Désassembleur avec des tables d'opcodes par version (94, 95, 96).
  • Graphe de flux de contrôle avec export DOT, graphe d'appels, références croisées de chaînes, récupération des modules Metro.
  • Décompilateur du CFG vers un JavaScript lisible : if/else, boucles, try/catch, fermetures, littéraux de tableaux et d'objets. Déterministe, sans IA.
  • Modificateur structurel : modifier le corps d'une fonction, changer les valeurs des chaînes et des littéraux, ajouter une fonction. Relaxation des branches, relocalisation des gestionnaires d'exceptions, en-têtes de fonctions de débordement, aller-retour identique octet pour octet.
  • REPL interactif (style GDB) avec un éditeur de bytecode plein écran.

Versions HBC prises en charge

VersionRôle
96Cible principale. Ce qu'utilisent les applications React Native en production : RN 0.73 à 0.83, et RN 0.84+ avec Hermes V1 désactivé.
94, 95Validées. Le format est identique à la version 96, seules les tables d'opcodes diffèrent.

Les applications compilées avec Hermes V1 (par défaut à partir de RN 0.84) produisent du HBC 98, qui n'est pas encore pris en charge. Les notes sur le format se trouvent dans doc/hbc-format/.

Binaires précompilés

Chaque version propose des archives pour macOS et Linux, sur arm64 et x86_64. Aucun Python ni compilateur n'est nécessaire :

ArchiveContenu
hermit-<version>-<platform>.tar.gzLe REPL interactif : ./hermit file.hbc.
hermit-tools-<version>-<platform>.tar.gzLes outils en ligne de commande autonomes hbc_*.
SHA256SUMSSommes de contrôle : shasum -a 256 -c SHA256SUMS.
tar -xzf hermit-0.1.0-macos-arm64.tar.gz
./hermit-0.1.0-macos-arm64/hermit --version

Les binaires macOS ne sont pas signés. Après le téléchargement, effacez une fois le drapeau de quarantaine : xattr -dr com.apple.quarantine hermit-0.1.0-macos-arm64. Les builds Linux nécessitent glibc 2.35 ou une version plus récente. La commande cfg nécessite toujours l'installation de graph-easy.

Les releases sont produites par .github/workflows/release.yml lorsqu'un tag v* est poussé, en utilisant packaging/build-release.sh, que vous pouvez également exécuter localement.

Build

Prérequis

  • CMake 3.20 ou une version plus récente et un compilateur C++20 (Clang ou GCC).
  • Python 3.10+ avec les en-têtes de développement (nécessaires à pybind11).
  • Accès réseau lors de la première configuration : pybind11 et Catch2 sont récupérés via FetchContent de CMake, sauf s'ils sont déjà installés.
  • Facultatif : graph-easy pour la commande cfg (cpanm Graph::Easy), less comme paginateur.

Compilation

Exécutez toutes les commandes depuis ce répertoire (celui contenant CMakeLists.txt) :

cmake -B build
cmake --build build -j

Cela construit la bibliothèque statique libhbc, le module Python _libhbc (dans build/bindings/), les outils en ligne de commande (dans build/tools/) et les tests unitaires. Le REPL n'a besoin que du module Python :

cmake --build build --target _libhbc

Les outils et les tests peuvent être exclus d'une compilation, par exemple pour une version de publication :

cmake -B build -DCMAKE_BUILD_TYPE=Release -DHERMIT_BUILD_TOOLS=OFF -DHERMIT_BUILD_TESTS=OFF

Recompilez avec la même commande après chaque modification de core/ ou bindings/.

macOS : si l'édition de liens échoue avec une erreur concernant un SDK mal formé, pointez la compilation vers un SDK complet, par exemple SDKROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX26.5.sdk cmake --build build.

Environnement Python

python3 -m venv .venv
.venv/bin/pip install -r requirements.txt

Le module _libhbc n'est pas installé dans le virtualenv. Ajoutez son répertoire de build à PYTHONPATH chaque fois que vous exécutez hermit :

export PYTHONPATH=$PWD/build/bindings:$PYTHONPATH

Obtenir un fichier .hbc

Une application React Native livre son bundle sous forme de fichier brut :

PlateformeEmplacement dans le paquet
Android (.apk, un zip)assets/index.android.bundle
iOS (.ipa, un zip)Payload/<App>.app/main.jsbundle

Si le fichier commence par les octets C6 1F BC 03 C1 03 19 1F, il s'agit de bytecode Hermes. Le REPL n'ouvre que les fichiers portant l'extension .hbc, il faut donc le renommer :

unzip -p app.apk assets/index.android.bundle > app.hbc
xxd app.hbc | head -1      # c61f bc03 c103 191f ...

N'analysez que les applications que vous êtes autorisé à étudier, par exemple les vôtres, ou les applications open source à des fins de recherche.

Construire des bundles de test à partir des sources

Pour obtenir des entrées petites et contrôlées, compilez du JavaScript ou du TypeScript avec un compilateur Hermes qui produit du HBC 96 (par exemple hermesc de react-native 0.73 à 0.83, sous node_modules/react-native/sdks/hermesc/) :

hermes -emit-binary -g0 -out hello.hbc hello.js     # -g0: no debug info

Le paquet seeder/ automatise cela pour les programmes d'exemple dans seeder/samples/ et écrit les résultats dans seeder/corpus/ :

.venv/bin/python -m seeder.compile                       # all samples
.venv/bin/python -m seeder.compile --g0 seeder/samples/loop_sum.js
.venv/bin/python -m seeder.compile --debug seeder/samples/greeting.js

--g0 écrit <name>_g0.hbc sans informations de débogage, --debug écrit <name>_g.hbc avec les informations de débogage complètes. Les échantillons .ts nécessitent tsc dans votre PATH ; le compilateur est pris depuis --hermes (par défaut hermes). seeder/build-real-bundle.sh compile une véritable application React Native open source en un .hbc.

Utilisation du REPL

export PYTHONPATH=$PWD/build/bindings:$PYTHONPATH
.venv/bin/python -m cli.main app.hbc
Télécharger l’outil