DexGuard: ما هو، التعتيم وحماية تطبيقات Android

المؤلف: IT Sectr نُشر: 2026-04-03 وقت القراءة: 8 دق

DexGuard هو حل لحماية تطبيقات Android من الهندسة العكسية، مقدم من Guardsquare. تقوم الأداة بالتعتيم والتشفير والمراقبة الاستباقية لـ DEX bytecode في مرحلة البناء. وفقًا لـ Guardsquare, 2025، يُستخدم المنتج في أكثر من 10,000 مشروع تجاري، بما في ذلك الأنظمة المصرفية وأنظمة الدفع. DexGuard يوسع قدرات ProGuard بإضافة حماية ضد فك التجميع وهجمات وقت التشغيل دون تعديل الكود المصدري للتطبيق.

النقاط الرئيسية

  • DexGuard هو أداة تعتيم تجارية لنظام Android، خليفة ProGuard مع حماية معززة ضد الهندسة العكسية
  • التشفير للسلاسل والفئات يحدث في مرحلة البناء، مما يجعل أقسام القراءة لملف DEX غير قابلة للوصول للتحليل الثابت
  • التحكم في التكامل يتحقق من توقيع APK في وقت التشغيل ويوقف التنفيذ عند اكتشاف التعديل
  • الكشف عن المصحح والمحاكي وFrida يمنع التحليل الديناميكي في وقت التشغيل
  • وكيل RASP يكتشف التلاعب بالذاكرة واعتراض استدعاءات النظام على جهاز قيد التشغيل

ما هو DexGuard؟

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

عملية التعتيم في DexGuard تتكون من مراحل متتالية لتحويل bytecode، كل منها تستهدف ناقل هجوم محدد.

تعتيم الأسماء مع overload induction

أداة التعتيم القياسية تستبدل الأسماء بأحرف مفردة a, b, c. DexGuard يستخدم overload induction — يعين نفس الاسم القصير لطرق مختلفة بتوقيعات مختلفة. لا يمكن للمفكك حل التحميل الزائد ويولد كودًا غير صحيح. وفقًا لاختبارات Guardsquare، يزيد التحميل الزائد للأسماء من أخطاء فك التجميع بنسبة 78%.

تشفير الثوابت

يتم تشفير حرفيات السلاسل وعناوين URL ومفاتيح API والرموز باستخدام AES-256 في مرحلة البناء. في وقت التشغيل، تقوم طريقة stub بفك تشفير السلسلة قبل الاستخدام وتصفير منطقة الذاكرة بعد ذلك. هذا يحمي من العرض الثابت للسلاسل في ملف DEX. مثال على النتيجة بدون تشفير: يقوم المهاجم بتشغيل strings dexguard.apk ويرى جميع نقاط نهاية API بنص واضح.

التحكم في تكامل الكود

يحسب DexGuard تجزئة SHA-256 لكل ملف DEX ويخزن القيمة في الطبقة الأصلية. عند تشغيل التطبيق، يقارن الوكيل التجزئة الحالية مع التجزئة المرجعية. في حالة عدم التطابق (APK معدّل)، يتم إنهاء التطبيق. بالإضافة إلى ذلك، يمكن تكوين فحوصات تكامل للموارد والملف البياني.

groovy
// 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"
            }
        }
    }
}

DexGuard ضد ProGuard: الاختلافات الرئيسية

كلا الأداتين طورتهما نفس الشركة ولكن تستهدفان سيناريوهات مختلفة. ProGuard هو محسن مفتوح المصدر وأداة تعتيم دنيا مضمنة افتراضيًا في Android SDK. DexGuard هو منتج تجاري يضيف مستويات حماية غير متوفرة في الإصدار المجاني.

الميزةProGuardDexGuard
الترخيصمفتوح المصدر (GPL)تجاري
تعتيم الأسماءاستبدال بسيطOverload induction
تشفير السلاسللاAES-256
حماية RASPلانعم
كشف Fridaلانعم
حماية التصحيحلانعم
التحكم في التكامللاتجزئة SHA-256
دعم Unityلانعم

يتم تحديد الاختيار بين الأدوات حسب فئة المعلومات المحمية. لتطبيق جوال عادي، ProGuard كافٍ. للتطبيقات المصرفية والدفع والطبية حيث يكشف الكود عن مخاطر مالية أو تنظيمية، يعتبر DexGuard الحل الموصى به. وفقًا لـ OWASP Mobile Top 10 (2024)، يعتبر نقص التعتيم في التطبيقات ذات البيانات الحساسة خطرًا حرجًا.

تكوين DexGuard في مشروع Gradle

يبدأ تكامل DexGuard بإضافة مستودع Guardsquare في build.gradle الجذر. البرنامج المساعد الإصدار 9.x متوافق مع AGP 7.4–8.5 وGradle 7.6–8.7. يتم تعريف تكوين الحماية في ملف منفصل dexguard-project.txt، حيث يتم تمكين تقنيات محددة.

