- بواسطة x32x01 ||
🔥 لو بتشتغل في Mobile App Penetration Testing أو بتحب مجال Bug Bounty، ففي تفصيلة صغيرة جدًا ممكن تخليك تضيع ثغرة خطيرة من غير ما تاخد بالك… وده بيحصل مع ناس كتير حتى من اللي عندهم خبرة.
الناس متعودة إن تطبيق الأندرويد بيكون عبارة عن ملف واحد فقط اسمه:
لكن أحيانًا لما تحمل التطبيق أو تسحبه من الموبايل هتلاقيه مش ملف واحد…
هتلاقي عدة ملفات APK بالشكل ده مثلًا:
وهنا بيبدأ السؤال 🤔
هل ده أكتر من تطبيق؟
ولا إيه اللي بيحصل بالضبط؟
التقنية دي بقت مستخدمة بشكل أساسي في التطبيقات اللي بتترفع على Google وخاصة في متجر Google Play
الفكرة هنا إن التطبيق بدل ما يكون ملف APK واحد ضخم، بيتم تقسيمه لعدة أجزاء اسمها: Split APKs
كل جزء من الأجزاء دي بيكون مسؤول عن حاجة معينة في التطبيق.
📱 معمارية الجهاز
ودي مسؤولة عن دعم نوع المعالج.
🌍 اللغة
كل لغة بيكون ليها ملفات الموارد الخاصة بيها.
🖥 دقة الشاشة
علشان التطبيق يشتغل بشكل مثالي على كل أنواع الشاشات.
📦 مكتبات أو موارد إضافية
أحيانًا بيكون في ملفات تحتوي على:
المستخدم بدل ما يحمل تطبيق حجمه كبير جدًا…
بيتم تحميل الأجزاء اللي جهازه محتاجها بس.
المميزات 👇
بيحللوا الملف ده فقط:
ويتجاهلوا باقي الملفات.
المشكلة إن ده ممكن يخليك تضيع ثغرات مهمة جدًا.
ممكن تلاقي مثلًا:
🔑 API Keys داخل ملفات resources الخاصة بلغة معينة.
⚙ Native Libraries داخل ملف المعمارية مثل:
📦 Features أو كود مخفي داخل ملفات تانية.
بمعنى أبسط…
التطبيق الحقيقي = كل ملفات APK مع بعض
مش ملف واحد بس.
هتلاقي النظام بيرجعلك كل الملفات المرتبطة بالتطبيق.
بعدها تقدر تسحبهم:
وبعد كده تبدأ تحليلهم كلهم مع بعض.
مش كل الثغرات بتكون مخفية في الكود.
أحيانًا الثغرة بتكون موجودة في جزء من التطبيق… أنت أصلًا ما فتحتهوش.
علشان كده دايمًا افتكر القاعدة دي 👇
أي تطبيق أندرويد حديث = مجموعة Split APKs مش ملف واحد.
ولو تجاهلت جزء منهم…
ممكن تضيع ثغرة كاملة بدون ما تاخد بالك. 🔍🔥
الناس متعودة إن تطبيق الأندرويد بيكون عبارة عن ملف واحد فقط اسمه:
app.apkلكن أحيانًا لما تحمل التطبيق أو تسحبه من الموبايل هتلاقيه مش ملف واحد…
هتلاقي عدة ملفات APK بالشكل ده مثلًا:
Code:
base.apk
split_config.arm64.apk
split_config.en.apk
split_config.xxhdpi.apk هل ده أكتر من تطبيق؟
ولا إيه اللي بيحصل بالضبط؟
إيه هو Android App Bundle وليه التطبيقات بتتقسم؟
السبب ببساطة هو تقنية اسمها Android App Bundle.التقنية دي بقت مستخدمة بشكل أساسي في التطبيقات اللي بتترفع على Google وخاصة في متجر Google Play
الفكرة هنا إن التطبيق بدل ما يكون ملف APK واحد ضخم، بيتم تقسيمه لعدة أجزاء اسمها: Split APKs
كل جزء من الأجزاء دي بيكون مسؤول عن حاجة معينة في التطبيق.
إيه وظيفة كل Split APK ؟
كل ملف من الملفات دي بيحتوي على جزء معين من التطبيق.📱 معمارية الجهاز
Code:
split_config.arm.apk
split_config.arm64.apk 🌍 اللغة
Code:
split_config.en.apk
split_config.ar.apk 🖥 دقة الشاشة
Code:
split_config.xxhdpi.apk
split_config.xhdpi.apk 📦 مكتبات أو موارد إضافية
أحيانًا بيكون في ملفات تحتوي على:
- مكتبات Native
- ملفات Resources
- Features خاصة بالتطبيق
ليه الطريقة دي مفيدة للمستخدم؟
تقنية Split APKs معمولة علشان تحسن تجربة المستخدم.المستخدم بدل ما يحمل تطبيق حجمه كبير جدًا…
بيتم تحميل الأجزاء اللي جهازه محتاجها بس.
المميزات 👇
📉 حجم تحميل أقل
⚡ تثبيت أسرع
📱 توافق أفضل مع الجهاز
لكن هنا المشكلة بتبدأ بالنسبة للي بيحلل التطبيق 😏⚡ تثبيت أسرع
📱 توافق أفضل مع الجهاز
الغلطة الكبيرة اللي بيقع فيها الباحثين
كتير من الباحثين لما ييجوا يعملوا Reverse Engineering للتطبيق بيعملوا حاجة بسيطة… لكنها كارثية.بيحللوا الملف ده فقط:
base.apkويتجاهلوا باقي الملفات.
المشكلة إن ده ممكن يخليك تضيع ثغرات مهمة جدًا.
فين ممكن تكون الثغرات مخفية؟
في تطبيقات كتير بتوزع المعلومات الحساسة داخل ملفات الـ Split APK.ممكن تلاقي مثلًا:
🔑 API Keys داخل ملفات resources الخاصة بلغة معينة.
⚙ Native Libraries داخل ملف المعمارية مثل:
split_config.arm64.apk📦 Features أو كود مخفي داخل ملفات تانية.
بمعنى أبسط…
التطبيق الحقيقي = كل ملفات APK مع بعض
مش ملف واحد بس.
أدوات تحليل تطبيقات الأندرويد
لو بتشتغل في تحليل التطبيقات أو Android Reverse Engineering فغالبًا هتستخدم أدوات زي:- JADX
- APKTool
- MobSF
مثال عملي لتحليل Split APK
لو سحبت التطبيق من الموبايل باستخدام ADB ممكن تشوف كل ملفات APK الخاصة بيه بالشكل ده: Code:
adb shell pm path com.example.app بعدها تقدر تسحبهم:
Code:
adb pull /data/app/com.example.app/base.apk
adb pull /data/app/com.example.app/split_config.arm64.apk
adb pull /data/app/com.example.app/split_config.en.apk الخلاصة في عالم Bug Hunting
في عالم Mobile Bug Bounty و Mobile Penetration Testingمش كل الثغرات بتكون مخفية في الكود.
أحيانًا الثغرة بتكون موجودة في جزء من التطبيق… أنت أصلًا ما فتحتهوش.
علشان كده دايمًا افتكر القاعدة دي 👇
أي تطبيق أندرويد حديث = مجموعة Split APKs مش ملف واحد.
ولو تجاهلت جزء منهم…
ممكن تضيع ثغرة كاملة بدون ما تاخد بالك. 🔍🔥