工具
heimdall-rs EVM 字节码分析工具包
Jonathan Becker 用 Rust 编写的 EVM 智能合约字节码分析工具包,尤其适用于未公开验证源码的合约。其命令行可反汇编字节码、生成控制流图,借助逐函数的符号执行和启发式后处理把字节码反编译为 ABI 以及测试阶段的 Solidity 或 Yul 源码,还能解码原始 calldata、导出合约在某一区块范围内访问的存储槽,并通过解码 calldata、调用跟踪和日志来检查交易。分析目标可以是原始字节码、文件、合约地址或 ENS 名称;函数选择器默认通过 OpenChain 签名数据库解析,也可跳过这一步。
使用条件与局限
- 审阅时的版本为 0.9.3,发布于 2026-04-30,提供 amd64 和 arm64 的 Linux 与 macOS 二进制,没有 Windows 版本;所审阅的 main 提交比它多 38 个提交,而该标签和 main 的工作区版本号仍为 0.9.2。可通过 bifrost 安装器安装:默认用 Cargo 从源码构建,加 -B 参数则下载预编译二进制;仓库固定使用 Rust 1.91.0。
- 分析合约地址或 ENS 名称、导出存储槽和检查交易时,需要以 URL 或 MESC 引用形式提供以太坊 JSON-RPC 端点;可选的 Etherscan API 密钥用于在反编译时取回已自毁合约的创建字节码。可选的 LLM 后处理会把反编译得到的 Solidity 代码发送到 OpenRouter(默认模型为 openai/gpt-4o-mini),需要 OpenRouter API 密钥。
- 反编译出的 Solidity 和 Yul 代码标为测试阶段,属于需要核对的启发式重建结果,并非原始源码。README 列出了 20 余篇引用 Heimdall 的论文和学位论文;这些只是引用,并不构成对该工具准确性的评估。
- 采用 MIT 许可。本次未安装,也未分析任何合约。
关于此条目
- 类型
- 工具
- 类别
- 原生分析工具
- 关联
- 基础工具
- 目标
- 二进制
来源复核于
说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。
一手来源
- README.md GitHub · Jon-Becker/heimdall-rs · 修订 9de15de
- README.md#L9-L45 GitHub · Jon-Becker/heimdall-rs · 修订 9de15de
- README.md#L67-L95 GitHub · Jon-Becker/heimdall-rs · 修订 9de15de
- crates/cli/src/args.rs#L31-L62 GitHub · Jon-Becker/heimdall-rs · 修订 9de15de
- crates/decompile/src/interfaces/args.rs#L15-L82 GitHub · Jon-Becker/heimdall-rs · 修订 9de15de
- crates/common/src/resources/openrouter.rs GitHub · Jon-Becker/heimdall-rs · 修订 9de15de
- crates/common/src/ether/signatures.rs GitHub · Jon-Becker/heimdall-rs · 修订 9de15de
- bifrost/bifrost GitHub · Jon-Becker/heimdall-rs · 修订 9de15de
- Cargo.toml GitHub · Jon-Becker/heimdall-rs · 修订 9de15de
- rust-toolchain.toml GitHub · Jon-Becker/heimdall-rs · 修订 9de15de
- LICENSE GitHub · Jon-Becker/heimdall-rs · 修订 9de15de
- https://github.com/Jon-Becker/heimdall-rs/releases/tag/0.9.3
同分区更多条目:原生二进制
- DownUnderCTF:masked-squares 校验器 · 案例
- Show Your Work:对 REA 证据架构的实测剖析 · 案例
- Windows 加载器:借助 REA 与 Codex 的静态恶意软件分析 · 案例
- Ghidra · 工具
- radare2 · 工具
- Cutter · 工具