
Rattle เป็นกรอบการวิเคราะห์แบบคงที่แบบไบนารี EVM ที่ออกแบบมาเพื่อทำงานกับสัญญาอัจฉริยะที่ปรับใช้ Rattle ใช้ Strings EVM BYTE ใช้การวิเคราะห์ที่ไวต่อการไหลเพื่อกู้คืนกราฟการไหลของการควบคุมดั้งเดิมยกกราฟการไหลของการควบคุมลงในรูปแบบการลงทะเบียน SSA/Infinite และเพิ่มประสิทธิภาพ SSA-ลบ DUPs, swaps, pushs และ pops การแปลงจากเครื่องสแต็กเป็นรูปแบบ SSA จะลบคำแนะนำ EVM ทั้งหมด 60%+ ของคำแนะนำ EVM ทั้งหมดและนำเสนออินเทอร์เฟซที่เป็นมิตรกับผู้ที่ต้องการอ่านสัญญาอัจฉริยะที่พวกเขามีปฏิสัมพันธ์
python3 rattle-cli.py --input inputs/kingofether/KingOfTheEtherThrone.bin -Oจะสร้างเอาต์พุตเครื่องลงทะเบียนเช่นนี้:

ฟังก์ชั่นจะถูกกู้คืนและแยกออก นอกจากนี้ยังมีการกู้คืนอาร์กิวเมนต์ฟังก์ชั่นตำแหน่งหน่วยความจำและที่เก็บข้อมูล
Rattle ทำงานบนสาย HEX สัญญารันไทม์
หากคุณใช้งาน Rattle ในสัญญาคุณสามารถรวบรวมด้วยความแข็งแกร่งให้ใช้ตัวเลือก --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 และคุณสมบัติดูการนำเสนอ Recon Montreal ของฉันซึ่งมีคำอธิบายประกอบที่นี่
Rattle ได้รับใบอนุญาตและแจกจ่ายภายใต้ใบอนุญาต AGPLV3 ติดต่อเราหากคุณกำลังมองหาข้อยกเว้นสำหรับข้อกำหนด