DexGuard: ano ito, obfuscation at seguridad ng Android application

May-akda: IT Sectr Nai-publish: 2026-04-03 Oras ng pagbabasa: 8 min

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

  • DexGuard — komersyal na Android obfuscator, kahalili ng ProGuard na may pinalawak na proteksyon laban sa reverse engineering
  • Encryption ng mga string at klase ay nagaganap sa yugto ng pag-build, ginagawang hindi ma-access ang read-seksyon ng DEX file para sa static analysis
  • Kontrol ng integridad sumusuri ng APK signature sa runtime at humihinto sa pag-execute kapag may nakitang pagbabago
  • Detection ng debugger, emulator, at Frida ay pumipigil sa dynamic analysis sa runtime
  • RASP agent nakakatuklas ng memory manipulation at system call interception sa tumatakbong device

Ano ang DexGuard?

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.

Paano gumagana ang obfuscation sa DexGuard

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.

Obfuscation ng pangalan na may overloading

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

Encryption ng constants

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.

Kontrol ng integridad ng code

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.

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: mga pangunahing pagkakaiba

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.

KatangianProGuardDexGuard
LisensyaOpen-source (GPL)Komersyal
Obfuscation ng pangalanSimpleng pagpapalitOverload induction
Encryption ng stringHindiAES-256
Proteksyon ng RASPHindiOo
Detection ng FridaHindiOo
Proteksyon sa debuggingHindiOo
Kontrol ng integridadHindiSHA-256 hashing
Suporta sa UnityHindiOo

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.

Pagsasaayos ng DexGuard sa Gradle project

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.

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

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

Mga teknik ng proteksyon ng DexGuard

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.

Static na proteksyon

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.

Dynamic na proteksyon (RASP)

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.

Proteksyon laban sa time-based 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.

Mga alituntunin sa pagsasama at compatibility

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.

Compatibility sa mga popular na SDK

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.

Mga kinakailangan sa kapaligiran

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.

Pagsubok pagkatapos ng obfuscation

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

Ano ang pagkakaiba ng DexGuard at ProGuard?

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.

Magkano ang lisensya ng DexGuard?

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

Maaari bang gamitin ang DexGuard sa Kotlin at Jetpack Compose?

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.

Pinapalaki ba ng DexGuard ang laki ng APK?

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.

Maaari bang i-disable ang DexGuard para sa debugging?

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

  • DexGuard — komersyal na security tool para sa Android na nagpapalawak ng kakayahan ng ProGuard ng kumpletong set ng anti-reversing techniques
  • Obfuscation ng pangalan na may overload induction ay ginagawang hindi gumagana ang na-decompile na code, sa pamamagitan ng pagbuo ng hindi malulutas na method overloading
  • Encryption ng string constants at resources gamit ang AES-256 algorithm ay isinasara ang static analysis ng DEX file mula sa jadx at strings
  • RASP agent ay nakakatuklas ng Frida, Xposed, JDWP debugger, at emulator sa runtime, nagsasagawa ng emergency shutdown kapag may nakitang banta
  • APK integrity control sa pamamagitan ng SHA-256 hash sa native layer ay pumipigil sa pag-execute ng binagong bersyon ng application
  • Pagsasama sa Gradle project na may mga annotation na @stringEncryption, @overloadInduction, at @antiDebug ay nangangailangan ng 10–15 minutong configuration
  • DexGuard — inirerekomendang tool para sa banking, payment, at medical Android application kung saan ang code compromise ay nagdudulot ng financial risk

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.

Pag-usapan ang proyekto

Basahin din