Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
reFlutter — إطار عمل للهندسة العكسية لـ Flutter | Kitploit
أدوات/GitHubGitHub/ptswarm/reflutter
أمان أندرويدالتقاط وتحليل الحزمالتحليل الديناميكي (عزل)أمان iOSالهندسة العكسيةأمن الجوالتحليل الملفات الثنائيةArchived
GitHubptswarm/reflutter

reFlutter

إطار عمل للهندسة العكسية لـ Flutter

عرض المستودع
1.5k188منذ 4 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

Twitter

stars workflow

يساعد هذا الإطار في هندسة عكسية لتطبيقات Flutter باستخدام نسخة معدلة من مكتبة Flutter التي تم تجميعها مسبقًا وجاهزة لإعادة حزم التطبيق. تم تعديل عملية إلغاء تسلسل اللقطات في هذه المكتبة للسماح لك بإجراء تحليل ديناميكي بطريقة مريحة.

الميزات الرئيسية:

  • تم تعديل socket.cc لمراقبة واعتراض حركة المرور؛
  • تم تعديل dart.cc لطباعة الفئات والوظائف وبعض الحقول؛
  • يحتوي على تغييرات طفيفة لنجاح التجميع؛
  • إذا كنت ترغب في تنفيذ تعديلاتك الخاصة، فإن تغيير كود Flutter يدويًا مدعوم باستخدام Dockerfile مصمم خصيصًا.

المحركات المدعومة

  • Android: arm64، arm32؛
  • iOS: arm64؛
  • الإصدار: Stable، Beta

التثبيت

root@kitploit:~
# Linux, Windows, MacOS
pip3 install reflutter

الاستخدام

root@kitploit:~
impact@f:~$ reflutter main.apk

Please enter your Burp Suite IP: <input_ip>

SnapshotHash: 8ee4ef7a67df9845fba331734198a953
The resulting apk file: ./release.RE.apk
Please sign the apk file

Configure Burp Suite proxy server to listen on *:8083
Proxy Tab -> Options -> Proxy Listeners -> Edit -> Binding Tab

Then enable invisible proxying in Request Handling Tab
Support Invisible Proxying -> true

impact@f:~$ reflutter main.ipa

اعتراض حركة المرور

يجب عليك تحديد IP لخادم Burp Suite Proxy الموجود في نفس الشبكة حيث الجهاز الذي يحتوي على تطبيق Flutter. بعد ذلك، قم بتكوين الـ Proxy في BurpSuite -> Listener Proxy -> Options tab

  • إضافة منفذ: 8083
  • الربط بالعنوان: All interfaces
  • معالجة الطلبات: دعم الوكيل غير المرئي = True

لا تحتاج إلى تثبيت أي شهادات. على جهاز Android، لا تحتاج أيضًا إلى صلاحيات الجذر. يسمح reFlutter أيضًا بتجاوز بعض تطبيقات تثبيت الشهادة في Flutter.

الاستخدام على Android

يجب محاذاة ملف APK الناتج وتوقيعه. أستخدم uber-apk-signer java -jar uber-apk-signer.jar --allowResign -a release.RE.apk. لمعرفة أي كود يتم تحميله عبر DartVM، تحتاج إلى تشغيل التطبيق على الجهاز. لاحظ أنه يجب عليك العثور يدويًا على ما يعادل _kDartIsolateSnapshotInstructions (مثال 0xB000) باستخدام البحث الثنائي. يكتب reFlutter التفريغ إلى المجلد الجذر للتطبيق ويضبط صلاحيات 777 للملف والمجلد. يمكنك سحب الملف باستخدام أمر adb

