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-এর সাথে সম্পূর্ণ সামঞ্জস্যপূর্ণ, যার মধ্যে coroutines এবং 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 অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন