Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
hermit — Inspecciona, descompila y parchea estructuralmente el bytecode de Hermes (HBC) de aplicaciones React Native, con un REPL estilo GDB, CFG, descompilador y parcheador que reserializa. | Kitploit
Herramientas/GitHubGitHub/xv4l3x/hermit
Seguridad AndroidAnálisis EstáticoSeguridad iOSAnálisis de CódigoAnálisis Dinámico de Código (DAST)Ingeniería InversaDepuradoresSeguridad MóvilUtilidades y FrameworksAnálisis de Binarios
GitHubxv4l3x/hermit
426hace 2 díasAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

hermit

Inspecciona, descompila y parchea estructuralmente el bytecode de Hermes (HBC) de aplicaciones React Native, con un REPL estilo GDB, CFG, descompilador y parcheador que reserializa.

Ver Repositorio

hermit

Hermes Reverse Engineering & Manipulation Interactive Toolkit.

hermit inspecciona, descompila y parchea estructuralmente el bytecode de Hermes (HBC), el formato en el que las aplicaciones de React Native distribuyen su JavaScript. Abre un archivo .hbc, explora sus funciones, lee el JavaScript descompilado, edita instrucciones, cadenas y literales en un editor interactivo, y escribe de vuelta un archivo que la VM de Hermes todavía carga y ejecuta.

A diferencia de las herramientas que solo analizan bytecode, o que lo parchean en el lugar sin cambiar los tamaños, hermit re-serializa el archivo completo. Puede insertar y eliminar instrucciones, reubicar saltos y manejadores de excepciones, reconstruir las tablas de cadenas y literales, añadir nuevas funciones y recalcular el pie de página SHA-1. Un archivo sin modificar se conserva byte a byte.

  • Características
  • Versiones de HBC compatibles
  • Binarios precompilados
  • Compilación
  • Obtener un archivo .hbc
  • Uso del REPL
  • Edición y parcheo
  • Herramientas de línea de comandos
  • API de Python
  • Pruebas
  • Estructura del proyecto
  • Limitaciones

Características

  • Parser: cabecera, tabla de cadenas (incluidas entradas UTF-16 y de desbordamiento), tabla de funciones (incluidas cabeceras de desbordamiento y cuerpos de bytecode compartidos), búferes de literales, manejadores de excepciones, información de depuración, tabla de fuentes de funciones.
  • Desensamblador con tablas de opcodes por versión (94, 95, 96).
  • Grafo de flujo de control con exportación a DOT, grafo de llamadas, referencias cruzadas de cadenas, recuperación de módulos de Metro.
  • Descompilador desde el CFG a JavaScript legible: if/else, bucles, try/catch, closures, literales de arrays y objetos. Determinista, sin IA.
  • Parcheador estructural: edita el cuerpo de una función, cambia valores de cadenas y literales, añade una función. Relajación de ramas, reubicación de manejadores de excepciones, cabeceras de funciones de desbordamiento, round-trip idéntico byte a byte.
  • REPL interactivo (estilo GDB) con un editor de bytecode a pantalla completa.

Versiones de HBC compatibles

VersiónRol
96Objetivo principal. La que usan las aplicaciones de React Native en producción: RN 0.73 a 0.83, y RN 0.84+ con Hermes V1 deshabilitado.
94, 95Validadas. El formato es idéntico al 96, solo difieren las tablas de opcodes.

Las aplicaciones compiladas con Hermes V1 (el predeterminado desde RN 0.84) emiten HBC 98, que aún no es compatible. Las notas del formato están en doc/hbc-format/.

Binarios precompilados

Cada release tiene archivos para macOS y Linux, en arm64 y x86_64. No se necesita Python ni compilador:

