DexGuard Android अनुप्रयोगों को रिवर्स इंजीनियरिंग से बचाने का एक समाधान है, जो Guardsquare द्वारा प्रदान किया गया है। यह टूल बिल्ड चरण में DEX बाइटकोड का अस्पष्टीकरण, एन्क्रिप्शन और सक्रिय निगरानी करता है। Guardsquare, 2025 के अनुसार, यह उत्पाद 10,000 से अधिक वाणिज्यिक परियोजनाओं में उपयोग किया जाता है, जिसमें बैंकिंग और भुगतान प्रणालियाँ शामिल हैं। DexGuard एप्लिकेशन के स्रोत कोड को बदले बिना डीकंपाइलेशन और रनटाइम हमलों से सुरक्षा जोड़कर ProGuard की क्षमताओं का विस्तार करता है।
मुख्य बिंदु
DexGuard Android अनुप्रयोगों को अस्पष्ट और सुरक्षित करने के लिए एक वाणिज्यिक उपकरण है, जिसे उसी टीम ने विकसित किया है जिसने ProGuard (Eric Lafortune) बनाया था। यह उत्पाद 2012 में उन परियोजनाओं के लिए एक विस्तार के रूप में सामने आया जहाँ मानक ProGuard अस्पष्टीकरण अपर्याप्त है। DexGuard पोस्ट-कंपाइलेशन चरण में काम करता है, APK पैकेजिंग से पहले DEX बाइटकोड को एक संरक्षित रूप में बदलता है।
DexGuard आर्किटेक्चर बहु-स्तरीय सुरक्षा मॉडल पर बनाया गया है। पहला स्तर overload induction का उपयोग करके क्लास, मेथड और फील्ड नामों का अस्पष्टीकरण है। दूसरा स्ट्रिंग कॉन्स्टेंट का एन्क्रिप्शन और रनटाइम में स्टब मेथड्स के माध्यम से उन्हें लोड करना है। तीसरा हस्ताक्षरों की चेकसम जाँच के माध्यम से APK अखंडता नियंत्रण है। Guardsquare (2025) की एक तकनीकी रिपोर्ट के अनुसार, इन स्तरों का संयुक्त उपयोग एप्लिकेशन विश्लेषण समय को कुछ मिनटों से बढ़ाकर कई सप्ताह कर देता है।
DexGuard सभी प्रकार की Android परियोजनाओं का समर्थन करता है: एप्लिकेशन, लाइब्रेरी, SDK और Unity गेम प्रोजेक्ट। यह टूल com.guardsquare.dexguard प्लगइन के माध्यम से मानक Gradle पाइपलाइन में एकीकृत होता है और सेटअप के बाद मैन्युअल हस्तक्षेप की आवश्यकता नहीं होती है।
DexGuard और ओपन-सोर्स विकल्पों के बीच मुख्य अंतर सक्रिय रनटाइम सुरक्षा है। टूल केवल कोड को अस्पष्ट नहीं करता है — यह एक एजेंट जोड़ता है जो एप्लिकेशन निष्पादन के दौरान जाँच करता है। यह Frida इंजेक्शन, Xposed या JDWP डिबगिंग जैसे हमलों का पता लगाने और उन पर प्रतिक्रिया करने की अनुमति देता है: क्रैश, नकली डेटा जनरेशन, या सर्वर सूचना।
DexGuard में अस्पष्टीकरण प्रक्रिया बाइटकोड परिवर्तन के क्रमिक चरणों से बनी है, जिनमें से प्रत्येक एक विशिष्ट हमले वेक्टर को लक्षित करता है।
एक मानक अस्पष्टीकरणकर्ता नामों को एकल-वर्ण a, b, c से बदलता है। DexGuard overload induction का उपयोग करता है — यह विभिन्न हस्ताक्षरों वाली विभिन्न विधियों को एक ही छोटा नाम निर्दिष्ट करता है। डीकंपाइलर ओवरलोड को हल नहीं कर सकता और गलत कोड उत्पन्न करता है। Guardsquare परीक्षणों के अनुसार, नाम ओवरलोडिंग से डीकंपाइलेशन त्रुटियों में 78% की वृद्धि होती है।
स्ट्रिंग लिटरल, URL, API कुंजियाँ और टोकन बिल्ड चरण में AES-256 का उपयोग करके एन्क्रिप्ट किए जाते हैं। रनटाइम में, एक स्टब मेथड उपयोग से पहले स्ट्रिंग को डिक्रिप्ट करती है और बाद में मेमोरी क्षेत्र को शून्य कर देती है। यह DEX फ़ाइल में स्ट्रिंग्स के स्थिर देखने से बचाता है। एन्क्रिप्शन के बिना परिणाम का उदाहरण: एक हमलावर strings dexguard.apk चलाता है और सभी API एंडपॉइंट सादे टेक्स्ट में देखता है।
DexGuard प्रत्येक DEX फ़ाइल के लिए SHA-256 हैश की गणना करता है और मान को नेटिव लेयर में संग्रहीत करता है। जब एप्लिकेशन लॉन्च होता है, एजेंट वर्तमान हैश की तुलना संदर्भ से करता है। बेमेल (संशोधित APK) होने पर, एप्लिकेशन समाप्त हो जाता है। अतिरिक्त रूप से, संसाधनों और मेनिफेस्ट की अखंडता जाँच कॉन्फ़िगर की जा सकती है।
// 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"
}
}
}
}
दोनों उपकरण एक ही कंपनी द्वारा विकसित किए गए हैं लेकिन विभिन्न परिदृश्यों को लक्षित करते हैं। ProGuard एक ओपन-सोर्स ऑप्टिमाइज़र और न्यूनतम अस्पष्टीकरणकर्ता है जो Android SDK में डिफ़ॉल्ट रूप से शामिल है। DexGuard एक वाणिज्यिक उत्पाद है जो मुफ्त संस्करण में अनुपलब्ध सुरक्षा स्तर जोड़ता है।
| विशेषता | ProGuard | DexGuard |
|---|---|---|
| लाइसेंस | ओपन-सोर्स (GPL) | वाणिज्यिक |
| नाम अस्पष्टीकरण | सरल प्रतिस्थापन | Overload induction |
| स्ट्रिंग एन्क्रिप्शन | नहीं | AES-256 |
| RASP सुरक्षा | नहीं | हाँ |
| Frida का पता लगाना | नहीं | हाँ |
| डिबग सुरक्षा | नहीं | हाँ |
| अखंडता नियंत्रण | नहीं | SHA-256 हैशिंग |
| Unity समर्थन | नहीं | हाँ |
उपकरणों के बीच चुनाव संरक्षित की जा रही जानकारी के वर्ग द्वारा निर्धारित किया जाता है। एक सामान्य मोबाइल एप्लिकेशन के लिए, ProGuard पर्याप्त है। बैंकिंग, भुगतान और चिकित्सा अनुप्रयोगों के लिए जहाँ कोड प्रकटीकरण वित्तीय या नियामक जोखिम पैदा करता है, DexGuard अनुशंसित समाधान है। OWASP Mobile Top 10 (2024) के अनुसार, संवेदनशील डेटा वाले अनुप्रयोगों में अस्पष्टीकरण की कमी को एक महत्वपूर्ण जोखिम माना जाता है।
DexGuard एकीकरण रूट build.gradle में Guardsquare रिपॉजिटरी जोड़ने से शुरू होता है। संस्करण 9.x प्लगइन AGP 7.4–8.5 और Gradle 7.6–8.7 के साथ संगत है। सुरक्षा कॉन्फ़िगरेशन एक अलग dexguard-project.txt फ़ाइल में परिभाषित किया जाता है, जहाँ विशिष्ट तकनीकें सक्षम की जाती हैं।
// root build.gradle
buildscript {
repositories {
maven { url "https://maven.guardsquare.com/dexguard" }
}
}
// dexguard-project.txt — न्यूनतम कॉन्फ़िगरेशन
# स्ट्रिंग एन्क्रिप्शन
@stringEncryption
# Overload induction के साथ अस्पष्टीकरण
@overloadInduction
# APK अखंडता नियंत्रण
@integrityCheck
# डिबगर और एमुलेटर से सुरक्षा
@antiDebug
@antiEmulator
@stringEncryption और @overloadInduction निर्देश वाणिज्यिक कोड की सुरक्षा के लिए महत्वपूर्ण हैं। जब सभी एनोटेशन सक्रिय होते हैं, बिल्ड समय 30–60 सेकंड बढ़ जाता है, जो सुरक्षा स्तर से उचित है। कॉन्फ़िगरेशन VCS में संग्रहीत किया जाता है और केवल रिलीज़ बिल्ड के लिए लागू किया जाता है।
उन क्लासेज के लिए अपवाद कॉन्फ़िगर करना महत्वपूर्ण है जो रिफ्लेक्शन का उपयोग करती हैं। DexGuard, ProGuard की तरह, स्वचालित रूप से रिफ्लेक्शन का विश्लेषण नहीं करता है। dexguard-project.txt में, आपको Class.forName या @JavascriptInterface के माध्यम से लोड की गई लाइब्रेरी क्लासेज के लिए -keep नियम जोड़ने की आवश्यकता है।
// dexguard-project.txt — keep नियम
# Gson मॉडल क्लासेज रखें
-keep class com.example.model.** { *; }
# WebView इंटरफ़ेस रखें
-keepclassmembers class * {
@android.webkit.JavascriptInterface <methods>;
}
# Firebase क्रैश रिपोर्ट को बाहर करें
-keep class com.google.firebase.** { *; }
DexGuard में 20 से अधिक सुरक्षा तकनीकें शामिल हैं, जो स्थिर (बिल्ड चरण में) और गतिशील (रनटाइम में) में विभाजित हैं। विशिष्ट तकनीकों का चुनाव एप्लिकेशन के खतरे मॉडल पर निर्भर करता है।
संसाधन एन्क्रिप्शन — चित्र, एसेट और कॉन्फ़िगरेशन फ़ाइलें पहली पहुँच पर एन्क्रिप्ट और डिक्रिप्ट की जाती हैं। कंट्रोल फ़्लो अस्पष्टीकरण डेड कोड डालता है और निर्देश अनुक्रम बदलता है, जिससे बाइटकोड jadx जैसे डीकंपाइलरों के लिए अपठनीय हो जाता है। कॉन्स्टेंट हाइडिंग संख्यात्मक लिटरल को रनटाइम में गणना किए गए अंकगणितीय अभिव्यक्तियों से बदलता है।
Runtime Application Self-Protection — एप्लिकेशन के अंदर एक एजेंट जो रनटाइम वातावरण व्यवहार की निगरानी करता है। DexGuard RASP का पता लगाता है: /proc/self/maps के माध्यम से Frida कनेक्शन, Xposed Framework की उपस्थिति, डिबगर (JDWP) के तहत चलना, Android एमुलेटर (QEMU)। खतरे का पता चलने पर, एक नीति सक्रिय होती है — क्रैश या गलत डेटा जनरेशन। OWASP Mobile Security (2025) शोध के अनुसार, RASP सुरक्षा ने 94% सामान्य स्वचालित हमलों को रोक दिया।
DexGuard महत्वपूर्ण कोड अनुभागों में यादृच्छिक देरी जोड़ता है, गतिशील विश्लेषण के दौरान ब्रूट फोर्स समय बढ़ाता है। पैरामीटर मिलीसेकंड में सेट किया जाता है और प्रत्येक बिल्ड के साथ यादृच्छिक किया जाता है। यह फ़ज़िंग टूल और स्वचालित स्कैनर के उपयोग को जटिल बनाता है।
किसी मौजूदा प्रोजेक्ट में DexGuard को एकीकृत करते समय, लाइब्रेरी और लोकप्रिय SDK के साथ पिछड़ी अनुकूलता पर विचार करना आवश्यक है। कुछ लाइब्रेरी रिफ्लेक्शन कॉल के कारण चरम अस्पष्टीकरण के साथ असंगत हैं।
DexGuard सही keep नियमों के साथ Firebase Crashlytics, Google Analytics, Google Play Services, Retrofit, OkHttp, Glide और Gson के साथ संगत है। एनोटेशन और कोड जनरेशन (Dagger, Hilt, Room, DataBinding) का उपयोग करने वाली लाइब्रेरी को उत्पन्न क्लासेज के स्पष्ट संरक्षण की आवश्यकता होती है। Guardsquare टीम लोकप्रिय SDK के लिए आधिकारिक कॉन्फ़िगरेशन नमूने प्रकाशित करती है।
न्यूनतम आवश्यकताएँ: Android Gradle Plugin 7.4, Gradle 7.6, JDK 11। DexGuard 9.1 targetSdk 34 और compileSdk 34 का समर्थन करता है। Java 17 और AGP 8.2+ के लिए, DexGuard संस्करण 9.2 और उससे ऊपर की आवश्यकता है। यह टूल पूर्ण ऑप्टिमाइज़ेशन मोड में R8 के साथ असंगत है — DexGuard का उपयोग करते समय, R8 स्वचालित रूप से अक्षम हो जाता है।
DexGuard कॉन्फ़िगर करने के बाद, रिफ्लेक्शन और गतिशील क्लास लोडिंग से प्रभावित सभी पथों का रिग्रेशन परीक्षण आवश्यक है। रिलीज़ से पहले सुरक्षा सक्षम बिल्ड पर UI ऑटोमेशन परीक्षण चलाने की अनुशंसा की जाती है। Guardsquare DexGuard Tracer उपयोगिता प्रदान करता है, जो एप्लिकेशन को क्रैश किए बिना रनटाइम में ClassNotFoundException त्रुटियों को लॉग करता है, keep-नियम डिबगिंग को सरल बनाता है।
अक्सर पूछे जाने वाले प्रश्न
ProGuard एक मुफ्त अस्पष्टीकरणकर्ता है जिसमें बुनियादी नाम प्रतिस्थापन और बाइटकोड ऑप्टिमाइज़ेशन है। DexGuard AES-256 स्ट्रिंग एन्क्रिप्शन, नामों के लिए overload induction, रनटाइम में RASP एजेंट, APK अखंडता नियंत्रण और Frida, Xposed, एमुलेटर और डिबगर का पता लगाना जोड़ता है। ProGuard सामान्य अनुप्रयोगों के लिए पर्याप्त है, DexGuard बैंकिंग और उद्यम अनुप्रयोगों के लिए है।
DexGuard वार्षिक भुगतान के साथ वाणिज्यिक लाइसेंस के तहत वितरित किया जाता है। लागत परियोजनाओं की संख्या और सदस्यता प्रकार पर निर्भर करती है। 2025 तक, एक परियोजना के लिए मूल लाइसेंस 5,000 USD प्रति वर्ष से शुरू होता है। स्टार्टअप के लिए 40% तक की छूट के साथ एक साझेदारी कार्यक्रम उपलब्ध है।
हाँ, DexGuard Kotlin और Jetpack Compose के साथ पूरी तरह से संगत है, जिसमें कोरूटीन और Compose कंपाइलर शामिल हैं। Kotlin कंपाइलर द्वारा उत्पन्न क्लासेज के लिए अतिरिक्त keep नियमों की आवश्यकता होती है। Guardsquare आधिकारिक दस्तावेज़ीकरण से kotlin-project.txt कॉन्फ़िगरेशन टेम्पलेट का उपयोग करने की अनुशंसा करता है।
स्ट्रिंग एन्क्रिप्शन और RASP एजेंट जोड़ने से संरक्षित कोड की मात्रा के आधार पर APK आकार 5–15% बढ़ जाता है। नाम अस्पष्टीकरण और कंट्रोल फ़्लो अस्पष्टीकरण आकार नहीं बढ़ाते — वे मौजूदा नामों को बदलते हैं। औसतन, पूर्ण DexGuard सुरक्षा वाला APK मूल से 8–12% बड़ा हो जाता है।
हाँ, सुरक्षा कॉन्फ़िगरेशन केवल रिलीज़ बिल्ड प्रकार पर लागू होता है। डिबग बिल्ड के लिए, DexGuard स्वचालित रूप से एन्क्रिप्शन और RASP जाँच को अक्षम करता है। डेवलपर सुरक्षित बिल्ड के परीक्षण के लिए gradle.properties में guard.force.enable=true पैरामीटर के माध्यम से डिबग मोड में DexGuard को जबरदस्ती सक्षम कर सकते हैं।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें