Tool
heimdall-rs
Rust toolkit by Jonathan Becker for analyzing EVM smart-contract bytecode, particularly of contracts without verified source. Its CLI disassembles bytecode, builds control-flow graphs, decompiles it through per-function symbolic execution and heuristic post-processing passes into an ABI plus beta Solidity or Yul source, decodes raw calldata, dumps the storage slots a contract accesses over a block range, and inspects transactions by decoding their calldata, traces and logs. Targets can be raw bytecode, files, contract addresses or ENS names; function selectors are resolved against the OpenChain signature database unless that step is skipped.
- Targets
- Binary
- Category
- Native analysis tools
- Relationship
- Foundation tool
- Sources reviewed
Requirements & limits
- Release at review: 0.9.3, published 2026-04-30, with Linux and macOS binaries for amd64 and arm64 and no Windows build; the reviewed main commit is 38 commits ahead, and both that tag and main still declare workspace version 0.9.2. Install through the bifrost installer, which builds from source with Cargo or, with -B, fetches a precompiled binary; the repository pins Rust 1.91.0.
- Contract addresses, ENS names, storage dumps and transaction inspection need an Ethereum JSON-RPC endpoint, given as a URL or a MESC reference; an optional Etherscan API key lets decompilation recover creation bytecode of self-destructed contracts. Optional LLM post-processing sends the decompiled Solidity to OpenRouter (default model openai/gpt-4o-mini) and needs an OpenRouter API key.
- Decompiled Solidity and Yul output is marked beta and is a heuristic reconstruction to be checked, not original source. The README lists more than 20 papers and theses that cite Heimdall.
- MIT license.
About this entry
The description was reviewed against primary sources.
Primary sources
- README.md GitHub · Jon-Becker/heimdall-rs · Revision 9de15de
- README.md#L9-L45 GitHub · Jon-Becker/heimdall-rs · Revision 9de15de
- README.md#L67-L95 GitHub · Jon-Becker/heimdall-rs · Revision 9de15de
- crates/cli/src/args.rs#L31-L62 GitHub · Jon-Becker/heimdall-rs · Revision 9de15de
- crates/decompile/src/interfaces/args.rs#L15-L82 GitHub · Jon-Becker/heimdall-rs · Revision 9de15de
- crates/common/src/resources/openrouter.rs GitHub · Jon-Becker/heimdall-rs · Revision 9de15de
- crates/common/src/ether/signatures.rs GitHub · Jon-Becker/heimdall-rs · Revision 9de15de
- bifrost/bifrost GitHub · Jon-Becker/heimdall-rs · Revision 9de15de
- Cargo.toml GitHub · Jon-Becker/heimdall-rs · Revision 9de15de
- rust-toolchain.toml GitHub · Jon-Becker/heimdall-rs · Revision 9de15de
- LICENSE GitHub · Jon-Becker/heimdall-rs · Revision 9de15de
- https://github.com/Jon-Becker/heimdall-rs/releases/tag/0.9.3
More in Native binaries
- PE-bear · Tool
- PE-sieve · Tool
- oletools · Tool
- MonkeyDev · Tool
- Hollows Hunter · Tool
- restore-symbol · Tool