登录 后可观看高清视频

从EVM字节码重建控制流图:更快、更好、更强

116次播放
2025-07-23

视频 AI 总结: Maxim 在本次演讲中介绍了其用于从 EVM 字节码重建控制流图(CFG)的新算法。他首先概述了 EVM 字节码和基本块的概念,然后指出现有 CFG 重建工具缺乏准确性评估的问题。为此,他提出了一种基准测试算法,通过比较算法生成的块与实际基本块来评估其性能,并使用假阳性和假阴性指标进行比较。实验结果表明,他的开源库 EVMOL 在重建基本块的数量和假阴性方面优于其他解决方案。该算法采用自下而上的分析方法,结合堆栈分析和循环检测,以递归方式探索父块,直到找到明确的跳转目标。EVMOL 库提供 Rust、JavaScript、TypeScript 和 Python 版本,并提供在线演示,可用于分析智能合约的功能选择器、参数、状态可变性、存储使用情况以及生成交互式控制流图。

关键信息:

  • 控制流图(CFG)重建算法: 提出了一种新的从 EVM 字节码重建 CFG 的算法。
  • 基准测试方法: 设计了一种评估 CFG 重建算法准确性的基准测试方法,通过比较算法生成的块与实际基本块来评估其性能。
  • EVMOL 库: 开发了一个名为 EVMOL 的开源库,实现了该算法,并提供多种语言版本(Rust、JavaScript、TypeScript、Python)。
  • 自下而上的分析方法: 该算法采用自下而上的分析方法,结合堆栈分析和循环检测,以递归方式探索父块,直到找到明确的跳转目标。
  • 性能优势: 实验结果表明,EVMOL 在重建基本块的数量和假阴性方面优于其他解决方案。
  • 应用场景: EVMOL 库可用于分析智能合约的功能选择器、参数、状态可变性、存储使用情况以及生成交互式控制流图。
  • 循环检测和中间状态: 算法通过跟踪访问过的节点及其堆栈状态来检测循环,并引入中间状态的概念来避免无限循环。
  • 不确定性处理: 如果算法无法确定跳转目标,则会明确地用 Option 类型表示,避免产生错误的结论。