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
hermit — Inspiziert, dekompiliert und patcht Hermes-Bytecode (HBC) aus React-Native-Apps strukturell, mit einer GDB-ähnlichen REPL, CFG, Decompiler und re-serialisierendem Patcher. | Kitploit
Tools/GitHubGitHub/xv4l3x/hermit
Android-SicherheitStatische AnalyseiOS-SicherheitCode-AnalyseDynamische Code-Analyse (DAST)Reverse EngineeringDebuggerMobile SicherheitDienstprogramme & FrameworksBinäranalyse
GitHubxv4l3x/hermit
426vor 2 TagenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

hermit

Inspiziert, dekompiliert und patcht Hermes-Bytecode (HBC) aus React-Native-Apps strukturell, mit einer GDB-ähnlichen REPL, CFG, Decompiler und re-serialisierendem Patcher.

Repository anzeigen

hermit

Hermes Reverse Engineering & Manipulation Interactive Toolkit.

hermit inspiziert, dekompiliert und patcht Hermes-Bytecode (HBC) strukturell, das Format, in dem React-Native-Apps ihr JavaScript ausliefern. Öffne eine .hbc-Datei, durchsuche ihre Funktionen, lies das dekompilierte JavaScript, bearbeite Instruktionen, Strings und Literale in einem interaktiven Editor und schreibe eine Datei zurück, die die Hermes-VM weiterhin lädt und ausführt.

Anders als Tools, die Bytecode nur analysieren oder ihn an Ort und Stelle patchen, ohne Größen zu ändern, serialisiert hermit die gesamte Datei neu. Es kann Instruktionen einfügen und löschen, Sprünge und Exception-Handler verschieben, die String- und Literal-Tabellen neu aufbauen, neue Funktionen hinzufügen und den SHA-1-Footer neu berechnen. Eine unveränderte Datei durchläuft einen Byte-für-Byte- Roundtrip.

  • Features
  • Unterstützte HBC-Versionen
  • Vorkompilierte Binärdateien
  • Build
  • Eine .hbc-Datei erhalten
  • Die REPL verwenden
  • Bearbeiten und Patchen
  • Kommandozeilen-Tools
  • Python-API
  • Tests
  • Projektstruktur
  • Einschränkungen

Features

  • Parser: Header, String-Tabelle (inklusive UTF-16- und Overflow-Einträgen), Funktionstabelle (inklusive Overflow-Headern und geteilten Bytecode-Bodies), Literal-Buffer, Exception-Handler, Debug-Info, Funktions-Quelltexttabelle.
  • Disassembler mit versionsspezifischen Opcode-Tabellen (94, 95, 96).
  • Kontrollflussgraph mit DOT-Export, Aufrufgraph, String-Querverweisen, Metro-Modul-Wiederherstellung.
  • Dekompiler vom CFG zu lesbarem JavaScript: if/else, Schleifen, try/catch, Closures, Array- und Objekt-Literale. Deterministisch, keine KI.
  • Struktureller Patcher: Bearbeite einen Funktionskörper, ändere String- und Literal-Werte, füge eine Funktion hinzu. Branch-Relaxation, Exception-Handler- Verschiebung, Overflow-Funktionsheader, byte-identischer Roundtrip.
  • Interaktive REPL (GDB-Stil) mit einem Vollbild-Bytecode-Editor.

Unterstützte HBC-Versionen

VersionRolle
96Primäres Ziel. Was ausgelieferte React-Native-Apps verwenden: RN 0.73 bis 0.83, und RN 0.84+ mit deaktiviertem Hermes V1.
94, 95Validiert. Das Format ist identisch zu 96, nur die Opcode-Tabellen unterscheiden sich.

Apps, die mit Hermes V1 (dem Standard ab RN 0.84) gebaut wurden, erzeugen HBC 98, was noch nicht unterstützt wird. Format-Notizen befinden sich in doc/hbc-format/.

Vorkompilierte Binärdateien

Jedes Release enthält Archive für macOS und Linux, auf arm64 und x86_64. Es wird weder Python noch ein Compiler benötigt:

ArchivInhalt
hermit-<version>-<platform>.tar.gzDie interaktive REPL: ./hermit file.hbc.
hermit-tools-<version>-<platform>.tar.gzDie eigenständigen hbc_*-Kommandozeilen-Tools.
SHA256SUMSPrüfsummen: shasum -a 256 -c SHA256SUMS.
tar -xzf hermit-0.1.0-macos-arm64.tar.gz
./hermit-0.1.0-macos-arm64/hermit --version

