跳转到主要内容

Ethereum智能合约的符号执行工具包

项目描述

# Optik

Optik 是一套符号执行工具,用于协助智能合约模糊测试,允许其在 _混合_ 模式下运行。Optik 将我们的智能合约模糊测试工具 [Echidna](https://github.com/crytic/echidna) 与 [Maat](https://github.com/trailofbits/maat) 符号执行器结合在一起,该执行器重新播放模糊测试语料库,并通过添加新的输入来扩展它,从而提高覆盖率。

#### 当前限制

Optik 仍在开发中,不应用于实际审计。当前的限制包括

  • 不支持符号 KECCAK 哈希

  • 尚不支持 CREATE2CALLCODEDELEGATECALL

  • 未考虑gas

  • 一些echidna选项尚不支持(请参阅 hybrid-echidna -h

## 混合Echidna

<p align=”center” > <img width=”80%” src=“.resources/hybrid_echidna.png”/> <br> </p>

Optik 允许以 _混合_ 模式运行 [Echidna](https://github.com/crytic/echidna) 智能合约模糊测试。它基本上将 Echidna 与 [Maat](https://github.com/trailofbits/maat) 符号执行器结合在一起,该执行器重新播放 Echidna 语料库,并通过添加新的输入来扩展它,从而提高覆盖率。

hybrid-echidna 以几个 <i>增量播种</i> 步骤开始,其中使用 [Slither](https://github.com/crytic/slither)’s 数据流分析获得的简短事务序列对语料库进行播种,并更加强烈地使用符号执行来解决新输入。序列长度在每个播种步骤中增加。一旦达到一定的长度阈值,hybrid-echidna 将退回到其正常模式,开始限制要解决的符号输入的数量,并停止使用数据流分析为播种语料库。

### 使用方法

混合Echidna可以通过在Echidna命令行中将 echidna-test 替换为 hybrid-echidna 来无缝使用,以替代常规Echidna。例如

` hybrid-echidna MyContract.sol --test-mode assertion --corpus-dir /tmp/test --contract MyContract `

混合模式下还有其他选项可用于控制 hybrid-echidna 的行为

  • –max-iters:执行模糊测试迭代的最大次数(一次迭代包括一次Echidna战役和一次在语料库上的符号执行器运行)

  • –solver-timeout:解决每个可能的新输入所花费的最大时间(以毫秒为单位)

  • –incremental-threshold:要执行的初始增量播种步骤的数量

  • –no-incremental:跳过初始增量播种

  • –cov-mode:在解决新输入时增加的覆盖类型。大多数覆盖模式都是为了实验目的而实现的。除非你在开发/破解Optik,否则我们建议保持默认模式

调试、日志记录和终端显示

  • –debug:将调试信息添加到日志输出中

  • –logs:将日志写入指定的文件(或 stdout

  • –no-display:禁用图形终端显示

## 安装

对于快速安装,运行

`console python3 -m pip install optik-tools `

要跟上最新功能和修复,从其 master 分支安装Optik

`console git clone https://github.com/crytic/optik && cd optik python3 -m pip install . `

您还可以通过Docker运行它

`console git clone https://github.com/crytic/optik && cd optik docker build -t crytic/optik . docker run -it --rm --mount type=bind,source="$(pwd)",target=/workdir crytic/optik # 这将运行Docker容器,将本地目录挂载到/workdir `

项目详情


下载文件

下载适合您平台的文件。如果您不确定要选择哪个,请了解更多关于 安装软件包 的信息。

源分布

optik-tools-0.0.2.tar.gz (54.2 kB 查看哈希)

上传时间

构建分布

optik_tools-0.0.2-py3-none-any.whl (60.9 kB 查看哈希)

上传时间 Python 3

由以下赞助

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面