root@kitploit:~
impact@f:~$ adb -d shell "cat /data/data/<PACKAGE_NAME>/dump.dart" > dump.dart
محتويات الملف
root@kitploit:~
Library:'package:anyapp/navigation/DeepLinkImpl.dart' Class: Navigation extends Object {  

String* DeepUrl = anyapp://evil.com/ ;

 Function 'Navigation.': constructor. (dynamic, dynamic, dynamic, dynamic) => NavigationInteractor { 
  
              Code Offset: _kDartIsolateSnapshotInstructions + 0x0000000000009270
  
                   }
    
 Function 'initDeepLinkHandle':. (dynamic) => Future<void>* { 
  
              Code Offset: _kDartIsolateSnapshotInstructions + 0x0000000000412fe8
  
                   }
    
 Function '_navigateDeepLink@547106886':. (dynamic, dynamic, {dynamic navigator}) => void { 
  
              Code Offset: _kDartIsolateSnapshotInstructions + 0x0000000000002638
  
                   }
 
       }
 
Library:'package:anyapp/auth/navigation/AuthAccount.dart' Class: AuthAccount extends Account {

PlainNotificationToken* _instance = sentinel;
 
 Function 'getAuthToken':. (dynamic, dynamic, dynamic, dynamic) => Future<AccessToken*>* { 
  
               Code Offset: _kDartIsolateSnapshotInstructions + 0x00000000003ee548
  
                   }
  
 Function 'checkEmail':. (dynamic, dynamic) => Future<bool*>* { 
  
               Code Offset: _kDartIsolateSnapshotInstructions + 0x0000000000448a08
   
                   }

 Function 'validateRestoreCode':. (dynamic, dynamic, dynamic) => Future<bool*>* { 
  
               Code Offset: _kDartIsolateSnapshotInstructions + 0x0000000000412c34
   
                   }

 Function 'sendSmsRestorePassword':. (dynamic, dynamic) => Future<bool*>* { 
  
               Code Offset: _kDartIsolateSnapshotInstructions + 0x00000000003efb88
  
                   }
       }

الاستخدام على iOS

استخدم ملف IPA الذي تم إنشاؤه بعد تنفيذ أمر reflutter main.ipa. لمعرفة أي كود يتم تحميله عبر DartVM، تحتاج إلى تشغيل التطبيق على الجهاز. يطبع reFlutter مخرجاته في سجلات وحدة التحكم في XCode باستخدام الوسم reflutter.

المهام المتبقية

  • عرض إزاحة الكود المطلقة للوظائف؛
  • استخراج المزيد من السلاسل والحقول؛
  • إضافة تعديل socket؛
  • توسيع دعم المحرك إلى Debug باستخدام Fork و Github Actions؛
  • تحسين اكتشاف App.framework و libapp.so داخل أرشيف zip

بناء المحرك

يتم بناء المحركات باستخدام reFlutter في Github Actions لبناء الإصدار المطلوب، يتم استخدام الالتزامات و hashes اللقطات من هذا الجدول. يتم استخراج تجزئة اللقطة من storage.googleapis.com/flutter_infra_release/flutter/<hash>/android-arm64-release/linux-x64.zip

إصدار

gif

البناء المخصص

إذا كنت ترغب في تنفيذ تعديلاتك الخاصة، فإن تغيير كود Flutter يدويًا مدعوم باستخدام Docker مصمم خصيصًا

sudo docker pull ptswarm/reflutter

root@kitploit:~
# Linux, Windows
EXAMPLE BUILD ANDROID ARM64:
    sudo docker run -e WAIT=300 -e x64=0 -e arm=0 -e HASH_PATCH=<Snapshot_Hash> -e COMMIT=<Engine_commit> --rm -iv${PWD}:/t ptswarm/reflutter

FLAGS:
    -e x64=0                         <disables building for x64 archiitechture, use to reduce building time>
    -e arm=0                         <disables building for arm archiitechture, use to reduce building time>
    -e WAIT=300                      <the amount of time in seconds you need to edit source code>
    -e HASH_PATCH=[Snapshot_Hash]    <here you need to specify snapshot hash which matches the engine_commit line of enginehash.csv table best. It is used for proper patch search in reFlutter and for successfull compilation>
    -e COMMIT=[Engine_commit]        <here you specify commit for your engine version, take it from enginehash.csv table or from flutter/engine repo>```
تنزيل الأداة