DexGuard: nedir, karartma ve Android uygulamalarının korunması

Yazar: IT Sectr Yayınlanma: 2026-04-03 Okuma süresi: 8 dk

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, tersine mühendisliğe karşı gelişmiş koruma ile ProGuard'ın halefi olan ticari bir Android karartma aracıdır
  • Stringlerin ve sınıfların şifrelenmesi derleme aşamasında gerçekleşir ve DEX dosyasının okuma bölümlerini statik analiz için erişilemez hale getirir
  • Bütünlük kontrolü, çalışma zamanında APK imzasını doğrular ve değişiklik tespit edildiğinde yürütmeyi durdurur
  • Hata ayıklayıcı, emülatör ve Frida tespiti, çalışma zamanında dinamik analizi önler
  • RASP ajanı, çalışan bir cihazda bellek manipülasyonlarını ve sistem çağrısı engellemelerini tespit eder

DexGuard nedir?

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 nasıl çalışır

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.

Overload induction ile ad karartma

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.

Sabit şifreleme

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.

Kod bütünlük kontrolü

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.

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

DexGuard vs ProGuard: temel farklar

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.

ÖzellikProGuardDexGuard
LisansAçık kaynak (GPL)Ticari
Ad karartmaBasit değiştirmeOverload induction
String şifrelemeHayırAES-256
RASP korumasıHayırEvet
Frida tespitiHayırEvet
Hata ayıklama korumasıHayırEvet
Bütünlük kontrolüHayırSHA-256 karmalama
Unity desteğiHayırEvet

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.

Gradle projesinde DexGuard yapılandırması

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.

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

groovy
// 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 koruma teknikleri

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.

Statik koruma

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.

Dinamik koruma (RASP)

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.

Zaman tabanlı saldırılara karşı koruma

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.

Entegrasyon kuralları ve uyumluluk

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.

Popüler SDK'lerle uyumluluk

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.

Ortam gereksinimleri

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.

Karartma sonrası test

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

DexGuard ProGuard'dan nasıl farklıdır?

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 lisansı ne kadar?

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.

DexGuard Kotlin ve Jetpack Compose ile kullanılabilir mi?

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.

DexGuard APK boyutunu artırır mı?

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.

Hata ayıklama için DexGuard devre dışı bırakılabilir mi?

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

  • DexGuard, tam bir tersine mühendislik karşıtı teknik seti ile ProGuard'ın yeteneklerini genişleten ticari bir Android koruma aracıdır
  • Overload induction ile karartma, çözülemeyen yöntem aşırı yüklemeleri oluşturarak ters derlenmiş kodu işlevsiz hale getirir
  • AES-256 ile string sabitlerinin ve kaynakların şifrelenmesi, jadx ve strings aracılığıyla DEX dosyasının statik analizini engeller
  • RASP ajanı, çalışma zamanında Frida, Xposed, JDWP hata ayıklayıcı ve emülatörü tespit eder, tehdit tespitinde çökme gerçekleştirir
  • Yerel katmanda SHA-256 karması ile APK bütünlük kontrolü, uygulamanın değiştirilmiş bir sürümünün çalıştırılmasını önler
  • @stringEncryption, @overloadInduction ve @antiDebug ek açıklamaları ile Gradle projesine entegrasyon 10–15 dakikalık kurulum gerektirir
  • DexGuard, kod tehlikeye atmasının finansal riskler oluşturduğu bankacılık, ödeme ve tıbbi Android uygulamaları için önerilen araçtır

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.

Projeyi tartış

Ayrıca okuyun