Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
ghidra-evm — 用于反汇编、反编译和分析以太坊智能合约字节码的Ghidra模块。可检测不安全指令、提取隐藏方法,并生成控制流图以支持安全审计。 | Kitploit
工具/GitHubGitHub/adelapie/ghidra-evm
静态分析漏洞分析逆向工程二进制分析
GitHubadelapie/ghidra-evm

ghidra-evm

用于反汇编、反编译和分析以太坊智能合约字节码的Ghidra模块。可检测不安全指令、提取隐藏方法,并生成控制流图以支持安全审计。

查看仓库
149295年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Ghidra EVM 模块

front

在过去几年中,针对以太坊区块链上已部署智能合约的攻击因编程错误导致大量资金被盗。由于智能合约一旦编译并部署后,修改和更新较为复杂,不同从业者建议在仅能获取以太坊虚拟机(EVM)字节码的区块链上审查其安全性。在这方面,通过反汇编和反编译进行逆向工程可能很有效。

ghidra-EVM 是一个用于智能合约逆向工程的 Ghidra 模块。它可用于从以太坊区块链下载以太坊虚拟机(EVM)字节码,并对智能合约进行反汇编和反编译。此外,它还能分析创建代码、查找合约方法并定位不安全的指令。

它包含一个处理器模块、自定义加载器以及插件,可对以太坊虚拟机(EVM)字节码进行反汇编,并生成智能合约的控制流图(CFG)。

最新版本使用 Ghidra 9.1.2 API。它依赖 crytic evm_cfg_builder 库(https://github.com/crytic/evm_cfg_builder)来协助 Ghidra 完成 CFG 生成过程。

Ghidra-evm 包含:

  • 一个加载器,可从 .evm 和 .evm_h 文件中分别读取字节和十六进制代码(参见示例)。
  • EVM 指令集的 SLEIGH 定义,考虑了 Ghidra 核心限制(参见备注)。
  • 一个辅助脚本,使用 evm_cfg_builder 和 ghidra_bridge 来协助 ghidra 生成 CFG 并探索智能合约的函数属性。
  • 一系列脚本,帮助逆向工程智能合约的不同方面:
脚本描述
search_codecopy.py在分析智能合约的创建代码时,我们通常只能看到使用 CODECOPY 将运行时代码写入内存的 _dispatcher 函数。此脚本查找有用的 CODECOPY 指令,并找出隐藏在合约运行时部分中的智能合约方法。
search_dangerous_instructions.pyCALL、CALLCODE、SELFDESTRUCT 和 DELEGATECALL 等指令有时会被滥用,以将资金转移到其他合约。此脚本会找到它们,并为每个出现的位置创建标签。
load_external_contract.py从区块链下载智能合约字节码到 .evm_h 文件中,该文件可加载到 ghidra-evm 中。

安装说明

  • 安装 ghidra_bridge,按照 https://github.com/justfoxing/ghidra_bridge 上的说明操作。
  • 安装 crytic evm_cfg_builder 库,按照 https://github.com/crytic/evm_cfg_builder 上的说明操作。
  • 安装 ghidra_evm/dist/ 中的最新 ghidra-evm 发行版文件:
    • 打开 Ghidra
    • 文件 -> 安装扩展
    • 点击 '+' 并选择 zip 文件,例如 ghidra_9.1.2_PUBLIC_20201102_ghidra_evm.zip
    • 点击确定
    • 重启 Ghidra

编译说明

ghidra-evm 目录中的内容可用于在 Eclipse 中创建一个包含处理器和加载器的 Ghidra 模块,以便扩展或调试 ghidra_evm。

教程

middle

与外部符号执行工具的集成

脚本描述
teether在生成利用之前标记 Ghidra 中的关键路径。需要 teether。

备注

  • CFG 根据 evm_cfg_builder 创建:使用了 JUMP 和 JUMPI 指令。
  • 相应地生成了一个 32x32 的跳转表 (evm_jump_table),以便在反汇编和控制流窗口中检测和显示分支。
  • Ghidra 并非为处理字长大于 64 位的架构和内存而设计。这意味着 PUSH32 等指令无法在反编译窗口中正确显示。

许可

Ghidra-evm 依据 AGPLv3 进行许可和分发。

致谢

  • 这项工作得到了欧盟委员会通过 H2020 计划项目 M-Sec(资助号 814917)的支持。
  • Ghidra-EVM 已在 Black Hat Asia 2021 的武器库轨道中展示。您可以在此处找到幻灯片 此处。
下载工具
教程描述
使用使用 test.evm 的简单使用说明
分析创建字节码使用 search_codecopy.py 分析创建代码并查找隐藏方法
查找危险指令使用 search_dangerous_instructions.py 分析 SELFDESTRUCT 出现情况
从区块链下载智能合约字节码到 Ghidra使用 load_external_contract.py 从区块链下载 EVM 字节码到 .evm_h 文件