Slither是一个用Python 3编写的Solidity静态分析框架。它运行一套漏洞检测器,打印有关智能合约细节的可视化信息,并提供一个API来轻松编写自定义分析。Slither使开发人员能够发现漏洞,增强代码理解能力,并快速原型定制分析。 并且Slither相比较其他工具而言,最好的一个地方在于它的安装与使用都非常的简单,并且检测的效率很高。但是检测的准确率不算太高。
一、特点
- 检测具有低误报率的易受攻击的Solity代码
- 识别源代码中错误条件发生的位置
- 内置“打印机”快速报告关键合同信息
- 能够分析以Solidity>=0.4编写的合约
- 正确解析99.9%的所有公共Solidity代码
- 每份合同的平均执行时间少于1秒
二、Slither的安装
Slither安装首先需要Python版本在3.8以上,并且安装有solc。
git clone https://github.com/crytic/slither.git && cd slither
docker pull trailofbits/eth–security–toolbox
docker run -it –v /home/share:/share trailofbits/eth–security–toolbox
以上三种方法笔者推荐使用第一种方法,即使用pip3下载安装的方式,使用docker安装可能会显示各种错误
三、使用Slither对合约进行检测
四、注意
使用Slither来检测的时候需要根据合约的版本来选择不同的版本号,但是一般来说高版本的都可以用来检测低版本的(仅限于第二位相同),但是也有特殊的,例如0.5.8和0.5.7这两个都需要通过各自的版本单独检测
五、自动检测并分类存储
这边自动化检测的脚本与之前的Mythril的脚本类似,可以先去看那边的脚本解释,这边就不再多说
#!/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
原文地址:https://blog.csdn.net/qq_45138078/article/details/127650503
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_27038.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!