Die macOS-Binärdateien sind nicht signiert. Nach dem Herunterladen entferne einmalig das Quarantäne-Flag: xattr -dr com.apple.quarantine hermit-0.1.0-macos-arm64. Die Linux-Builds benötigen glibc 2.35 oder neuer. Der cfg-Befehl benötigt weiterhin ein installiertes graph-easy.

Releases werden von .github/workflows/release.yml erzeugt, wenn ein v*-Tag gepusht wird, unter Verwendung von packaging/build-release.sh, das du auch lokal ausführen kannst.

Build

Anforderungen

  • CMake 3.20 oder neuer und ein C++20-Compiler (Clang oder GCC).
  • Python 3.10+ mit Entwicklungs-Headern (von pybind11 benötigt).
  • Netzwerkzugriff beim ersten Konfigurieren: pybind11 und Catch2 werden mit CMake FetchContent geholt, sofern sie nicht bereits installiert sind.
  • Optional: graph-easy für den cfg- Befehl (cpanm Graph::Easy), less als dessen Pager.

Kompilieren

Führe alles aus diesem Verzeichnis aus (dem, das CMakeLists.txt enthält):

cmake -B build
cmake --build build -j

Dies baut die statische Bibliothek libhbc, das Python-Modul _libhbc (in build/bindings/), die Kommandozeilen-Tools (in build/tools/) und die Unit- Tests. Die REPL benötigt nur das Python-Modul:

cmake --build build --target _libhbc

Die Tools und die Tests können aus einem Build weggelassen werden, zum Beispiel für ein Release:

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

Baue mit demselben Befehl nach jeder Änderung an core/ oder bindings/ neu.

macOS: Wenn das Linken mit einem Fehler über ein fehlerhaftes SDK fehlschlägt, richte den Build auf ein vollständiges SDK aus, zum Beispiel SDKROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX26.5.sdk cmake --build build.

Python-Umgebung

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

Das Modul _libhbc wird nicht in die virtuelle Umgebung installiert. Füge sein Build-Verzeichnis zu PYTHONPATH hinzu, wann immer du hermit ausführst:

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

Eine .hbc-Datei erhalten

Eine React-Native-App liefert ihr Bundle als einfache Datei aus:

PlattformOrt innerhalb des Pakets
Android (.apk, ein Zip)assets/index.android.bundle
iOS (.ipa, ein Zip)Payload/<App>.app/main.jsbundle

Wenn die Datei mit den Bytes C6 1F BC 03 C1 03 19 1F beginnt, ist es Hermes- Bytecode. Die REPL öffnet nur Dateien mit der Endung .hbc, also benenne sie um:

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

Analysiere nur Apps, die du untersuchen darfst, zum Beispiel deine eigenen oder Open-Source-Apps zu Forschungszwecken.

Test-Bundles aus dem Quelltext bauen

Um kleine, kontrollierte Eingaben zu erhalten, kompiliere JavaScript oder TypeScript mit einem Hermes-Compiler, der HBC 96 erzeugt (zum Beispiel hermesc aus react-native 0.73 bis 0.83, unter node_modules/react-native/sdks/hermesc/):

hermes -emit-binary -g0 -out hello.hbc hello.js     # -g0: keine Debug-Info

Das seeder/-Paket automatisiert dies für die Beispielprogramme in seeder/samples/ und schreibt die Ergebnisse nach seeder/corpus/:

.venv/bin/python -m seeder.compile                       # alle 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 schreibt <name>_g0.hbc ohne Debug-Info, --debug schreibt <name>_g.hbc mit vollständiger Debug-Info. .ts-Samples benötigen tsc in deinem PATH; der Compiler wird aus --hermes entnommen (Standard hermes). seeder/build-real-bundle.sh baut eine echte Open-Source-React-Native-App in eine .hbc.

Die REPL verwenden

export PYTHONPATH=$PWD/build/bindings:$PYTHONPATH
.venv/bin/python -m cli.main app.hbc

Ohne Dateiargument startet die REPL leer; verwende open <file.hbc>. Der Prompt zeigt die HBC-Version und den Dateinamen, mit einem +, wenn es ungespeicherte Änderungen gibt: [hbc v96 | app+] >. Die Historie wird in ~/.hermit_history gespeichert und Befehle werden per Tab vervollständigt.

> info
> strings --identifiers filter:fetch
> functions
> disasm func:12
> decompile func:isPremium
> xrefs string:"api.example.com"
> edit func:isPremium
> patch patched.hbc

Funktionen werden über Index oder Name adressiert (func:12, func:isPremium), Strings über Index oder Wert (string:42, string:"hello"), Literal-Stellen über Index (array:7).

Tool herunterladen