
أداة هندسة عكسية لـ Flutter/Dart
الرفرفة: التحرك بحركات سريعة وغير منتظمة، الخفقان السريع، الاضطراب.
الركود: فترة من الجمود.
Doldrums هي أداة هندسة عكسية لتطبيقات Flutter التي تستهدف Android. تحديدًا، هي محلل ومستخرج معلومات لملف Flutter/Dart الثنائي لنظام Android، المسمى تقليديًا libapp.so، لجميع إصدارات Dart 2.10. عند تشغيلها، تنتج تفريغًا كاملاً لجميع الفئات الموجودة في لقطة العزل.
الأداة حاليًا في مرحلة بيتا، وتفتقر إلى بعض إجراءات إلغاء التسلسل ومعلومات الفئات. إذا لم تعمل فورًا، فيُرجى إبلاغي بذلك.
تتطلب Doldrums مكتبة pyelftools لتحليل تنسيق ELF. يمكنك تثبيتها باستخدام:
pip3 install pyelftools
للاستخدام، قم ببساطة بتشغيل الأمر التالي، مع استبدال libapp.so بالملف الثنائي المناسب، وoutput بملف الإخراج المطلوب. لاحظ أن الخيار المطول يعمل فقط مع لقطة Dart v2.12.
python3 src/main.py [-v] libapp.so output
الإخراج المتوقع هو تفريغ لجميع الفئات، بالتنسيق التالي:
class MyApp extends StatelessWidget {
Widget build(DynamicType, DynamicType) {
Code at absolute offset: 0xec85c
}
String myPrint(DynamicType, DynamicType) {
Code at absolute offset: 0xeca80
}
}
يشير إزاحة الكود المطلق إلى الإزاحة داخل ملف libapp.so حيث يمكن العثور على الدالة الأصلية.
للحصول على شرح مفصل للتنسيق، يُرجى مراجعة منشور مدونتي.
darter هو محلل منفذ بالكامل ومختبر بالكامل لإصدارات Dart 2.5.
إذا كنت ترغب في مساعدة المشروع، ففكر في تقديم طلب سحب (pull request)، أو التبرع إلى:
الشعار من تصميم Luis Fonseca.