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.
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; those are citations, not an accuracy evaluation of the tool.
- MIT license. Nothing was installed and no contracts were analyzed.
About this entry
- Type
- Tool
- Category
- Native analysis tools
- Relationship
- Foundation tool
- Targets
- Binary
Sources reviewed
The description was reviewed against primary sources. This does not establish runtime testing, security auditing or verified compatibility.
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
- DownUnderCTF: masked-squares flag checker · Case study
- Show Your Work: a measured dissection of REA's evidence architecture · Case study
- Windows loader: static malware analysis with REA and Codex · Case study
- Ghidra · Tool
- radare2 · Tool
- Cutter · Tool