工具

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 许可。本次未安装,也未分析任何合约。

关于此条目

类型
工具
类别
原生分析工具
关联
基础工具
目标
二进制

来源复核于

说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。

报告条目过时 建议修正翻译

一手来源

  1. README.md GitHub · Jon-Becker/heimdall-rs · 修订 9de15de
  2. README.md#L9-L45 GitHub · Jon-Becker/heimdall-rs · 修订 9de15de
  3. README.md#L67-L95 GitHub · Jon-Becker/heimdall-rs · 修订 9de15de
  4. crates/cli/src/args.rs#L31-L62 GitHub · Jon-Becker/heimdall-rs · 修订 9de15de
  5. crates/decompile/src/interfaces/args.rs#L15-L82 GitHub · Jon-Becker/heimdall-rs · 修订 9de15de
  6. crates/common/src/resources/openrouter.rs GitHub · Jon-Becker/heimdall-rs · 修订 9de15de
  7. crates/common/src/ether/signatures.rs GitHub · Jon-Becker/heimdall-rs · 修订 9de15de
  8. bifrost/bifrost GitHub · Jon-Becker/heimdall-rs · 修订 9de15de
  9. Cargo.toml GitHub · Jon-Becker/heimdall-rs · 修订 9de15de
  10. rust-toolchain.toml GitHub · Jon-Becker/heimdall-rs · 修订 9de15de
  11. LICENSE GitHub · Jon-Becker/heimdall-rs · 修订 9de15de
  12. https://github.com/Jon-Becker/heimdall-rs/releases/tag/0.9.3

同分区更多条目:原生二进制

原生二进制分区全部 77 项资源