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
72105hace 20 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

Kit de herramientas interactivo para ingeniería inversa y manipulación de Hermes.

hermit inspecciona, descompila y parchea estructuralmente el bytecode de Hermes (HBC), el formato en el que las aplicaciones 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 aún carga y ejecuta.

A diferencia de las herramientas que solo analizan bytecode, o que lo parchean in situ 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 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: editar el cuerpo de una función, cambiar valores de cadenas y literales, añadir una función. Relajación de ramas, reubicación de manejadores de excepciones, cabeceras de funciones de desbordamiento, ida y vuelta byte a byte idéntica.
  • 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 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 independientes hbc_*.
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. Después de descargarlos, elimina el indicador 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 que graph-easy esté instalado.

Las versiones se generan mediante .github/workflows/release.yml cuando se publica 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 encabezados de desarrollo (necesarios 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 excluirse de una compilación, por ejemplo para una versión de lanzamiento:

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

Reconstruye 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 está instalado en el virtualenv. Añade su directorio de compilación a PYTHONPATH siempre que ejecutes hermit:

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

Obtención de un archivo .hbc

Una aplicación de React Native incluye 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 comienza con los bytes C6 1F BC 03 C1 03 19 1F, se trata de 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 únicamente las aplicaciones que tengas permitido estudiar, por ejemplo las tuyas propias, o aplicaciones de código abierto para investigación.

Creación de paquetes de prueba a partir del 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: no debug info

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                       # 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 escribe <name>_g0.hbc sin información de depuración, --debug escribe <name>_g.hbc con información de depuración completa. Las muestras .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; use open <file.hbc>. El indicador 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 completan con tabulación.

Descargar herramienta