# heimdall-rs EVM 字节码分析工具包

> Jonathan Becker 用 Rust 编写的 EVM 智能合约字节码分析工具包，尤其适用于未公开验证源码的合约。其命令行可反汇编字节码、生成控制流图，借助逐函数的符号执行和启发式后处理把字节码反编译为 ABI 以及测试阶段的 Solidity 或 Yul 源码，还能解码原始 calldata、导出合约在某一区块范围内访问的存储槽，并通过解码 calldata、调用跟踪和日志来检查交易。分析目标可以是原始字节码、文件、合约地址或 ENS 名称；函数选择器默认通过 OpenChain 签名数据库解析，也可跳过这一步。

- 类型：工具
- 目标：二进制
- 类别：原生分析工具
- 关联：基础工具
- 来源复核于：2026-10-19
- 收录于：2026-10-31
- 原始资源：<https://github.com/Jon-Becker/heimdall-rs>
- 一手来源：<https://github.com/Jon-Becker/heimdall-rs/blob/9de15de029ac1128c7c7566672d472f104a9747a/README.md>
- 目录页面：<https://awesomerea.org/zh/resources/heimdall-rs/>
- 记录 JSON：<https://awesomerea.org/resources/heimdall-rs/record.json>
- 英文版：[English](https://awesomerea.org/resources/heimdall-rs/index.md)

## 使用条件与局限

- 审阅时的版本为 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. <https://github.com/Jon-Becker/heimdall-rs/blob/9de15de029ac1128c7c7566672d472f104a9747a/README.md>
2. <https://github.com/Jon-Becker/heimdall-rs/blob/9de15de029ac1128c7c7566672d472f104a9747a/README.md#L9-L45>
3. <https://github.com/Jon-Becker/heimdall-rs/blob/9de15de029ac1128c7c7566672d472f104a9747a/README.md#L67-L95>
4. <https://github.com/Jon-Becker/heimdall-rs/blob/9de15de029ac1128c7c7566672d472f104a9747a/crates/cli/src/args.rs#L31-L62>
5. <https://github.com/Jon-Becker/heimdall-rs/blob/9de15de029ac1128c7c7566672d472f104a9747a/crates/decompile/src/interfaces/args.rs#L15-L82>
6. <https://github.com/Jon-Becker/heimdall-rs/blob/9de15de029ac1128c7c7566672d472f104a9747a/crates/common/src/resources/openrouter.rs>
7. <https://github.com/Jon-Becker/heimdall-rs/blob/9de15de029ac1128c7c7566672d472f104a9747a/crates/common/src/ether/signatures.rs>
8. <https://github.com/Jon-Becker/heimdall-rs/blob/9de15de029ac1128c7c7566672d472f104a9747a/bifrost/bifrost>
9. <https://github.com/Jon-Becker/heimdall-rs/blob/9de15de029ac1128c7c7566672d472f104a9747a/Cargo.toml>
10. <https://github.com/Jon-Becker/heimdall-rs/blob/9de15de029ac1128c7c7566672d472f104a9747a/rust-toolchain.toml>
11. <https://github.com/Jon-Becker/heimdall-rs/blob/9de15de029ac1128c7c7566672d472f104a9747a/LICENSE>
12. <https://github.com/Jon-Becker/heimdall-rs/releases/tag/0.9.3>

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

- [PE-bear PE 文件分析工具](https://awesomerea.org/zh/resources/pe-bear/index.md) · 工具
- [PE-sieve 进程内存植入扫描工具](https://awesomerea.org/zh/resources/pe-sieve/index.md) · 工具
- [oletools Office 文档与 OLE 文件分析工具集](https://awesomerea.org/zh/resources/oletools/index.md) · 工具
- [MonkeyDev iOS 应用插桩开发工具包](https://awesomerea.org/zh/resources/monkeydev/index.md) · 工具
- [Hollows Hunter 进程内存植入扫描器](https://awesomerea.org/zh/resources/hollows-hunter/index.md) · 工具
- [restore-symbol iOS 符号表恢复工具](https://awesomerea.org/zh/resources/restore-symbol/index.md) · 工具

## 关于此条目

说明已依据一手来源复核。
原创说明采用 MIT 许可；外部项目、论文与素材保留各自的权利和许可。