groovy
// 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.

groovy
// dexguard-project.txt — قواعد keep
# الحفاظ على فئات نموذج Gson
-keep class com.example.model.** { *; }

# الحفاظ على واجهات WebView
-keepclassmembers class * {
    @android.webkit.JavascriptInterface <methods>;
}

# استبعاد تقارير الأعطال Firebase
-keep class com.google.firebase.** { *; }

تقنيات الحماية في DexGuard

يتضمن DexGuard أكثر من 20 تقنية حماية، مقسمة إلى تقنيات ثابتة (في مرحلة البناء) وديناميكية (في وقت التشغيل). اختيار التقنيات المحددة يعتمد على نموذج التهديد للتطبيق.

الحماية الثابتة

تشفير الموارد — يتم تشفير الصور والأصول وملفات التكوين وفك تشفيرها عند أول وصول. تعتيم تدفق التحكم يُدرج كودًا ميتًا ويغير تسلسل التعليمات، مما يجعل bytecode غير قابل للقراءة لمفككات مثل jadx. إخفاء الثوابت يستبدل الحرفيات الرقمية بتعبيرات حسابية تُحسب في وقت التشغيل.

الحماية الديناميكية (RASP)

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 الشائعة. بعض المكتبات غير متوافقة مع التعتيم الشديد بسبب استدعاءات الانعكاس.

التوافق مع 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.

الأسئلة الشائعة

كيف يختلف DexGuard عن ProGuard؟

ProGuard هو أداة تعتيم مجانية مع استبدال أساسي للأسماء وتحسين bytecode. DexGuard يضيف تشفير سلاسل AES-256، overload induction للأسماء، وكيل RASP في وقت التشغيل، التحكم في تكامل APK وكشف Frida وXposed والمحاكي والمصحح. ProGuard كافٍ للتطبيقات العادية، DexGuard للتطبيقات المصرفية والمؤسسية.

كم تكلفة ترخيص DexGuard؟

يتم توزيع DexGuard بموجب ترخيص تجاري بدفع سنوي. تعتمد التكلفة على عدد المشاريع ونوع الاشتراك. اعتبارًا من 2025، يبدأ الترخيص الأساسي لمشروع واحد من 5,000 USD سنويًا. يتوفر برنامج شراكة مع خصم يصل إلى 40% للشركات الناشئة.

هل يمكن استخدام DexGuard مع Kotlin وJetpack Compose؟

نعم، DexGuard متوافق تمامًا مع Kotlin وJetpack Compose، بما في ذلك coroutines ومترجم Compose. تتطلب قواعد keep إضافية للفئات المولدة بواسطة مترجم Kotlin. Guardsquare توصي باستخدام قالب التكوين kotlin-project.txt من الوثائق الرسمية.

هل يزيد DexGuard من حجم APK؟

تشفير السلاسل وإضافة وكيل RASP يزيدان حجم APK بنسبة 5–15% اعتمادًا على كمية الكود المحمي. تعتيم الأسماء وتعتيم تدفق التحكم لا يزيدان الحجم — هما يستبدلان الأسماء الموجودة. في المتوسط، يصبح APK مع حماية DexGuard الكاملة أكبر بنسبة 8–12% من الأصل.

هل يمكن تعطيل DexGuard للتصحيح؟

نعم، يتم تطبيق تكوين الحماية فقط على نوع بناء الإصدار. لبناءات التصحيح، يقوم DexGuard تلقائيًا بتعطيل التشفير وفحوصات RASP. يمكن للمطورين تمكين DexGuard بالقوة في وضع التصحيح عبر المعامل guard.force.enable=true في gradle.properties لاختبار البناء المحمي.

الخلاصة

  • DexGuard هو أداة حماية تجارية لنظام Android توسع قدرات ProGuard بمجموعة كاملة من تقنيات anti-reversing
  • التعتيم مع overload induction يجعل الكود المفكك غير وظيفي عن طريق توليد تحميلات زائدة غير قابلة للحل للطرق
  • التشفير لثوابت السلاسل والموارد باستخدام AES-256 يمنع التحليل الثابت لملف DEX عبر jadx وstrings
  • وكيل RASP يكتشف Frida وXposed ومصحح JDWP والمحاكي في وقت التشغيل، وينفذ إنهاء عند اكتشاف تهديد
  • التحكم في تكامل APK عبر تجزئة SHA-256 في الطبقة الأصلية يمنع تشغيل نسخة معدلة من التطبيق
  • التكامل في مشروع Gradle مع التعليقات التوضيحية @stringEncryption و@overloadInduction و@antiDebug يتطلب 10–15 دقيقة من الإعداد
  • DexGuard هو الأداة الموصى بها لتطبيقات Android المصرفية والدفع والطبية حيث يحمل اختراق الكود مخاطر مالية

سنقوم بتطوير تطبيق جوال جاهز

تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.

مناقشة المشروع

اقرأ أيضًا