ArchivoContenido
hermit-<version>-<platform>.tar.gzEl REPL interactivo: ./hermit file.hbc.
hermit-tools-<version>-<platform>.tar.gzLas herramientas de línea de comandos hbc_* independientes.
SHA256SUMSSumas de verificación: shasum -a 256 -c SHA256SUMS.
tar -xzf hermit-0.1.0-macos-arm64.tar.gz
./hermit-0.1.0-macos-arm64/hermit --version

Los binarios de macOS no están firmados. Tras la descarga, elimina la marca de cuarentena una vez: xattr -dr com.apple.quarantine hermit-0.1.0-macos-arm64. Las compilaciones de Linux necesitan glibc 2.35 o superior. El comando cfg todavía necesita graph-easy instalado.

Los releases se producen mediante .github/workflows/release.yml cuando se empuja una etiqueta v*, usando packaging/build-release.sh, que también puedes ejecutar localmente.

Compilación

Requisitos

  • CMake 3.20 o superior y un compilador de C++20 (Clang o GCC).
  • Python 3.10+ con cabeceras de desarrollo (necesario para pybind11).
  • Acceso a la red en la primera configuración: pybind11 y Catch2 se obtienen con FetchContent de CMake a menos que ya estén instalados.
  • Opcional: graph-easy para el comando cfg (cpanm Graph::Easy), less como su paginador.

Compilar

Ejecuta todo desde este directorio (el que contiene CMakeLists.txt):

cmake -B build
cmake --build build -j

Esto compila la biblioteca estática libhbc, el módulo de Python _libhbc (en build/bindings/), las herramientas de línea de comandos (en build/tools/) y las pruebas unitarias. El REPL solo necesita el módulo de Python:

cmake --build build --target _libhbc

Las herramientas y las pruebas pueden omitirse de una compilación, por ejemplo para un release:

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

Vuelve a compilar con el mismo comando después de cada cambio en core/ o bindings/.

macOS: si el enlazado falla con un error sobre un SDK mal formado, apunta la compilación a un SDK completo, por ejemplo SDKROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX26.5.sdk cmake --build build.

Entorno de Python

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

El módulo _libhbc no se instala en el virtualenv. Añade su directorio de compilación a PYTHONPATH siempre que ejecutes hermit:

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

Obtener un archivo .hbc

Una aplicación de React Native distribuye su bundle como un archivo plano:

PlataformaUbicación dentro del paquete
Android (.apk, un zip)assets/index.android.bundle
iOS (.ipa, un zip)Payload/<App>.app/main.jsbundle

Si el archivo empieza con los bytes C6 1F BC 03 C1 03 19 1F, es bytecode de Hermes. El REPL solo abre archivos con la extensión .hbc, así que renómbralo:

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

Analiza solo aplicaciones que tengas permitido estudiar, por ejemplo las tuyas propias, o aplicaciones de código abierto para investigación.

Compilar bundles de prueba desde el código fuente

Para obtener entradas pequeñas y controladas, compila JavaScript o TypeScript con un compilador de Hermes que emita HBC 96 (por ejemplo hermesc de react-native 0.73 a 0.83, en node_modules/react-native/sdks/hermesc/):

hermes -emit-binary -g0 -out hello.hbc hello.js     # -g0: sin información de depuración

El paquete seeder/ automatiza esto para los programas de ejemplo en seeder/samples/ y escribe los resultados en seeder/corpus/:

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

--g0 escribe <name>_g0.hbc sin información de depuración, --debug escribe <name>_g.hbc con información de depuración completa. Los ejemplos .ts necesitan tsc en tu PATH; el compilador se toma de --hermes (por defecto hermes). seeder/build-real-bundle.sh compila una aplicación real de React Native de código abierto en un .hbc.

Uso del REPL

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

Sin un argumento de archivo, el REPL se inicia vacío; usa open <file.hbc>. El prompt muestra la versión de HBC y el nombre del archivo, con un + cuando hay cambios sin guardar: [hbc v96 | app+] >. El historial se guarda en ~/.hermit_history y los comandos se autocompletan con tabulador.

Descargar herramienta