
أداة هندسة عكسية لتطبيقات Flutter المحمولة
أداة هندسة عكسية لتطبيقات Flutter المتنقلة عن طريق تجميع وقت تشغيل Dart AOT
حالياً، التطبيق يدعم فقط Android libapp.so (arm64 فقط). كما أن التطبيق يعمل حالياً فقط ضد إصدارات Dart الحديثة.
للميزات المفقودة ذات الأولوية العالية، انظر TODO
يستخدم هذا التطبيق مكتبة تنسيق C++20. يتطلب مترجم C++ حديث جداً مثل g++>=13 أو Clang>=16.
أوصي باستخدام نظام Linux (تم اختباره فقط على Debian sid/trixie) لأنه سهل الإعداد.
ملاحظة: استخدم فقط إصدار Debian/Ubuntu الذي يوفر gcc>=13 من مستودعه الرئيسي. استخدام gcc المنقول إلى إصدار Debian/Ubuntu قديم لا يعمل.
apt install python3-pyelftools python3-requests git cmake ninja-build \
build-essential pkg-config libicu-dev libcapstone-dev
python scripts\init_env_win.py
brew install cmake ninja pkg-config icu4c capstone
pip3 install pyelftools requests
brew install llvm@16 cmake ninja pkg-config icu4c capstone
pip3 install pyelftools requests
استخراج مجلد "lib" من ملف apk
python3 blutter.py path/to/app/lib/arm64-v8a out_dir
سيقوم blutter.py تلقائياً باكتشاف إصدار Dart من محرك Flutter واستدعاء الملف التنفيذي blutter للحصول على المعلومات من libapp.so.
إذا لم يكن الملف التنفيذي blutter للإصدار المطلوب من Dart موجوداً، فسيقوم البرنامج النصي تلقائياً بالتحقق من كود مصدر Dart وتجميعه.
يمكنك استخدام git pull للتحديث وتشغيل blutter.py مع خيار --rebuild لإجبار إعادة بناء الملف التنفيذي
python3 blutter.py path/to/app/lib/arm64-v8a out_dir --rebuild
أستخدم Visual Studio لتطوير Blutter على Windows. يمكن استخدام خيار --vs-sln لإنشاء حل Visual Studio.
python blutter.py path\to\lib\arm64-v8a build\vs --vs-sln