
Rattle هو إطار تحليل ثابت ثنائي EVM مصمم للعمل على العقود الذكية المنشورة. يأخذ Rattle سلاسل Byte EVM ، ويستخدم تحليلًا حساسًا للتدفق لاستعادة الرسم البياني لتدفق التحكم الأصلي ، ورفع رسم بياني تدفق التحكم في نموذج تسجيل SSA/Infinite ، ويؤدي إلى تحسين SSA-إزالة DUPs ، والمقايضات ، والدفعات ، والملوثات العضوية الثابتة. يزيل التحويل من جهاز المكدس إلى نموذج SSA 60 ٪+ من جميع تعليمات EVM ويعرض واجهة أكثر ودية إلى أولئك الذين يرغبون في قراءة العقود الذكية التي يتفاعلون معها.
python3 rattle-cli.py --input inputs/kingofether/KingOfTheEtherThrone.bin -Oسوف ينتج إخراج آلة التسجيل مثل هذا:

يتم استرداد الوظائف وتقسيمها. بالإضافة إلى ذلك ، يتم استرداد وسيطات الوظائف ومواقع الذاكرة ومواقع التخزين.
يمتد حشرجة الموت على سلسلة Hex Contract.
إذا كنت تقوم بتشغيل حشرجة الموت على عقد يمكنك تجميعها مع الصلابة ، واستخدم-خيار-- --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 ، قم بتشغيل الأمر التالي:
لينكس:
sudo apt-get graphvisماكوس:
brew install graphvizإذا حصلت على خطأ في بناء الجملة مثل هذا:
File "rattle-cli.py" , line 16
def main () -> None :
^
SyntaxError : invalid syntaxمن المحتمل أن تكون قد ركضت مع Python2 بدلاً من Python3.
لمزيد من التفاصيل حول تصميم وميزات حشرجة الموت ، راجع عرض Recon Montreal ، الذي تم شرحه هنا.
تم ترخيص الحشرجة وتوزيعها بموجب ترخيص AGPLV3. اتصل بنا إذا كنت تبحث عن استثناء للشروط.