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许可证的许可和分发。如果您正在寻找条款的例外,请与我们联系。