rattle
1.0.0

Rattle是EVM二進制靜態分析框架,旨在處理已部署的智能合約。 Rattle採用EVM字節字符串,使用流敏分析來恢復原始控制流程圖,將控制流程圖提升為SSA/Infinite寄存器形式,並優化SSA - 刪除DUP,交換,掉期,推動和POPS。從堆棧機到SSA表單的轉換刪除了所有EVM指令的60%以上,並向希望閱讀他們正在與之互動的智能合約的人提供了更友好的界面。
python3 rattle-cli.py --input inputs/kingofether/KingOfTheEtherThrone.bin -O將產生這樣的寄存器輸出:

恢復功能並拆分。還恢復了功能參數,內存位置和存儲位置。
撥浪鼓在運行時合同六角字符串上運行。
如果您在合同上運行嘎嘎聲,則可以堅固地編譯,請使用--bin-runtime選項並剝離標頭:
$ solc --bin-runtime KingOfTheEtherThrone.sol 2> /dev/null | tail -n1 > contract.bin 要安裝Python依賴項,請運行以下命令:
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt要安裝GraphViz,請運行以下命令:
Linux:
sudo apt-get graphvismacos:
brew install graphviz如果您收到這樣的語法錯誤:
File "rattle-cli.py" , line 16
def main () -> None :
^
SyntaxError : invalid syntax您可能會用Python2而不是Python3旋轉。
有關撥浪鼓設計和功能的更多詳細信息,請參見我的蒙特利爾康復演示文稿,此處註釋。
Rattle已獲得AGPLV3許可證的許可和分發。如果您正在尋找條款的例外,請與我們聯繫。