Slither是一个用Python 3编写的Solidity静态分析框架。它运行一套漏洞检测器,打印有关智能合约细节的可视化信息,并提供一个API来轻松编写自定义分析。Slither使开发人员能够发现漏洞,增强代码理解能力,并快速原型定制分析。 并且Slither相比较其他工具而言,最好的一个地方在于它的安装与使用都非常的简单,并且检测的效率很高。但是检测的准确率不算太高。
一、特点
- 检测具有低误报率的易受攻击的Solity代码
- 识别源代码中错误条件发生的位置
- 内置“打印机”快速报告关键合同信息
- 能够分析以Solidity>=0.4编写的合约
- 正确解析99.9%的所有公共Solidity代码
- 每份合同的平均执行时间少于1秒
二、Slither的安装
Slither安装首先需要Python版本在3.8以上,并且安装有solc。
1、可以通过pip3进行安装(推荐)
pip3 install slither-analyzer
2、使用git进行安装
git clone https://github.com/crytic/slither.git && cd slither
python3 setup.py install
3、使用docker进行安装
docker pull trailofbits/eth-security-toolbox
docker run -it -v /home/share:/share trailofbits/eth-security-toolbox
以上三种方法笔者推荐使用第一种方法,即使用pip3下载安装的方式,使用docker安装可能会显示各种错误
三、使用Slither对合约进行检测
1、对整个文件夹下的.sol文件进行检测
slither .
2、对指定目录下的指定文件进行检测
slither tests/uninitialized.sol
四、注意
配置solitidy版本的时候,查看可以下载的版本
solc-select versions
下载需要的solidity版本
solc-select install 0.4.25
使用所下载的solidity版本
solc-select use 0.4.25
使用Slither来检测的时候需要根据合约的版本来选择不同的版本号,但是一般来说高版本的都可以用来检测低版本的(仅限于第二位相同),但是也有特殊的,例如0.5.8和0.5.7这两个都需要通过各自的版本单独检测文章来源:https://www.toymoban.com/news/detail-658147.html
五、自动检测并分类存储
这边自动化检测的脚本与之前的Mythril的脚本类似,可以先去看那边的脚本解释,这边就不再多说文章来源地址https://www.toymoban.com/news/detail-658147.html
#!/bin/bash
######################################################################
## ##
## Slither自动测试智能合约并分类存储 ##
## ##
######################################################################
#递归遍历文件
function getdir(){
for element in `ls $1`
do
dir_or_file=$1"/"$element
if [ -d $dir_or_file ]
then
getdir $dir_or_file
else
#echo $1
#echo $dir_or_file
#查找文件扩展名为".sol"的文件
check_suffix $element
#在终端中输入基本语句
cd /home
cd /home/wjw
cd /home/wjw/1
cd /home/wjw/1/5
cd /home/wjw/1/5/052
#打开最终存储所需要检测智能合约的文件夹
cd $1
#利用工具slither来检测智能合约
slither .
fi
done
}
#查找文件扩展名为".sol"的文件
check_suffix()
{
file=$1
if [ "${file##*.}"x = "sol"x ];then
echo $file
fi
}
root_dir="/home/wjw/1/5/052"
getdir $root_dir
到了这里,关于Slither自动化测试智能合约并进行分类存储的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!