DexGuard — solusyon para sa pagprotekta ng Android application laban sa reverse engineering, na ibinibigay ng Guardsquare. Ang tool ay nagsasagawa ng obfuscation, encryption, at proactive monitoring ng DEX-bytecode sa yugto ng pag-build. Ayon sa Guardsquare, 2025, ang produkto ay ginagamit sa mahigit 10,000 komersyal na proyekto, kabilang ang mga banking at payment system. DexGuard nagpapalawak ng kakayahan ng ProGuard sa pamamagitan ng pagdaragdag ng proteksyon laban sa decompilation at runtime attacks nang hindi binabago ang source code ng application.
Mga Pangunahing Punto
Ang DexGuard ay isang komersyal na tool para sa obfuscation at proteksyon ng Android application, na binuo ng parehong team na lumikha ng ProGuard (Eric Lafortune). Lumitaw ang produkto noong 2012 bilang extension para sa mga proyekto kung saan hindi sapat ang standard na ProGuard obfuscation. Gumagana ang DexGuard sa post-compilation stage, binabago ang DEX-bytecode sa protektadong anyo bago i-pack sa APK.
Ang arkitektura ng DexGuard ay binuo sa multilayered na modelo ng proteksyon. Ang unang layer ay obfuscation ng mga pangalan ng klase, method, at field gamit ang overload induction. Ang pangalawa ay encryption ng string constants at pag-load ng mga ito sa pamamagitan ng stub methods sa runtime. Ang pangatlo ay kontrol ng integridad ng APK sa pamamagitan ng checksum verification ng mga signature. Ayon sa teknikal na ulat ng Guardsquare (2025), ang pinagsamang paggamit ng mga layer na ito ay nagpapataas ng oras ng pagsusuri ng application mula ilang minuto hanggang ilang linggo.
Sinusuportahan ng DexGuard ang lahat ng uri ng Android project: application, library, SDK, at game project sa Unity. Ang tool ay isinasama sa standard na Gradle pipeline sa pamamagitan ng plugin na com.guardsquare.dexguard at hindi nangangailangan ng manual na interbensyon pagkatapos ng configuration.
Ang pangunahing pagkakaiba ng DexGuard mula sa open-source na alternatibo ay aktibong proteksyon sa runtime. Ang tool ay hindi lamang nagpapagulo ng code, kundi nagdaragdag ng agent na nagsasagawa ng mga check habang tumatakbo ang application. Ito ay nagbibigay-daan sa pagtuklas ng mga pag-atake tulad ng Frida injection, Xposed, o debugging sa pamamagitan ng JDWP, at pagtugon sa mga ito: emergency shutdown, pagbuo ng maling data, o server notification.
Ang proseso ng obfuscation sa DexGuard ay binubuo ng sunod-sunod na yugto ng bytecode transformation, bawat isa ay naka-target sa tiyak na attack vector.
Ang standard na obfuscator ay pinapalitan ang mga pangalan ng iisang character na a, b, c. Gumagamit ang DexGuard ng overload induction — nagtatalaga ng parehong maikling pangalan sa iba't ibang method na may magkakaibang signature. Hindi malulutas ng decompiler ang overloading at bumubuo ng maling code. Ayon sa mga pagsubok ng Guardsquare, ang name overloading ay nagpapataas ng bilang ng decompilation error ng 78%.
Ang string literals, URL, API key, at token ay naka-encrypt gamit ang AES-256 algorithm sa yugto ng pag-build. Sa runtime, ang stub method ay nagde-decrypt ng string bago gamitin at binubura ang memory area pagkatapos. Ito ay nagpoprotekta laban sa static viewing ng strings sa DEX file. Halimbawa nang walang encryption: ang attacker ay nagpapatakbo ng strings dexguard.apk at nakikita ang lahat ng API endpoint sa plain text.
Kinakalkula ng DexGuard ang SHA-256 hash para sa bawat DEX file at iniimbak ang halaga sa native layer. Kapag nag-start ang application, inihahambing ng agent ang current hash sa reference. Kung may pagkakaiba (binagong APK), ang application ay ititigil. Opsyonal, maaaring suriin ang integridad ng resources at manifest.
// 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"
}
}
}
}
Parehong tool ay binuo ng parehong kumpanya, ngunit naka-target sa magkaibang sitwasyon. Ang ProGuard ay open-source optimizer at minimal na obfuscator na kasama sa Android SDK bilang default. Ang DexGuard ay komersyal na produkto na nagdaragdag ng mga layer ng seguridad na hindi available sa libreng bersyon.
| Katangian | ProGuard | DexGuard |
|---|---|---|
| Lisensya | Open-source (GPL) | Komersyal |
| Obfuscation ng pangalan | Simpleng pagpapalit | Overload induction |
| Encryption ng string | Hindi | AES-256 |
| Proteksyon ng RASP | Hindi | Oo |
| Detection ng Frida | Hindi | Oo |
| Proteksyon sa debugging | Hindi | Oo |
| Kontrol ng integridad | Hindi | SHA-256 hashing |
| Suporta sa Unity | Hindi | Oo |
Ang pagpili sa pagitan ng mga tool ay tinutukoy ng klase ng impormasyong pinoprotektahan. Para sa ordinaryong mobile application, sapat na ang ProGuard. Para sa banking, payment, at medical application, kung saan ang pagbubunyag ng code ay nagdudulot ng financial o regulatory risk, ang DexGuard ay inirerekomendang solusyon. Ayon sa OWASP Mobile Top 10 (2024), ang kawalan ng obfuscation sa mga application na may kumpidensyal na data ay itinuturing na kritikal na panganib.
Ang pagsasama ng DexGuard ay nagsisimula sa pagkonekta ng Guardsquare repository sa root build.gradle. Ang plugin bersyon 9.x ay compatible sa AGP 7.4–8.5 at Gradle 7.6–8.7. Ang configuration ng seguridad ay tinukoy sa hiwalay na dexguard-project.txt, kung saan isinaaktibo ang mga partikular na teknik.
// root build.gradle
buildscript {
repositories {
maven { url "https://maven.guardsquare.com/dexguard" }
}
}
// dexguard-project.txt — minimal na configuration
# Encryption ng string
@stringEncryption
# Obfuscation na may name overloading
@overloadInduction
# APK integrity control
@integrityCheck
# Proteksyon laban sa debugging at emulator
@antiDebug
@antiEmulator
Ang mga direktiba na @stringEncryption at @overloadInduction ay susi para sa proteksyon ng komersyal na code. Kapag na-activate ang lahat ng annotation, ang oras ng pag-build ay tumataas ng 30–60 segundo, na makatwiran dahil sa antas ng proteksyon. Ang configuration ay naka-imbak sa VCS at inilalapat lamang para sa release build.
Mahalagang mag-set up ng mga exception para sa mga klase na ginagamit sa pamamagitan ng reflection. Ang DexGuard, tulad ng ProGuard, ay hindi awtomatikong nagsusuri ng reflection. Sa dexguard-project.txt, dapat idagdag ang mga -keep na panuntunan para sa mga klase ng library na na-load sa pamamagitan ng Class.forName o @JavascriptInterface.
// dexguard-project.txt — keep rules
# Panatilihin ang Gson model classes
-keep class com.example.model.** { *; }
# Panatilihin ang WebView interfaces
-keepclassmembers class * {
@android.webkit.JavascriptInterface <methods>;
}
# Ibukod ang Firebase crash reports
-keep class com.google.firebase.** { *; }
Ang DexGuard ay may kasamang higit sa 20 teknik ng proteksyon, nahahati sa static (sa yugto ng pag-build) at dynamic (sa runtime). Ang pagpili ng mga partikular na teknik ay depende sa threat model ng application.
Encryption ng resources — mga larawan, assets, at configuration file ay naka-encrypt at nade-decrypt sa unang pag-access. Ang control flow obfuscation ay naglalagay ng patay na code at nagbabago ng pagkakasunod-sunod ng instruction, ginagawang hindi nababasa ang bytecode para sa mga decompiler tulad ng jadx. Ang pagtatago ng constants (constant hiding) ay pinapalitan ang numeric literals ng arithmetic expressions na kinakalkula sa runtime.
Runtime Application Self-Protection — agent sa loob ng application na sumusubaybay sa pag-uugali ng execution environment. Ang DexGuard RASP ay nakakatuklas ng: Frida connection sa pamamagitan ng /proc/self/maps, presensya ng Xposed Framework, pag-execute sa ilalim ng debugger (JDWP), Android emulator (QEMU). Kapag may nakitang banta, ang policy ay isinaaktibo — crash o pagbuo ng maling data. Ayon sa pananaliksik ng OWASP Mobile Security (2025), ang RASP protection ay huminto sa 94% ng tipikal na automated attacks.
Nagdaragdag ang DexGuard ng random delays sa mga kritikal na bahagi ng code, pinapataas ang oras ng pag-browse sa panahon ng dynamic analysis. Ang parameter ay itinakda sa millisecond at randomize sa bawat pag-build. Ito ay nagpapahirap sa paggamit ng fuzzing tools at automatic scanners.
Kapag isinasama ang DexGuard sa umiiral na proyekto, kailangang isaalang-alang ang backward compatibility sa mga library at popular na SDK. Ang ilang library ay hindi compatible sa extreme obfuscation dahil sa reflection calls.
Ang DexGuard ay compatible sa Firebase Crashlytics, Google Analytics, Google Play Services, Retrofit, OkHttp, Glide, at Gson sa tamang keep rules. Ang mga library na gumagamit ng annotation at code generation (Dagger, Hilt, Room, DataBinding) ay nangangailangan ng explicit preservation ng mga generated na klase. Ang Guardsquare team ay naglalabas ng opisyal na configuration sample para sa mga popular na SDK.
Minimum na kinakailangan: Android Gradle Plugin 7.4, Gradle 7.6, JDK 11. Ang DexGuard 9.1 ay sumusuporta sa targetSdk 34 at compileSdk 34. Para sa Java 17 at AGP 8.2+ kinakailangan ang DexGuard bersyon 9.2 at mas bago. Ang tool ay hindi compatible sa R8 sa full optimization mode — kapag gumagamit ng DexGuard, ang R8 ay awtomatikong nade-deactivate.
Pagkatapos ng configuration ng DexGuard, dapat isagawa ang regression testing sa lahat ng path na apektado ng reflection at dynamic class loading. Inirerekomenda na magpatakbo ng UI auto-tests sa build na may naka-enable na proteksyon bago ang release. Ang Guardsquare ay nagbibigay ng tool na DexGuard Tracer na nagla-log ng ClassNotFoundException error sa runtime nang hindi nagca-crash ang application, pinapadali ang debugging ng keep rules.
Mga Madalas Itanong
Ang ProGuard ay libreng obfuscator na may simpleng pagpapalit ng pangalan at bytecode optimization. Ang DexGuard ay nagdaragdag ng AES-256 string encryption, overload induction para sa mga pangalan, RASP agent sa runtime, APK integrity control, at detection ng Frida, Xposed, emulator, at debugger. Sapat ang ProGuard para sa ordinaryong application, ang DexGuard para sa banking at enterprise application.
Ang DexGuard ay ipinamamahagi sa ilalim ng komersyal na lisensya na may taunang pagbabayad. Ang halaga ay depende sa bilang ng mga proyekto at uri ng subscription. Noong 2025, ang basic license para sa isang proyekto ay nagsisimula mula sa 5,000 USD bawat taon. Para sa mga startup, available ang partnership program na may diskwento hanggang 40%.
Oo, ang DexGuard ay ganap na compatible sa Kotlin at Jetpack Compose, kabilang ang coroutine at Compose compiler. Kinakailangan ang karagdagang keep rules para sa mga klase na binuo ng Kotlin compiler. Inirerekomenda ng Guardsquare ang paggamit ng configuration template na kotlin-project.txt mula sa opisyal na dokumentasyon.
Ang encryption ng string at pagdaragdag ng RASP agent ay nagpapalaki ng APK ng 5–15% depende sa dami ng code na pinoprotektahan. Ang name obfuscation at control flow obfuscation ay hindi nagpapalaki ng laki — pinapalitan nila ang mga umiiral na pangalan. Sa karaniwan, ang APK na may buong DexGuard protection ay nagiging 8–12% na mas malaki kaysa sa orihinal.
Oo, ang configuration ng seguridad ay inilalapat lamang sa release build (release build type). Para sa debug build, awtomatikong dine-deactivate ng DexGuard ang encryption at RASP checks. Ang developer ay maaaring pilitin na i-enable ang DexGuard sa debug mode sa pamamagitan ng parameter na guard.force.enable=true sa gradle.properties para sa pagsubok ng protected build.
Buod
Gagawa kami ng mobile application na turnkey
Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.
Basahin din