分享百科

控制流图

视频 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 类型表示,避免产生错误的结论。
44
0
0
1天前
登链社区