Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/impact-i/reflutter
أمان أندرويدالتحليل الديناميكي (عزل)أمان iOSالهندسة العكسيةاختبار الاختراقأمن الجوال
GitHubimpact-i/reflutter

reFlutter

يقوم بتصحيح مكتبات محرك Flutter لتمكين هندسة عكسية أثناء التشغيل، واعتراض حركة المرور، وتجاوز تثبيت SSL لتطبيقات Android وiOS بدون جذر أو تثبيت شهادة.

عرض المستودع
2.7k29329منذ 6 أيامتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

stars

اقرأ المزيد على المدونة: https://swarm.ptsecurity.com/fork-bomb-for-flutter/

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

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

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

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

  • Android: arm64, arm32;
  • iOS: arm64;
  • Release: Stable, Beta

التثبيت

# Linux, Windows, MacOS
pip3 install reflutter==0.8.6

الاستخدام

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

impact@f:~$ reflutter main.ipa

الخيارات:

  • -p, --patch-dump — وضع التفريغ (dump): تصحيح المحرك لإصدار dump.dart (الفئات/الدوال/الإزاحات) عند البدء، وطباعة تلميح frida.js بدلاً من تعليمات الوسيط (proxy).
  • -n, --no-interact — عدم طلب إدخال Burp IP أبدًا (يفترض 127.0.0.1)؛ مفيد للمحركات القديمة في CI.
  • -b <Snapshot_Hash>, --build-engine — وضع بناء المحرك: طباعة commit المحرك لـ snapshot hash و(عند التشغيل داخل نسخة flutter/flutter) تطبيق تصحيحات مصدر reFlutter. راجع scripts/local-release.

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

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

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

لا يلزم تثبيت شهادة أو صلاحيات root على Android. كما يسمح reFlutter بتجاوز بعض تطبيقات تثبيت شهادات Flutter (certificate pinning).

⚠️ ملاحظة: المحركات حتى Flutter 3.24.x (snapshot hash 80a49c7111088100a233b2ae788e1f48) وما قبلها لا تزال تحمل عنوان IP الخاص بالبروكسي المُضمّن ويتم تصحيحها في مكانها. بدءًا من 3.27.x اختفى عنوان IP المُضمّن — قم بتهيئة البروكسي مباشرة على الجهاز بدلاً من ذلك.

على Android

استخدم ADB لتهيئة بروكسي الجهاز:

adb -s <device> shell "settings put global http_proxy <proxy_ip:port>"

قم بتوقيع الـ APK ومحاذاته وتثبيته. اختياريًا، قم بتهيئة TunProxy لتوجيه حركة المرور عبر Burp Suite.

على iOS

قم بتوقيع الـ IPA وتثبيته. قم بتهيئة Potatso لاستخدام خادم Burp Suite Proxy الخاص بك.

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

يجب محاذاة الـ apk الناتج وتوقيعه. الأداة الموصى بها هي uber-apk-signer:

java -jar uber-apk-signer.jar --allowResign -a release.RE.apk

قم بتشغيل التطبيق على الجهاز. حدد _kDartIsolateSnapshotInstructions عبر البحث الثنائي. يكتب reFlutter ملف التفريغ إلى المجلد الجذر للتطبيق ويضبط صلاحيات 777. استرجعه باستخدام:

adb -d shell "cat /data/data/<PACKAGE_NAME>/dump.dart" > dump.dart
محتويات الملف
Library:'package:anyapp/navigation/DeepLinkImpl.dart' Class: Navigation extends Object {
String* DeepUrl = anyapp://evil.com/ ;
...

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

بعد تشغيل reflutter main.ipa، نفّذ التطبيق على الجهاز. يُطبع مسار ملف التفريغ في سجلات وحدة تحكم Xcode:

Current working dir: /private/var/mobile/Containers/Data/Application/<UUID>/dump.dart

استرجع الملف من الجهاز.

Frida

frida-tools==13.7.1
frida==16.7.19

استخدم إزاحات التفريغ في سكربت Frida:

frida -U -f <package> -l frida.js

للعثور على _kDartIsolateSnapshotInstructions:

readelf -Ws libapp.so

ابحث عن حقل Value.

المهام المطلوبة

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

بناء المحرك

يتم بناء المحركات باستخدام scripts/local-release (macOS؛ يبني v2 + v3 لـ iOS و Android arm64/arm/x64، ويتحقق من تطبيق كل تصحيح، ويرفع أصول الإصدار) بناءً على البيانات في enginehash.csv. يتم تحديد commit المحرك لـ snapshot hash عبر reflutter -b <Snapshot_Hash>. يتم استرجاع snapshot hash من:

https://storage.googleapis.com/flutter_infra_release/flutter/<hash>/android-arm64-release/linux-x64.zip
الإصدار

gif

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

تعديل كود Flutter اليدوي مدعوم باستخدام Docker:

git clone https://github.com/Impact-I/reFlutter && cd reFlutter
docker build -t reflutter -f Dockerfile .

شغّله باستخدام:

docker run -it -v "$(pwd):/t" -e HASH_PATCH=<Snapshot_Hash> -e COMMIT=<Engine_commit> reflutter

مثال:

docker run -it -v "$(pwd):/t" -e HASH_PATCH=aa64af18e7d086041ac127cc4bc50c5e -e COMMIT=d44b5a94c976fbb65815374f61ab5392a220b084 reflutter

مثال: بناء Android ARM64 (Linux/Windows)

docker run -e WAIT=300 -e x64=0 -e arm=0 -e HASH_PATCH=<Snapshot_Hash> -e COMMIT=<Engine_commit> --rm -iv${PWD}:/t reflutter

العلامات:

  • -e x64=0: تعطيل بناء x64
  • -e arm64=0: تعطيل بناء arm64
  • -e arm=0: تعطيل بناء arm32
  • -e WAIT=300: الوقت بالثواني لتعديل المصدر قبل البناء
  • -e HASH_PATCH: snapshot hash من enginehash.csv
  • -e COMMIT: hash الخاص بـ commit المحرك

تنزيل الأداة