Rust decompiler for Hermes bytecode (.hbc), the JS engine behind React Native. Supports HBC 40 to 99.
Pre-built binaries (Linux / macOS / Windows) from Releases or Actions:
| Asset suffix | Platform |
|---|---|
linux-x86_64 / linux-arm64 |
Linux |
macos-arm64 / macos-x86_64 |
macOS |
windows-x86_64 |
Windows |
Archives include hermes-decomp and hermes-mcp. Verify: shasum -a 256 -c SHA256SUMS.
hermes-decomp update --check # or --install / --version v0.1.7From source (Rust 1.70+):
git clone https://github.com/SymbioticSec/hermes-decomp.git
cd hermes-decomp && cargo build --release
# → target/release/hermes-decomp target/release/hermes-mcphermes-decomp info app.hbc
hermes-decomp disasm app.hbc --function 5 --info --show-offsets
hermes-decomp decompile app.hbc -o out.js # progress on stderr
hermes-decomp decompile app.hbc --deep -o out.js # recover more names, slower
hermes-decomp decompile app.hbc --function 42
hermes-decomp tui app.hbc
hermes-decomp xref app.hbc --query "loginWithToken"| Area | Commands (highlights) |
|---|---|
| Read | info, disasm, decompile, tui, extract, modules, deps |
| Analyze | xref, callgraph, graphviz, closures, debug, dump, bin-diff |
| RE helpers | secrets, frida-hooks |
| Write (bytecode only) | emit-hasm, asm, asm-check, patch-string, patch-function, inject-stub, create |
Full flags and examples → docs/USAGE.md.
Notes:
- Full-bundle
decompileuses an on-disk.hdcachefor fast reloads. Pass--no-cacheto force. - Write tools patch bytecode / HASM. They do not recompile decompiled JavaScript.
decompile -o …prints pipeline stages on stderr.
- MCP server (
hermes-mcp) for AI assistants → docs/MCP.md
Config template:mcp-config.example.json - Rust crate
hbc-decomp→ docs/LIBRARY.md
cargo build --release -p hbc-decomp-mcpSee CONTRIBUTING.md. Please open an issue before a PR.
cargo build --release --workspace && cargo test --workspaceMIT. See LICENSE.


