DexGuard — Guardsquare tərəfindən təmin edilən Android tətbiqlərini əks mühəndislikdən qorumaq üçün həll yoludur. Alət DEX-baytkodunun yığılma mərhələsində obfuskasiya, şifrələmə və proaktiv monitorinq həyata keçirir. Guardsquare, 2025 məlumatlarına görə, məhsul 10 000-dən çox kommersiya layihəsində, o cümlədən bank və ödəniş sistemlərində istifadə olunur. DexGuard ProGuard-ın imkanlarını genişləndirərək, tətbiqin mənbə kodunu dəyişmədən dekompilasiyadan və runtime hücumlarından qoruma əlavə edir.
Əsas məqamlar
DexGuard — ProGuard-ı yaradan eyni komanda (Eric Lafortune) tərəfindən hazırlanmış Android tətbiqlərinin obfuskasiyası və qorunması üçün kommersiya alətidir. Məhsul 2012-ci ildə ProGuard-ın standart obfuskasiyasının kifayət etmədiyi layihələr üçün genişləndirmə kimi ortaya çıxdı. DexGuard post-kompilasiya mərhələsində işləyir, DEX-baytkodunu APK paketlənməsindən əvvəl qorunan formaya çevirir.
DexGuard-ın arxitekturası çoxsəviyyəli qoruma modeli üzərində qurulub. Birinci səviyyə — sinif, metod və sahə adlarının overload induction istifadə edərək obfuskasiyası. İkinci — string sabitlərinin şifrələnməsi və onların runtime-də stub-metodlar vasitəsilə yüklənməsi. Üçüncü — imza yoxlama məbləği vasitəsilə APK inteqral nəzarəti. Guardsquare (2025) texniki hesabatına görə, bu səviyyələrin birləşmiş tətbiqi tətbiqin analiz müddətini bir neçə dəqiqədən bir neçə həftəyə qədər artırır.
DexGuard bütün Android layihə növlərini dəstəkləyir: tətbiqlər, kitabxanalar, SDK və Unity oyun layihələri. Alət com.guardsquare.dexguard plaqini vasitəsilə standart Gradle pipeline-nə inteqrasiya olunur və konfiqurasiyadan sonra əl müdaxiləsi tələb etmir.
DexGuard-ın open-source analoqlardan əsas fərqi — runtime-də aktiv qorumadır. Alət sadəcə kodu gizlətmir, həm də tətbiqin işləməsi zamanı yoxlamalar aparan agent əlavə edir. Bu, Frida, Xposed və ya JDWP vasitəsilə debug kimi hücumları aşkar etməyə və onlara reaksiya verməyə imkan verir: qəza ilə dayandırma, yalan məlumat yaratma və ya serverə bildiriş göndərmə.
DexGuard-da obfuskasiya prosesi hər biri konkret hücum vektoruna yönəlmiş ardıcıl baytkod transformasiya mərhələlərindən ibarətdir.
Standart obfusktor adları bir simvollu a, b, c ilə əvəz edir. DexGuard overload induction istifadə edir — eyni qısa adı müxtəlif siqnaturlu fərqli metoda təyin edir. Dekompilator overload-u həll edə bilmir və səhv kod yaradır. Guardsquare testlərinə görə, adların overload edilməsi dekompilasiya xətalarının sayını 78% artırır.
String literalları, URL-lər, API açarları və tokenlər yığılma mərhələsində AES-256 alqoritmi ilə şifrələnir. Runtime-də stub-metod istifadədən əvvəl string-i deşifrə edir və sonra yaddaş sahəsini sıfırlayır. Bu, DEX faylında string-lərin statik baxışından qoruyur. Şifrələmə olmadan nəticə nümunəsi: hücumçu strings dexguard.apk işlədir və bütün API endpoint-lərini açıq formada görür.
DexGuard hər DEX faylı üçün SHA-256 hash hesablayır və dəyəri native qatda saxlayır. Tətbiq işə salındıqda agent cari hashi etalonla müqayisə edir. Uyğunsuzluq halında (dəyişdirilmiş APK) tətbiq dayandırılır. Əlavə olaraq resursların və manifestin inteqral yoxlaması konfiqurasiya edilə bilər.
// build.gradle (tətbiq səviyyəsi)
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"
}
}
}
}
Hər iki alət eyni şirkət tərəfindən hazırlanıb, lakin fərqli ssenarilər üçün nəzərdə tutulub. ProGuard — Android SDK-ya defolt olaraq daxil olan open-source optimizator və minimal obfuskator. DexGuard — pulsuz versiyada mövcud olmayan qoruma səviyyələri əlavə edən kommersiya məhsuludur.
| Xüsusiyyət | ProGuard | DexGuard |
|---|---|---|
| Lisenziya | Open-source (GPL) | Kommersiya |
| Ad obfuskasiyası | Sadə dəyişdirmə | Overload induction |
| String şifrələməsi | Xeyr | AES-256 |
| RASP qoruma | Xeyr | Bəli |
| Frida aşkarlanması | Xeyr | Bəli |
| Debugdan qoruma | Xeyr | Bəli |
| İnteqral nəzarəti | Xeyr | SHA-256 hash |
| Unity dəstəyi | Xeyr | Bəli |
Alətlər arasında seçim qorunan məlumatların sinfi ilə müəyyən edilir. Adi mobil tətbiq üçün ProGuard kifayətdir. Bank, ödəniş və tibbi tətbiqlər üçün, kodun açıqlanması maliyyə və ya tənzimləyici risklərə səbəb olduqda, DexGuard tövsiyə olunan həll yoludur. OWASP Mobile Top 10 (2024)-ə görə, məxfi məlumatları olan tətbiqlərdə obfuskasiyanın olmaması kritik risk hesab olunur.
DexGuard inteqrasiyası kök build.gradle-də Guardsquare deposunun qoşulması ilə başlayır. 9.x versiyasındakı plagin AGP 7.4–8.5 və Gradle 7.6–8.7 ilə uyğundur. Qoruma konfiqurasiyası ayrıca dexguard-project.txt faylında müəyyən edilir, burada konkret üsullar aktivləşdirilir.
// kök build.gradle
buildscript {
repositories {
maven { url "https://maven.guardsquare.com/dexguard" }
}
}
// dexguard-project.txt — minimal konfiqurasiya
# String şifrələməsi
@stringEncryption
# Adların overload ilə obfuskasiyası
@overloadInduction
# APK inteqral nəzarəti
@integrityCheck
# Debug və emulyatordan qoruma
@antiDebug
@antiEmulator
@stringEncryption və @overloadInduction direktivləri kommersiya kodunun qorunması üçün əsasdır. Bütün annotasiyalar aktivləşdirildikdə yığılma müddəti 30–60 saniyə artır, bu da qoruma səviyyəsi ilə əsaslandırılır. Konfiqurasiya VCS-də saxlanılır və yalnız release quruluşu üçün tətbiq edilir.
Reflection vasitəsilə istifadə olunan siniflər üçün istisnalar konfiqurasiya etmək vacibdir. DexGuard, ProGuard kimi, reflection-u avtomatik təhlil etmir. dexguard-project.txt-də Class.forName və ya @JavascriptInterface vasitəsilə yüklənən kitabxana sinifləri üçün -keep qaydaları əlavə edilməlidir.
// dexguard-project.txt — keep qaydaları
# Gson model siniflərini saxla
-keep class com.example.model.** { *; }
# WebView interfeyslərini saxla
-keepclassmembers class * {
@android.webkit.JavascriptInterface <methods>;
}
# Firebase crash hesabatlarını istisna et
-keep class com.google.firebase.** { *; }
DexGuard 20-dən çox qoruma üsulunu ehtiva edir, statik (yığılma mərhələsində) və dinamik (runtime-də) bölünür. Konkret üsulların seçimi tətbiqin təhdid modelindən asılıdır.
Resursların şifrələnməsi — şəkillər, aktivlər və konfiqurasiya faylları ilk girişdə şifrələnir və deşifrə olunur. İdarəetmə axınının gizlədilməsi (control flow obfuscation) ölü kod daxil edir və təlimatların ardıcıllığını dəyişərək baytkodu jadx kimi dekompilatorlar üçün oxunmaz edir. Sabitlərin gizlədilməsi (constant hiding) ədədi literalları runtime-də hesablanan arifmetik ifadələrlə əvəz edir.
Runtime Application Self-Protection — tətbiq daxilində icra mühitinin davranışını izləyən agent. DexGuard RASP aşkar edir: /proc/self/maps vasitəsilə Frida qoşulması, Xposed Framework varlığı, debugger altında işə salma (JDWP), Android emulyatoru (QEMU). Təhdid aşkar edildikdə siyasət işə düşür — crash və ya yanlış məlumat yaradılması. OWASP Mobile Security (2025) tədqiqatına görə, RASP qoruma tipik avtomatlaşdırılmış hücumların 94%-ni dayandırıb.
DexGuard kritik kod hissələrinə təsadüfi gecikmələr əlavə edir, dinamik analiz zamanı sınaq müddətini artırır. Parametr millisaniyələrlə müəyyən edilir və hər yığılmada randomizə olunur. Bu, fuzzing alətləri və avtomatik skanerlərin istifadəsini çətinləşdirir.
Mövcud layihəyə DexGuard tətbiq edilərkən kitabxanalar və populyar SDK-larla geriyə uyğunluq nəzərə alınmalıdır. Bəzi kitabxanalar reflection çağırışları səbəbindən ekstremal obfuskasiya ilə uyğun deyil.
DexGuard düzgün keep qaydaları ilə Firebase Crashlytics, Google Analytics, Google Play Services, Retrofit, OkHttp, Glide və Gson ilə uyğundur. Annotasiya və code generation istifadə edən kitabxanalar (Dagger, Hilt, Room, DataBinding) yaradılmış siniflərin açıq şəkildə saxlanmasını tələb edir. Guardsquare komandası populyar SDK-lar üçün rəsmi konfiqurasiya nümunələri dərc edir.
Minimum tələblər: Android Gradle Plugin 7.4, Gradle 7.6, JDK 11. DexGuard 9.1 targetSdk 34 və compileSdk 34-ü dəstəkləyir. Java 17 və AGP 8.2+ üçün DexGuard 9.2 və daha yüksək versiya tələb olunur. Alət tam optimallaşdırma rejimində R8 ilə uyğun deyil — DexGuard istifadə edildikdə R8 avtomatik olaraq söndürülür.
DexGuard konfiqurasiyasından sonra reflection və dinamik sinif yükləmə ilə əhatə olunan bütün yolların reqressiya testi aparılmalıdır. Buraxılışdan əvvəl qoruma aktiv olan build-də UI avtotestlərinin işə salınması tövsiyə olunur. Guardsquare tətbiqi çökdürmədən runtime-də ClassNotFoundException xətalarını qeyd edən DexGuard Tracer alətini təqdim edir, keep qaydalarının debug edilməsini asanlaşdırır.
Tez-tez verilən suallar
ProGuard — əsas ad dəyişdirmə və baytkod optimallaşdırması ilə pulsuz obfuskator. DexGuard AES-256 string şifrələməsi, adlar üçün overload induction, runtime-də RASP agenti, APK inteqral nəzarəti və Frida, Xposed, emulyator və debugger aşkarlanması əlavə edir. ProGuard adi tətbiqlər üçün kifayətdir, DexGuard — bank və korporativ tətbiqlər üçün.
DexGuard illik ödənişlə kommersiya lisenziyası ilə yayılır. Qiymət layihələrin sayından və abunə növündən asılıdır. 2025-ci il üçün bir layihə üçün əsas lisenziya 5 000 USD-dən başlayır. Startaplar üçün 40% endirimlə tərəfdaşlıq proqramı mövcuddur.
Bəli, DexGuard Kotlin və Jetpack Compose, o cümlədən korutinlər və Compose kompilatoru ilə tam uyğundur. Kotlin kompilatoru tərəfindən yaradılan siniflər üçün əlavə keep qaydaları tələb olunur. Guardsquare rəsmi sənədlərdən kotlin-project.txt konfiqurasiya şablonundan istifadə etməyi tövsiyə edir.
String şifrələməsi və RASP agentinin əlavə edilməsi qorunan kodun həcmindən asılı olaraq APK-nı 5–15% artırır. Adların obfuskasiyası və idarəetmə axınının gizlədilməsi ölçünü artırmır — onlar mövcud adları əvəz edir. Orta hesabla, tam DexGuard qoruması ilə APK orijinaldan 8–12% böyük olur.
Bəli, qoruma konfiqurasiyası yalnız release build növünə tətbiq edilir. Debug build üçün DexGuard avtomatik olaraq şifrələməni və RASP yoxlamalarını söndürür. Tərtibatçı gradle.properties faylında guard.force.enable=true parametri vasitəsilə debug rejimində DexGuard-ı məcburi aktivləşdirə bilər.
Xülasə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun