DexGuard — solusi untuk melindungi aplikasi Android dari rekayasa balik, disediakan oleh Guardsquare. Alat ini melakukan obfuskasi, enkripsi, dan pemantauan proaktif DEX-bytecode pada tahap pembuatan. Menurut Guardsquare, 2025, produk ini digunakan di lebih dari 10.000 proyek komersial, termasuk sistem perbankan dan pembayaran. DexGuard memperluas kemampuan ProGuard dengan menambahkan perlindungan terhadap dekompilasi dan serangan runtime tanpa mengubah kode sumber aplikasi.
Poin Utama
DexGuard adalah alat komersial untuk obfuskasi dan perlindungan aplikasi Android, dikembangkan oleh tim yang sama yang menciptakan ProGuard (Eric Lafortune). Produk ini muncul pada tahun 2012 sebagai perluasan untuk proyek-proyek di mana obfuskasi ProGuard standar tidak mencukupi. DexGuard bekerja pada tahap pasca-kompilasi, mengubah DEX-bytecode menjadi bentuk yang dilindungi sebelum dikemas ke dalam APK.
Arsitektur DexGuard dibangun di atas model perlindungan berlapis. Lapisan pertama adalah obfuskasi nama kelas, metode, dan bidang menggunakan overload induction (pembebanan lebih nama). Lapisan kedua adalah enkripsi konstanta string dan memuatnya melalui metode stub saat runtime. Lapisan ketiga adalah kontrol integritas APK melalui verifikasi checksum tanda tangan. Menurut laporan teknis Guardsquare (2025), penerapan gabungan lapisan-lapisan ini meningkatkan waktu analisis aplikasi dari beberapa menit menjadi beberapa minggu.
DexGuard mendukung semua jenis proyek Android: aplikasi, pustaka, SDK, dan proyek game di Unity. Alat ini terintegrasi ke dalam pipeline Gradle standar melalui plugin com.guardsquare.dexguard dan tidak memerlukan intervensi manual setelah konfigurasi.
Perbedaan utama DexGuard dari alternatif open-source adalah perlindungan aktif saat runtime. Alat ini tidak hanya mengacak kode, tetapi menambahkan agen yang melakukan pemeriksaan selama aplikasi berjalan. Ini memungkinkan deteksi serangan seperti injeksi Frida, Xposed, atau debugging melalui JDWP, dan meresponsnya: penghentian darurat, pembuatan data palsu, atau pemberitahuan server.
Proses obfuskasi di DexGuard terdiri dari tahapan transformasi bytecode yang berurutan, masing-masing ditargetkan pada vektor serangan tertentu.
Obfuskator standar mengganti nama dengan karakter tunggal a, b, c. DexGuard menggunakan overload induction — menetapkan nama pendek yang sama untuk metode berbeda dengan tanda tangan berbeda. Dekompilator tidak dapat menyelesaikan pembebanan lebih dan menghasilkan kode yang salah. Menurut tes Guardsquare, pembebanan lebih nama meningkatkan jumlah kesalahan dekompilasi sebesar 78%.
Literal string, URL, kunci API, dan token dienkripsi dengan algoritma AES-256 pada tahap pembuatan. Saat runtime, metode stub mendekripsi string sebelum digunakan dan menghapus area memori setelahnya. Ini melindungi dari tampilan statis string di file DEX. Contoh tanpa enkripsi: penyerang menjalankan strings dexguard.apk dan melihat semua endpoint API dalam teks terbuka.
DexGuard menghitung hash SHA-256 untuk setiap file DEX dan menyimpan nilainya di lapisan native. Saat aplikasi dimulai, agen membandingkan hash saat ini dengan referensi. Jika ada perbedaan (APK dimodifikasi), aplikasi akan dihentikan. Secara opsional, integritas sumber daya dan manifes dapat diperiksa.
// 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"
}
}
}
}
Kedua alat dikembangkan oleh perusahaan yang sama, tetapi ditargetkan untuk skenario yang berbeda. ProGuard adalah pengoptimal open-source dan obfuskator minimal yang sudah termasuk dalam Android SDK secara default. DexGuard adalah produk komersial yang menambahkan lapisan keamanan yang tidak tersedia di versi gratis.
| Karakteristik | ProGuard | DexGuard |
|---|---|---|
| Lisensi | Open-source (GPL) | Komersial |
| Obfuskasi nama | Penggantian sederhana | Overload induction |
| Enkripsi string | Tidak | AES-256 |
| Perlindungan RASP | Tidak | Ya |
| Deteksi Frida | Tidak | Ya |
| Perlindungan debugging | Tidak | Ya |
| Kontrol integritas | Tidak | Hash SHA-256 |
| Dukungan Unity | Tidak | Ya |
Pilihan antara alat-alat ini ditentukan oleh kelas informasi yang dilindungi. Untuk aplikasi seluler biasa, ProGuard sudah cukup. Untuk aplikasi perbankan, pembayaran, dan medis, di mana pengungkapan kode membawa risiko finansial atau peraturan, DexGuard adalah solusi yang direkomendasikan. Menurut OWASP Mobile Top 10 (2024), tidak adanya obfuskasi dalam aplikasi dengan data rahasia dianggap sebagai risiko kritis.
Integrasi DexGuard dimulai dengan menghubungkan repositori Guardsquare di root build.gradle. Plugin versi 9.x kompatibel dengan AGP 7.4–8.5 dan Gradle 7.6–8.7. Konfigurasi keamanan ditentukan dalam dexguard-project.txt terpisah, di mana teknik-teknik tertentu diaktifkan.
// root build.gradle
buildscript {
repositories {
maven { url "https://maven.guardsquare.com/dexguard" }
}
}
// dexguard-project.txt — konfigurasi minimal
# Enkripsi string
@stringEncryption
# Obfuskasi dengan pembebanan lebih nama
@overloadInduction
# Kontrol integritas APK
@integrityCheck
# Perlindungan dari debugging dan emulator
@antiDebug
@antiEmulator
Direktif @stringEncryption dan @overloadInduction adalah kunci untuk melindungi kode komersial. Saat semua anotasi diaktifkan, waktu pembuatan meningkat 30–60 detik, yang sepadan dengan tingkat perlindungan. Konfigurasi disimpan di VCS dan hanya diterapkan untuk build rilis.
Penting untuk mengatur pengecualian untuk kelas yang digunakan melalui reflection. DexGuard, seperti ProGuard, tidak menganalisis reflection secara otomatis. Di dexguard-project.txt, aturan -keep harus ditambahkan untuk kelas pustaka yang dimuat melalui Class.forName atau @JavascriptInterface.
// dexguard-project.txt — aturan keep
# Menyimpan kelas model Gson
-keep class com.example.model.** { *; }
# Menyimpan antarmuka WebView
-keepclassmembers class * {
@android.webkit.JavascriptInterface <methods>;
}
# Mengecualikan laporan crash Firebase
-keep class com.google.firebase.** { *; }
DexGuard mencakup lebih dari 20 teknik perlindungan, dibagi menjadi statis (pada tahap pembuatan) dan dinamis (saat runtime). Pemilihan teknik tertentu tergantung pada model ancaman aplikasi.
Enkripsi sumber daya — gambar, aset, dan file konfigurasi dienkripsi dan didekripsi saat akses pertama. Control flow obfuscation menyisipkan kode mati dan mengubah urutan instruksi, membuat bytecode tidak terbaca oleh decompiler seperti jadx. Penyembunyian konstanta (constant hiding) mengganti literal numerik dengan ekspresi aritmatika yang dihitung saat runtime.
Runtime Application Self-Protection — agen di dalam aplikasi yang memonitor perilaku lingkungan eksekusi. DexGuard RASP mendeteksi: koneksi Frida melalui /proc/self/maps, keberadaan Xposed Framework, eksekusi di bawah debugger (JDWP), emulator Android (QEMU). Saat ancaman terdeteksi, kebijakan akan diaktifkan — crash atau pembuatan data yang salah. Menurut penelitian OWASP Mobile Security (2025), perlindungan RASP telah menghentikan 94% serangan otomatis tipikal.
DexGuard menambahkan penundaan acak di bagian kode kritis, meningkatkan waktu penelusuran selama analisis dinamis. Parameter ditetapkan dalam milidetik dan diacak pada setiap pembuatan. Ini mempersulit penggunaan alat fuzzing dan pemindai otomatis.
Saat mengimplementasikan DexGuard ke dalam proyek yang ada, perlu mempertimbangkan kompatibilitas mundur dengan pustaka dan SDK populer. Beberapa pustaka tidak kompatibel dengan obfuskasi ekstrem karena panggilan reflection.
DexGuard kompatibel dengan Firebase Crashlytics, Google Analytics, Google Play Services, Retrofit, OkHttp, Glide, dan Gson dengan aturan keep yang benar. Pustaka yang menggunakan anotasi dan code generation (Dagger, Hilt, Room, DataBinding) memerlukan penyimpanan eksplisit kelas yang dihasilkan. Tim Guardsquare merilis sampel konfigurasi resmi untuk SDK populer.
Persyaratan minimum: Android Gradle Plugin 7.4, Gradle 7.6, JDK 11. DexGuard 9.1 mendukung targetSdk 34 dan compileSdk 34. Untuk Java 17 dan AGP 8.2+ diperlukan DexGuard versi 9.2 dan lebih baru. Alat ini tidak kompatibel dengan R8 dalam mode optimasi penuh — saat menggunakan DexGuard, R8 dinonaktifkan secara otomatis.
Setelah konfigurasi DexGuard, pengujian regresi harus dilakukan pada semua jalur yang terpengaruh oleh reflection dan pemuatan kelas dinamis. Disarankan untuk menjalankan pengujian otomatis UI pada build dengan perlindungan diaktifkan sebelum rilis. Guardsquare menyediakan alat DexGuard Tracer yang mencatat kesalahan ClassNotFoundException saat runtime tanpa membuat aplikasi crash, sehingga memudahkan debugging aturan keep.
Pertanyaan yang Sering Diajukan
ProGuard adalah obfuskator gratis dengan penggantian nama sederhana dan optimasi bytecode. DexGuard menambahkan enkripsi string AES-256, overload induction untuk nama, agen RASP saat runtime, kontrol integritas APK, dan deteksi Frida, Xposed, emulator, dan debugger. ProGuard cukup untuk aplikasi biasa, DexGuard untuk aplikasi perbankan dan perusahaan.
DexGuard didistribusikan di bawah lisensi komersial dengan pembayaran tahunan. Biaya tergantung pada jumlah proyek dan jenis langganan. Pada tahun 2025, lisensi dasar untuk satu proyek mulai dari 5.000 USD per tahun. Untuk startup, tersedia program kemitraan dengan diskon hingga 40%.
Ya, DexGuard sepenuhnya kompatibel dengan Kotlin dan Jetpack Compose, termasuk coroutine dan kompiler Compose. Diperlukan aturan keep tambahan untuk kelas yang dihasilkan oleh kompiler Kotlin. Guardsquare merekomendasikan menggunakan templat konfigurasi kotlin-project.txt dari dokumentasi resmi.
Enkripsi string dan penambahan agen RASP memperbesar APK sebesar 5–15% tergantung pada jumlah kode yang dilindungi. Obfuskasi nama dan control flow obfuscation tidak memperbesar ukuran — mereka mengganti nama yang sudah ada. Rata-rata, APK dengan perlindungan DexGuard penuh menjadi 8–12% lebih besar dari aslinya.
Ya, konfigurasi keamanan hanya diterapkan untuk build rilis (release build type). Untuk build debug, DexGuard secara otomatis menonaktifkan enkripsi dan pemeriksaan RASP. Pengembang dapat memaksa mengaktifkan DexGuard dalam mode debug melalui parameter guard.force.enable=true di gradle.properties untuk menguji build yang dilindungi.
Ringkasan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.
Baca juga