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
Tools/GitHubGitHub/xv4l3x/hermit
Android-SicherheitStatische AnalyseiOS-SicherheitCode-AnalyseDynamische Code-Analyse (DAST)Reverse EngineeringDebuggerMobile SicherheitDienstprogramme & FrameworksBinäranalyse
GitHubxv4l3x/hermit
72106vor 20 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 strukturell Hermes-Bytecode (HBC), das Format, in dem React-Native-Apps ihr JavaScript ausliefern. Öffne eine .hbc-Datei, durchstöbere ihre Funktionen, lies das dekompilierte JavaScript, bearbeite Anweisungen, 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 Anweisungen 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 wird Byte für Byte unverändert zurückgeschrieben.

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

Funktionen

  • Parser: Header, String-Tabelle (inklusive UTF-16- und Overflow-Einträgen), Funktionstabelle (inklusive Overflow-Headern und gemeinsam genutzten Bytecode-Bodies), Literal-Puffer, Exception-Handler, Debug-Informationen, Funktions-Quelltexttabelle.
  • Disassembler mit versionsspezifischen Opcode-Tabellen (94, 95, 96).
  • Kontrollflussgraph mit DOT-Export, Aufrufgraph, String-Querverweisen, Metro-Modul-Wiederherstellung.
  • Decompiler vom CFG zu lesbarem JavaScript: if/else, Schleifen, try/catch, Closures, Array- und Objekt-Literale. Deterministisch, keine KI.
  • Struktureller Patcher: einen Funktionskörper bearbeiten, String- und Literal- Werte ändern, eine Funktion hinzufügen. Branch-Relaxation, Exception-Handler-Verschiebung, Overflow-Funktionsheader, byte-identischer Round-Trip.
  • 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, das noch nicht unterstützt wird. Formatnotizen 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-Binaries sind nicht signiert. Nach dem Herunterladen das Quarantäne-Flag einmalig entfernen: xattr -dr com.apple.quarantine hermit-0.1.0-macos-arm64. Die Linux-Builds benötigen glibc 2.35 oder neuer. Der Befehl cfg 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

Voraussetzungen

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

Kompilieren

Alles aus diesem Verzeichnis heraus ausführen (demjenigen, das CMakeLists.txt enthält):

cmake -B build
cmake --build build -j

Dies erstellt die statische Bibliothek libhbc, das Python-Modul _libhbc (in build/bindings/), die Kommandozeilenwerkzeuge (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 ausgeschlossen werden, zum Beispiel für ein Release:

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

Nach jeder Änderung an core/ oder bindings/ mit demselben Befehl neu bauen.

macOS: Wenn die Verknüpfung mit einem Fehler über ein fehlerhaftes SDK fehlschlägt, richten Sie 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ügen Sie sein Build-Verzeichnis zu PYTHONPATH hinzu, wann immer Sie hermit ausführen:

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

Eine .hbc-Datei erhalten

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

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

Wenn die Datei mit den Bytes C6 1F BC 03 C1 03 19 1F beginnt, handelt es sich um Hermes-Bytecode. Die REPL öffnet nur Dateien mit der Endung .hbc, also benennen Sie 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 Quellcode erstellen

Um kleine, kontrollierte Eingaben zu erhalten, kompiliere JavaScript oder TypeScript mit einem Hermes- Compiler, der HBC 96 ausgibt (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: no debug info

Das Paket seeder/ automatisiert dies für die Beispielprogramme in seeder/samples/ und schreibt die Ergebnisse nach 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 schreibt <name>_g0.hbc ohne Debug-Informationen, --debug schreibt <name>_g.hbc mit vollständigen Debug-Informationen. .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.

Verwendung der REPL

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

Ohne ein Dateiargument startet die REPL leer; verwende open <file.hbc>. Die Eingabeaufforderung zeigt die HBC-Version und den Dateinamen, mit einem +, wenn ungespeicherte Änderungen vorliegen: [hbc v96 | app+] >. Der Verlauf 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
Tool herunterladen