本文介绍: 本文主要讲述了如何使用Slither检测智能合约并将检测合约按照恶意与良性来进行分类

Slither一个用Python 3编写的Solidity静态分析框架。它运行一套漏洞检测器,打印有关智能合约细节可视化信息,并提供一个API来轻松编写自定义分析。Slither使开发人员能够发现漏洞,增强代码理解能力,并快速原型定制分析。 并且Slither比较其他工具而言,最好的一个地方在于它的安装使用都非常的简单,并且检测的效率很高。但是检测准确率不算太高。

一、特点 

二、Slither安装 

Slither安装首先需要Python版本在3.8以上,并且安装solc

1、可以通过pip3进行安装推荐

pip3 install slitheranalyzer

2、使用git进行安装

git clone https://github.com/crytic/slither.git && cd slither

python3 setup.py install

3、使用docker进行安装

docker pull trailofbits/ethsecuritytoolbox

docker run -it –v /home/share:/share trailofbits/ethsecuritytoolbox 

以上三种方法笔者推荐使用第一种方法,即使用pip3下载安装方式使用docker安装可能显示各种错误 

三、使用Slither对合约进行检测

1、对整个文件夹下的.sol文件进行检测

slither .

2、对指定目录下的指定文件进行检测

slither tests/uninitialized.so

四、注意

配置solitidy版本时候查看可以下载版本

solcselect versions

下载需要的solidity版本

solcselect install 0.4.25

使用下载的solidity版本

solc-select use 0.4.25 

使用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进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注