DexGuard: apa itu, obfuskasi dan keamanan aplikasi Android

Penulis: IT Sectr Diterbitkan: 2026-04-03 Waktu membaca: 8 mnt

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 — obfuskator Android komersial, penerus ProGuard dengan perlindungan diperluas terhadap reverse engineering
  • Enkripsi string dan kelas terjadi pada tahap pembuatan, membuat seksi read dari file DEX tidak dapat diakses untuk analisis statis
  • Kontrol integritas memeriksa tanda tangan APK saat runtime dan menghentikan eksekusi jika mendeteksi modifikasi
  • Deteksi debugger, emulator, dan Frida mencegah analisis dinamis saat runtime
  • Agen RASP mendeteksi manipulasi memori dan penyadapan panggilan sistem pada perangkat yang berjalan

Apa itu DexGuard?

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.

Bagaimana cara kerja obfuskasi di DexGuard

Proses obfuskasi di DexGuard terdiri dari tahapan transformasi bytecode yang berurutan, masing-masing ditargetkan pada vektor serangan tertentu.

Obfuskasi nama dengan pembebanan lebih

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%.

Enkripsi konstanta

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.

Kontrol integritas kode

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.

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 vs ProGuard: perbedaan utama

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.

KarakteristikProGuardDexGuard
LisensiOpen-source (GPL)Komersial
Obfuskasi namaPenggantian sederhanaOverload induction
Enkripsi stringTidakAES-256
Perlindungan RASPTidakYa
Deteksi FridaTidakYa
Perlindungan debuggingTidakYa
Kontrol integritasTidakHash SHA-256
Dukungan UnityTidakYa

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.

Konfigurasi DexGuard di proyek Gradle

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.

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

groovy
// 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.** { *; }

Teknik perlindungan DexGuard

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.

Perlindungan statis

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.

Perlindungan dinamis (RASP)

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.

Perlindungan terhadap serangan time-based

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.

Panduan integrasi dan kompatibilitas

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.

Kompatibilitas dengan SDK populer

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 lingkungan

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.

Pengujian setelah obfuskasi

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

Apa perbedaan antara DexGuard dan ProGuard?

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.

Berapa biaya lisensi DexGuard?

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%.

Bisakah DexGuard digunakan dengan Kotlin dan Jetpack Compose?

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.

Apakah DexGuard memperbesar ukuran APK?

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.

Bisakah DexGuard dinonaktifkan untuk debugging?

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

  • DexGuard — alat keamanan komersial untuk Android yang memperluas kemampuan ProGuard dengan serangkaian teknik anti-reversing lengkap
  • Obfuskasi nama dengan overload induction membuat kode yang didekompilasi tidak berfungsi, dengan menghasilkan pembebanan lebih metode yang tidak dapat diselesaikan
  • Enkripsi konstanta string dan sumber daya dengan algoritma AES-256 menutup analisis statis file DEX dari jadx dan strings
  • Agen RASP mendeteksi Frida, Xposed, debugger JDWP, dan emulator saat runtime, melakukan penghentian darurat saat mendeteksi ancaman
  • Kontrol integritas APK melalui hash SHA-256 di lapisan native mencegah eksekusi versi aplikasi yang dimodifikasi
  • Integrasi ke proyek Gradle dengan anotasi @stringEncryption, @overloadInduction, dan @antiDebug membutuhkan 10–15 menit konfigurasi
  • DexGuard — alat yang direkomendasikan untuk aplikasi Android perbankan, pembayaran, dan medis di mana kompromi kode membawa risiko finansial

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.

Diskusikan proyek

Baca juga