DexGuard هو حل لحماية تطبيقات Android من الهندسة العكسية، مقدم من Guardsquare. تقوم الأداة بالتعتيم والتشفير والمراقبة الاستباقية لـ DEX bytecode في مرحلة البناء. وفقًا لـ Guardsquare, 2025، يُستخدم المنتج في أكثر من 10,000 مشروع تجاري، بما في ذلك الأنظمة المصرفية وأنظمة الدفع. DexGuard يوسع قدرات ProGuard بإضافة حماية ضد فك التجميع وهجمات وقت التشغيل دون تعديل الكود المصدري للتطبيق.
النقاط الرئيسية
DexGuard هو أداة تجارية لتعتيم وحماية تطبيقات Android، طورها نفس الفريق الذي أنشأ ProGuard (Eric Lafortune). ظهر المنتج في عام 2012 كامتداد للمشاريع حيث يكون التعتيم القياسي لـ ProGuard غير كافٍ. يعمل DexGuard في مرحلة ما بعد التجميع، محولاً DEX bytecode إلى شكل محمي قبل تغليف APK.
تم تصميم بنية DexGuard على نموذج حماية متعدد المستويات. المستوى الأول هو تعتيم أسماء الفئات والطرق والحقول باستخدام overload induction. المستوى الثاني هو تشفير ثوابت السلاسل وتحميلها عبر طرق stub في وقت التشغيل. المستوى الثالث هو التحكم في تكامل APK من خلال التحقق من المجموع الاختباري للتوقيعات. وفقًا لتقرير فني من Guardsquare (2025)، فإن الاستخدام المشترك لهذه المستويات يزيد وقت تحليل التطبيق من بضع دقائق إلى عدة أسابيع.
يدعم DexGuard جميع أنواع مشاريع Android: التطبيقات والمكتبات وSDK ومشاريع الألعاب على Unity. تتكامل الأداة في خط أنابيب Gradle القياسي عبر البرنامج المساعد com.guardsquare.dexguard ولا تتطلب تدخلاً يدويًا بعد الإعداد.
الفرق الرئيسي بين DexGuard والبدائل مفتوحة المصدر هو الحماية النشطة في وقت التشغيل. الأداة لا تقوم فقط بتعتيم الكود، بل تضيف وكيلاً يقوم بإجراء فحوصات أثناء تنفيذ التطبيق. هذا يسمح باكتشاف هجمات مثل حقن Frida أو Xposed أو تصحيح JDWP والاستجابة لها: الإنهاء المفاجئ، توليد بيانات مزيفة، أو إخطار الخادم.
عملية التعتيم في DexGuard تتكون من مراحل متتالية لتحويل bytecode، كل منها تستهدف ناقل هجوم محدد.
أداة التعتيم القياسية تستبدل الأسماء بأحرف مفردة a, b, c. DexGuard يستخدم overload induction — يعين نفس الاسم القصير لطرق مختلفة بتوقيعات مختلفة. لا يمكن للمفكك حل التحميل الزائد ويولد كودًا غير صحيح. وفقًا لاختبارات Guardsquare، يزيد التحميل الزائد للأسماء من أخطاء فك التجميع بنسبة 78%.
يتم تشفير حرفيات السلاسل وعناوين URL ومفاتيح API والرموز باستخدام AES-256 في مرحلة البناء. في وقت التشغيل، تقوم طريقة stub بفك تشفير السلسلة قبل الاستخدام وتصفير منطقة الذاكرة بعد ذلك. هذا يحمي من العرض الثابت للسلاسل في ملف DEX. مثال على النتيجة بدون تشفير: يقوم المهاجم بتشغيل strings dexguard.apk ويرى جميع نقاط نهاية API بنص واضح.
يحسب DexGuard تجزئة SHA-256 لكل ملف DEX ويخزن القيمة في الطبقة الأصلية. عند تشغيل التطبيق، يقارن الوكيل التجزئة الحالية مع التجزئة المرجعية. في حالة عدم التطابق (APK معدّل)، يتم إنهاء التطبيق. بالإضافة إلى ذلك، يمكن تكوين فحوصات تكامل للموارد والملف البياني.
// build.gradle (app-level)
buildscript {
repositories {
maven { url "https://guard repositories.com/dexguard" }
}
dependencies {
classpath "com.guardsquare:dexguard-gradle-plugin:9.1.05"
}
}
apply plugin: "com.guardsquare.dexguard"
android {
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
dexguard {
config "dexguard-project.txt"
}
}
}
}
كلا الأداتين طورتهما نفس الشركة ولكن تستهدفان سيناريوهات مختلفة. ProGuard هو محسن مفتوح المصدر وأداة تعتيم دنيا مضمنة افتراضيًا في Android SDK. DexGuard هو منتج تجاري يضيف مستويات حماية غير متوفرة في الإصدار المجاني.
| الميزة | ProGuard | DexGuard |
|---|---|---|
| الترخيص | مفتوح المصدر (GPL) | تجاري |
| تعتيم الأسماء | استبدال بسيط | Overload induction |
| تشفير السلاسل | لا | AES-256 |
| حماية RASP | لا | نعم |
| كشف Frida | لا | نعم |
| حماية التصحيح | لا | نعم |
| التحكم في التكامل | لا | تجزئة SHA-256 |
| دعم Unity | لا | نعم |
يتم تحديد الاختيار بين الأدوات حسب فئة المعلومات المحمية. لتطبيق جوال عادي، ProGuard كافٍ. للتطبيقات المصرفية والدفع والطبية حيث يكشف الكود عن مخاطر مالية أو تنظيمية، يعتبر DexGuard الحل الموصى به. وفقًا لـ OWASP Mobile Top 10 (2024)، يعتبر نقص التعتيم في التطبيقات ذات البيانات الحساسة خطرًا حرجًا.
يبدأ تكامل DexGuard بإضافة مستودع Guardsquare في build.gradle الجذر. البرنامج المساعد الإصدار 9.x متوافق مع AGP 7.4–8.5 وGradle 7.6–8.7. يتم تعريف تكوين الحماية في ملف منفصل dexguard-project.txt، حيث يتم تمكين تقنيات محددة.
// root build.gradle
buildscript {
repositories {
maven { url "https://maven.guardsquare.com/dexguard" }
}
}
// dexguard-project.txt — الحد الأدنى من التكوين
# تشفير السلاسل
@stringEncryption
# التعتيم مع overload induction
@overloadInduction
# التحكم في تكامل APK
@integrityCheck
# حماية من المصحح والمحاكي
@antiDebug
@antiEmulator
التوجيهات @stringEncryption و @overloadInduction هي المفتاح لحماية الكود التجاري. عند تنشيط جميع التعليقات التوضيحية، يزيد وقت البناء بمقدار 30–60 ثانية، وهو أمر مبرر بمستوى الحماية. يتم تخزين التكوين في VCS ويطبق فقط لبناءات الإصدار.
من المهم تكوين استثناءات للفئات التي تستخدم الانعكاس. DexGuard، مثل ProGuard، لا يحلل الانعكاس تلقائيًا. في dexguard-project.txt، تحتاج إلى إضافة قواعد -keep لفئات المكتبات المحملة عبر Class.forName أو @JavascriptInterface.
// dexguard-project.txt — قواعد keep
# الحفاظ على فئات نموذج Gson
-keep class com.example.model.** { *; }
# الحفاظ على واجهات WebView
-keepclassmembers class * {
@android.webkit.JavascriptInterface <methods>;
}
# استبعاد تقارير الأعطال Firebase
-keep class com.google.firebase.** { *; }
يتضمن DexGuard أكثر من 20 تقنية حماية، مقسمة إلى تقنيات ثابتة (في مرحلة البناء) وديناميكية (في وقت التشغيل). اختيار التقنيات المحددة يعتمد على نموذج التهديد للتطبيق.
تشفير الموارد — يتم تشفير الصور والأصول وملفات التكوين وفك تشفيرها عند أول وصول. تعتيم تدفق التحكم يُدرج كودًا ميتًا ويغير تسلسل التعليمات، مما يجعل bytecode غير قابل للقراءة لمفككات مثل jadx. إخفاء الثوابت يستبدل الحرفيات الرقمية بتعبيرات حسابية تُحسب في وقت التشغيل.
Runtime Application Self-Protection — وكيل داخل التطبيق يراقب سلوك بيئة التشغيل. يكتشف DexGuard RASP: اتصال Frida عبر /proc/self/maps، وجود Xposed Framework، التشغيل تحت مصحح (JDWP)، محاكي Android (QEMU). عند اكتشاف تهديد، يتم تفعيل سياسة — إنهاء أو توليد بيانات غير صحيحة. وفقًا لبحث OWASP Mobile Security (2025)، أوقفت حماية RASP 94% من الهجمات الآلية النموذجية.
يضيف DexGuard تأخيرات عشوائية في أقسام الكود الحرجة، مما يزيد وقت القوة العمياء أثناء التحليل الديناميكي. يتم تعيين المعلمة بالمللي ثانية ويتم عشوائيتها مع كل بناء. هذا يعقد استخدام أدوات fuzzing والماسحات الضوئية الآلية.
عند دمج DexGuard في مشروع قائم، يجب مراعاة التوافق العكسي مع المكتبات وSDK الشائعة. بعض المكتبات غير متوافقة مع التعتيم الشديد بسبب استدعاءات الانعكاس.
DexGuard متوافق مع Firebase Crashlytics وGoogle Analytics وGoogle Play Services وRetrofit وOkHttp وGlide وGson مع قواعد keep صحيحة. المكتبات التي تستخدم التعليقات التوضيحية وتوليد الكود (Dagger, Hilt, Room, DataBinding) تتطلب الحفظ الصريح للفئات المولدة. ينشر فريق Guardsquare نماذج تكوين رسمية لـ SDK الشائعة.
الحد الأدنى من المتطلبات: Android Gradle Plugin 7.4، Gradle 7.6، JDK 11. DexGuard 9.1 يدعم targetSdk 34 وcompileSdk 34. لـ Java 17 وAGP 8.2+، مطلوب DexGuard الإصدار 9.2 وما فوق. الأداة غير متوافقة مع R8 في وضع التحسين الكامل — عند استخدام DexGuard، يتم تعطيل R8 تلقائيًا.
بعد تكوين DexGuard، من الضروري إجراء اختبار انحداري لجميع المسارات المتأثرة بالانعكاس والتحميل الديناميكي للفئات. يوصى بتشغيل اختبارات واجهة المستخدم الآلية على بناء مع تمكين الحماية قبل الإصدار. توفر Guardsquare أداة DexGuard Tracer، التي تسجل أخطاء ClassNotFoundException في وقت التشغيل دون إنهاء التطبيق، مما يبسط تصحيح أخطاء قواعد keep.
الأسئلة الشائعة
ProGuard هو أداة تعتيم مجانية مع استبدال أساسي للأسماء وتحسين bytecode. DexGuard يضيف تشفير سلاسل AES-256، overload induction للأسماء، وكيل RASP في وقت التشغيل، التحكم في تكامل APK وكشف Frida وXposed والمحاكي والمصحح. ProGuard كافٍ للتطبيقات العادية، DexGuard للتطبيقات المصرفية والمؤسسية.
يتم توزيع DexGuard بموجب ترخيص تجاري بدفع سنوي. تعتمد التكلفة على عدد المشاريع ونوع الاشتراك. اعتبارًا من 2025، يبدأ الترخيص الأساسي لمشروع واحد من 5,000 USD سنويًا. يتوفر برنامج شراكة مع خصم يصل إلى 40% للشركات الناشئة.
نعم، DexGuard متوافق تمامًا مع Kotlin وJetpack Compose، بما في ذلك coroutines ومترجم Compose. تتطلب قواعد keep إضافية للفئات المولدة بواسطة مترجم Kotlin. Guardsquare توصي باستخدام قالب التكوين kotlin-project.txt من الوثائق الرسمية.
تشفير السلاسل وإضافة وكيل RASP يزيدان حجم APK بنسبة 5–15% اعتمادًا على كمية الكود المحمي. تعتيم الأسماء وتعتيم تدفق التحكم لا يزيدان الحجم — هما يستبدلان الأسماء الموجودة. في المتوسط، يصبح APK مع حماية DexGuard الكاملة أكبر بنسبة 8–12% من الأصل.
نعم، يتم تطبيق تكوين الحماية فقط على نوع بناء الإصدار. لبناءات التصحيح، يقوم DexGuard تلقائيًا بتعطيل التشفير وفحوصات RASP. يمكن للمطورين تمكين DexGuard بالقوة في وضع التصحيح عبر المعامل guard.force.enable=true في gradle.properties لاختبار البناء المحمي.
الخلاصة
سنقوم بتطوير تطبيق جوال جاهز
تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.