日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Oyente:智能合约漏洞检测工具的安装与使用

發布時間:2024/3/24 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oyente:智能合约漏洞检测工具的安装与使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

寫在前面

  • 當你閱讀到這篇 博客 時,大概率你已經閱讀并嘗試過 Oyente 官方安裝指導,甚至可能還在其它地方搜過安裝教程,如果沒有就當我沒說。。。
  • 那為什么在有各種版本的教程的情況下我依舊去寫一個新的教程呢?這是因為我覺得其它教程解釋的不夠完整,安裝下來容易出現問題。所以我選擇花費時間去寫一個我認為相對完整一點的安裝教程,希望能幫助大家,能讓大家少走一點彎路,不要浪費太多時間在工具的安裝上。
  • 本教程不是唯一的安裝方法,可能還有其他的方法。
  • 如何在 Docker 中安裝就不多說了,比較簡單,跟著官方文檔走就行了,不需要考慮環境問題。本博客主要介紹在 Ubuntu 中的安裝。
  • Ubuntu 更換國內軟件源,go 和 python 更換國內下載源應該不需要多說吧?
  • 使用系統版本:Ubuntu 18.04
  • 幾個坑

  • python 的版本要大于 3.5,很多錯誤都是由于 python 的版本錯誤而導致的。如果同時有 python2 和 python3,所有命令使用 python3 和 pip3,不要用python 和 pip/pip2(如果你沒安裝python2,python 命令就是指代 python3,那你可以選擇使用 python 命令。

  • Oyente 目前只支持 0.4.19 以下的 solidity 版本,所以直接按照官方文檔指導的方法來安裝是不行的,最好的辦法是使用 solc-select 來管理安裝不同版本的solidity。以下是安裝高版本運行后的警告提示:

    WARNING:root:You are using solc version 0.8.10, The latest supported version is 0.4.19
  • Oyente 目前只支持 geth 1.7.3 和 evm 1.7.3 。以下是安裝高版本運行后的警告提示:

    WARNING:root:You are using evm version 1.10.14. The supported version is 1.7.3
  • 安裝 老版本的 geth 1.7.3 可能也會帶來一個坑,geth 1.7.3 需要 go 的版本大于等于 1.7,但是 go 的版本過高在構建 geth 時也會出現問題,在安裝 go-ethereum v1.7.3 部分再詳細說明。

  • Oyente 目前只支持 z3. 4.5.1 。以下是安裝高版本運行后的警告提示:

    WARNING:root:You are using an untested version of z3. 4.5.1 is the officially tested version
  • Oyente 官方文檔中沒有提到需要安裝 crytic_compile 庫,但是 input_helper 中又引入了這個庫,所以我們需要額外通過 pip3 對其進行安裝。但 crytic-compile 庫安裝版本不可以超過 v0.1.13,否則會出現錯誤:

    INFO:CryticCompile:Compilation warnings/errors on *.sol

    2021.12.14 更新:

    ? solidity 版本不是 0.4.19, geth 和 evm 版本不是 1.7.3,z3 版本不是 4.5.1 都只是會發出以上描述的警告提醒,喜歡動手的小伙伴可以測一測用什么版本會出問題。

  • 安裝

    安裝 python3、go 等應該不需要強調了吧。。。

    1. 安裝 solc 0.4.19

    # 安裝 solc-select pip3 install solc-select# 使用 solc-select 安裝 solc 0.4.19 solc-select install 0.4.19# 使用 solc 0.4.19 版本 solc-select use 0.4.19# 查看 solc 版本,驗證是否安裝成功(如果無法查看,關閉終端重新打開) solc --version

    2. 安裝 go-ethereum v1.7.3

    # 克隆 go-ethereum git clone https://github.com/ethereum/go-ethereum.git# 切換分支 git checkout v1.7.3# 構建 geth(使用 make geth 指令不會構建 evm) # 如果這里報錯,讓你升級 go 版本,但你的 go 版本明明大于 1.7,那么可以重新安裝個 go 1.7,安裝方法自行百度。 # 就像我明明使用的是 go 1.17.3,遠大于 go 1.7,但是也報上面的錯,猜測是因為后續版本支持 go mod 有關。 make all# 配置環境 sudo vim ~/.bashrc# 增加 geth bin 目錄到環境變量 # 以下路徑根據實際安裝路徑進行修改 export PATH=$PATH:$HOME/go-ethereum/build/bin# 退出并使修改命令生效 source ~/.bashrc# 查看 geth 版本 geth version

    3. 安裝 z3-solver 4.5.1.0

    # 通過 python3 來安裝 z3-solver 4.5.1.0 pip3 install z3-solver==4.5.1.0

    4. 安裝 crytic-compile 0.1.13

    pip3 install crytic-compile==0.1.13

    5. (可選)安裝 Requests library

    # 這個庫不安裝應該也沒事 pip3 install requests

    6. (可選)安裝 web3 library

    # 這個庫不安裝應該也沒事 pip3 install web3

    7. 下載 Oyente

    git clone https://github.com/enzymefinance/oyente.git

    測試使用

    1. 新建一個合約

    # 新建目錄 mkdir ~/test# 新建 .sol 智能合約 vim ~/test/test.sol

    【注】這里不在 oyente/oyente 目錄中直接新建一個合約進行測試是因為會報錯,原因不明,有研究的小伙伴可以指點下。

    test.sol 合約

    pragma solidity >=0.4.19;contract test {function helloworld() pure public returns (string){return "hello world";} }

    2. 測試

    # 進入 oyente 目錄 cd ~/oyente/oyente# 評估本地合約 python3 oyente.py -s ~/test/test.sol

    執行結果如下:

    INFO:root:contract /home/jie/test/test.sol:test: INFO:symExec: ============ Results =========== INFO:symExec: EVM Code Coverage: 99.5% INFO:symExec: Integer Underflow: False INFO:symExec: Integer Overflow: False INFO:symExec: Parity Multisig Bug 2: False INFO:symExec: Callstack Depth Attack Vulnerability: False INFO:symExec: Transaction-Ordering Dependence (TOD): False INFO:symExec: Timestamp Dependency: False INFO:symExec: Re-Entrancy Vulnerability: False INFO:symExec: ====== Analysis Completed ======

    參考文章

  • enzymefinance/oyente: An Analysis Tool for Smart Contracts (github.com)
  • hxy-daniel/oyente-study (github.com)
  • oyente—合約漏洞檢測工具安裝_5imple的博客-CSDN博客
  • Oyente搭建,框架結構以及helloworld案例解析(一)_小水的博客-CSDN博客
  • 常用linux命令&&Ubuntu安裝z3庫及使用_Y1seco的博客-CSDN博客
  • 總結

    以上是生活随笔為你收集整理的Oyente:智能合约漏洞检测工具的安装与使用的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。