DexGuard, Guardsquare tarafından sağlanan, Android uygulamalarını tersine mühendislikten korumaya yönelik bir çözümdür. Araç, derleme aşamasında DEX bayt kodunun karartılmasını, şifrelenmesini ve proaktif izlenmesini gerçekleştirir. Guardsquare, 2025'e göre ürün, bankacılık ve ödeme sistemleri dahil 10.000'den fazla ticari projede kullanılmaktadır. DexGuard, uygulamanın kaynak kodunu değiştirmeden ters derleme ve çalışma zamanı saldırılarına karşı koruma ekleyerek ProGuard'ın yeteneklerini genişletir.
Anahtar noktalar
DexGuard, ProGuard'ı (Eric Lafortune) oluşturan aynı ekip tarafından geliştirilen, Android uygulamalarını karartmak ve korumak için ticari bir araçtır. Ürün, standart ProGuard karartmasının yetersiz olduğu projeler için bir uzantı olarak 2012'de ortaya çıktı. DexGuard, derleme sonrası aşamada çalışır, APK paketlemeden önce DEX bayt kodunu korumalı bir forma dönüştürür.
DexGuard mimarisi, çok katmanlı bir koruma modeli üzerine inşa edilmiştir. İlk katman, overload induction kullanarak sınıf, yöntem ve alan adlarının karartılmasıdır. İkincisi, string sabitlerinin şifrelenmesi ve çalışma zamanında stub yöntemler aracılığıyla yüklenmesidir. Üçüncüsü, imzaların sağlama toplamı doğrulaması yoluyla APK bütünlük kontrolüdür. Guardsquare teknik raporuna (2025) göre, bu katmanların birleşik kullanımı, uygulama analiz süresini birkaç dakikadan birkaç haftaya çıkarır.
DexGuard, tüm Android proje türlerini destekler: uygulamalar, kütüphaneler, SDK'ler ve Unity oyun projeleri. Araç, com.guardsquare.dexguard eklentisi aracılığıyla standart Gradle boru hattına entegre olur ve kurulumdan sonra manuel müdahale gerektirmez.
DexGuard ile açık kaynak alternatifleri arasındaki temel fark, aktif çalışma zamanı korumasıdır. Araç yalnızca kodu karartmakla kalmaz, uygulama yürütme sırasında kontroller gerçekleştiren bir ajan ekler. Bu, Frida enjeksiyonu, Xposed veya JDWP hata ayıklama gibi saldırıları tespit etmeyi ve bunlara yanıt vermeyi sağlar: çökme, sahte veri oluşturma veya sunucu bildirimi.
DexGuard'da karartma süreci, her biri belirli bir saldırı vektörünü hedefleyen sıralı bayt kodu dönüşüm aşamalarından oluşur.
Standart bir karartma aracı, adları tek karakterli a, b, c ile değiştirir. DexGuard, overload induction kullanır — farklı imzalara sahip farklı yöntemlere aynı kısa adı atar. Ters derleyici aşırı yüklemeyi çözemez ve hatalı kod üretir. Guardsquare testlerine göre, ad aşırı yüklemesi ters derleme hatalarını %78 artırır.
String literal'leri, URL'ler, API anahtarları ve token'lar, derleme aşamasında AES-256 kullanılarak şifrelenir. Çalışma zamanında, bir stub yöntemi kullanımdan önce string'in şifresini çözer ve sonrasında bellek alanını sıfırlar. Bu, DEX dosyasındaki string'lerin statik olarak görüntülenmesine karşı korur. Şifreleme olmadan sonuç örneği: bir saldırgan strings dexguard.apk çalıştırır ve tüm API uç noktalarını düz metin olarak görür.
DexGuard, her DEX dosyası için bir SHA-256 karması hesaplar ve değeri yerel katmanda saklar. Uygulama başlatıldığında, ajan geçerli karmayı referansla karşılaştırır. Uyuşmazlık durumunda (değiştirilmiş APK), uygulama sonlanır. Ek olarak, kaynaklar ve manifest için bütünlük kontrolleri yapılandırılabilir.
// build.gradle (uygulama seviyesi)
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"
}
}
}
}
Her iki araç da aynı şirket tarafından geliştirilmiştir ancak farklı senaryoları hedefler. ProGuard, Android SDK'da varsayılan olarak bulunan açık kaynaklı bir optimize edici ve minimum karartma aracıdır. DexGuard, ücretsiz sürümde bulunmayan koruma seviyeleri ekleyen ticari bir üründür.
| Özellik | ProGuard | DexGuard |
|---|---|---|
| Lisans | Açık kaynak (GPL) | Ticari |
| Ad karartma | Basit değiştirme | Overload induction |
| String şifreleme | Hayır | AES-256 |
| RASP koruması | Hayır | Evet |
| Frida tespiti | Hayır | Evet |
| Hata ayıklama koruması | Hayır | Evet |
| Bütünlük kontrolü | Hayır | SHA-256 karmalama |
| Unity desteği | Hayır | Evet |
Araçlar arasındaki seçim, korunan bilginin sınıfına göre belirlenir. Sıradan bir mobil uygulama için ProGuard yeterlidir. Kod ifşasının finansal veya düzenleyici riskler oluşturduğu bankacılık, ödeme ve tıbbi uygulamalar için DexGuard önerilen çözümdür. OWASP Mobile Top 10 (2024)'e göre, hassas veriler içeren uygulamalarda karartma eksikliği kritik bir risk olarak kabul edilir.
DexGuard entegrasyonu, kök build.gradle'a Guardsquare deposunun eklenmesiyle başlar. 9.x sürümü eklentisi, AGP 7.4–8.5 ve Gradle 7.6–8.7 ile uyumludur. Koruma yapılandırması, belirli tekniklerin etkinleştirildiği ayrı bir dexguard-project.txt dosyasında tanımlanır.
// kök build.gradle
buildscript {
repositories {
maven { url "https://maven.guardsquare.com/dexguard" }
}
}
// dexguard-project.txt — minimum yapılandırma
# String şifreleme
@stringEncryption
# Overload induction ile karartma
@overloadInduction
# APK bütünlük kontrolü
@integrityCheck
# Hata ayıklayıcı ve emülatör koruması
@antiDebug
@antiEmulator
@stringEncryption ve @overloadInduction yönergeleri, ticari kodu korumak için anahtardır. Tüm ek açıklamalar etkinleştirildiğinde, derleme süresi 30–60 saniye artar, bu da koruma seviyesiyle haklı çıkar. Yapılandırma VCS'de saklanır ve yalnızca sürüm derlemeleri için uygulanır.
Yansıma kullanan sınıflar için istisnalar yapılandırmak önemlidir. DexGuard, ProGuard gibi, yansımayı otomatik olarak analiz etmez. dexguard-project.txt'de, Class.forName veya @JavascriptInterface aracılığıyla yüklenen kütüphane sınıfları için -keep kuralları eklemeniz gerekir.
// dexguard-project.txt — keep kuralları
# Gson model sınıflarını koru
-keep class com.example.model.** { *; }
# WebView arayüzlerini koru
-keepclassmembers class * {
@android.webkit.JavascriptInterface <methods>;
}
# Firebase çökme raporlarını hariç tut
-keep class com.google.firebase.** { *; }
DexGuard, statik (derleme aşamasında) ve dinamik (çalışma zamanında) olarak ayrılan 20'den fazla koruma tekniği içerir. Belirli tekniklerin seçimi, uygulamanın tehdit modeline bağlıdır.
Kaynak şifreleme — görüntüler, varlıklar ve yapılandırma dosyaları ilk erişimde şifrelenir ve şifresi çözülür. Kontrol akışı karartması, ölü kod ekler ve talimat dizilerini değiştirerek bayt kodunu jadx gibi ters derleyiciler için okunamaz hale getirir. Sabit gizleme, sayısal literal'leri çalışma zamanında hesaplanan aritmetik ifadelerle değiştirir.
Runtime Application Self-Protection — uygulama içinde çalışma zamanı ortamının davranışını izleyen bir ajandır. DexGuard RASP şunları tespit eder: /proc/self/maps aracılığıyla Frida bağlantısı, Xposed Framework varlığı, bir hata ayıklayıcı (JDWP) altında çalışma, Android emülatörü (QEMU). Tehdit tespit edildiğinde, bir politika tetiklenir — çökme veya yanlış veri oluşturma. OWASP Mobile Security (2025) araştırmasına göre, RASP koruması tipik otomatik saldırıların %94'ünü durdurmuştur.
DexGuard, kritik kod bölümlerine rastgele gecikmeler ekleyerek dinamik analiz sırasında kaba kuvvet süresini artırır. Parametre milisaniye cinsinden ayarlanır ve her derlemede rastgeleleştirilir. Bu, fuzzing araçlarının ve otomatik tarayıcıların kullanımını zorlaştırır.
Mevcut bir projeye DexGuard entegre edilirken, kütüphaneler ve popüler SDK'lerle geriye dönük uyumluluk dikkate alınmalıdır. Bazı kütüphaneler, yansıma çağrıları nedeniyle aşırı karartma ile uyumsuzdur.
DexGuard, doğru keep kuralları ile Firebase Crashlytics, Google Analytics, Google Play Services, Retrofit, OkHttp, Glide ve Gson ile uyumludur. Ek açıklamalar ve kod oluşturma kullanan kütüphaneler (Dagger, Hilt, Room, DataBinding), oluşturulan sınıfların açıkça korunmasını gerektirir. Guardsquare ekibi, popüler SDK'ler için resmi yapılandırma örnekleri yayınlar.
Minimum gereksinimler: Android Gradle Plugin 7.4, Gradle 7.6, JDK 11. DexGuard 9.1, targetSdk 34 ve compileSdk 34'ü destekler. Java 17 ve AGP 8.2+ için DexGuard sürüm 9.2 ve üzeri gereklidir. Araç, tam optimizasyon modunda R8 ile uyumsuzdur — DexGuard kullanıldığında, R8 otomatik olarak devre dışı bırakılır.
DexGuard'ı yapılandırdıktan sonra, yansıma ve dinamik sınıf yüklemeden etkilenen tüm yolların regresyon testi gereklidir. Yayınlamadan önce koruma etkinleştirilmiş bir derlemede UI otomasyon testlerinin çalıştırılması önerilir. Guardsquare, uygulamayı çökertmeden çalışma zamanında ClassNotFoundException hatalarını günlüğe kaydeden DexGuard Tracer yardımcı programını sağlayarak keep kuralı hata ayıklamasını basitleştirir.
Sıkça Sorulan Sorular
ProGuard, temel ad değiştirme ve bayt kodu optimizasyonu ile ücretsiz bir karartma aracıdır. DexGuard, AES-256 string şifreleme, adlar için overload induction, çalışma zamanında RASP ajanı, APK bütünlük kontrolü ve Frida, Xposed, emülatör ve hata ayıklayıcı tespiti ekler. ProGuard sıradan uygulamalar için yeterlidir, DexGuard bankacılık ve kurumsal uygulamalar içindir.
DexGuard, yıllık ödemeli ticari lisansla dağıtılır. Maliyet, proje sayısına ve abonelik türüne bağlıdır. 2025 itibarıyla, tek bir proje için temel lisans yıllık 5.000 USD'den başlar. Startup'lar için %40'a varan indirimle ortaklık programı mevcuttur.
Evet, DexGuard, coroutine'ler ve Compose derleyicisi dahil olmak üzere Kotlin ve Jetpack Compose ile tam uyumludur. Kotlin derleyicisi tarafından oluşturulan sınıflar için ek keep kuralları gerekir. Guardsquare, resmi belgelerdeki kotlin-project.txt yapılandırma şablonunun kullanılmasını önerir.
String şifreleme ve RASP ajanı eklenmesi, korunan kod miktarına bağlı olarak APK boyutunu %5–15 artırır. Ad karartma ve kontrol akışı karartması boyutu artırmaz — mevcut adları değiştirirler. Ortalama olarak, tam DexGuard korumalı bir APK, orijinalinden %8–12 daha büyük olur.
Evet, koruma yapılandırması yalnızca sürüm derleme türü için uygulanır. Hata ayıklama derlemeleri için DexGuard otomatik olarak şifrelemeyi ve RASP kontrollerini devre dışı bırakır. Geliştiriciler, korumalı derlemeyi test etmek için gradle.properties dosyasındaki guard.force.enable=true parametresi aracılığıyla hata ayıklama modunda DexGuard'ı zorla etkinleştirebilir.
Özet
Anahtar teslim bir mobil uygulama geliştireceğiz
IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.
Ayrıca okuyun