Skip to content

v0.2.0

Choose a tag to compare

@Anthony-Bondu Anthony-Bondu released this 22 Jul 12:35
· 20 commits to main since this release
1f86827

Adds a full bytecode write path (patch, inject, assemble, create), analyst tooling, and a wave of decompilation quality and graph accuracy fixes, on top of v0.1.7.

What's new

  • Write path: edit and rebuild .hbc files. patch-string replaces any string of any length, including identifiers with recomputed Jenkins hashes and non ASCII values re encoded as UTF 16. patch-function (and asm) assemble a function body from HASM, growing, shrinking or same size, on both legacy and modern (v97+) headers, with out of line large header relocation for overflowed functions. inject-stub adds a runtime no op or a log on entry. create builds a minimal file from scratch, legacy layout for v96 and lower and modern layout for v97 and newer. Every operation is verified on real Hermes VMs across HBC 74, 76, 83, 84, 89, 96 and 98.
  • Analyst tooling: dump gains structural tables (cjs-modules, regexp, obj-shapes, function-sources, string-kinds, sections, big-int, array-buffer) with a --json flag, disasm --info prints a per function metadata banner, and a new callgraph command emits caller to callee edges as text or Graphviz DOT. The MCP server exposes the same analyst tools plus the write path.
  • Decompilation quality: better JSX resolution, loop reconstruction for while(true) latches and guarded do-while, const and let inference, closure and factory slot naming, and many JS validity fixes (brackets, IIFE parens, export dedupe). Discord HBC96 quality gaps closed.
  • Graph accuracy: the call graph now resolves string operands and indirect globalThis.foo callees, raising resolved caller edges on a real Metro bundle from 2361 to 2789, and the control flow graph no longer emits a phantom trailing block.
  • Security: the analysis cache fingerprint is computed at build time from the crate version, source files and embedded tables instead of reading the executable, and the secret scanner test assembles its sample key at runtime. This clears the flagged static analysis findings.

Everything from v0.1.7 is included: the built in self update command, TUI xref navigation, loop reconstruction, function name recovery, HBC >=97 support, Metro and ESM module reconstruction, the on disk analysis cache, and the CLI and MCP analyst tooling.

Downloads

Each archive contains the hermes-decomp and hermes-mcp binaries. Verify with shasum -a 256 -c SHA256SUMS.

File SHA256
hermes-decomp-v0.2.0-linux-x86_64.tar.gz bb3fde42a004114c5864b895edb0ca3260ae09a6a5040554a2a6ece70210bb5e
hermes-decomp-v0.2.0-macos-arm64.tar.gz f31c7ff817c46001795e1492d2151881cb17cf69c74c7961d31acd32ee79e83e
hermes-decomp-v0.2.0-windows-x86_64.zip 340067c6aa27c395a9fa19bf9d2434269a93ef40fd44e7ecfba0aa862cbff544