Mobil
Ilova yaxlitligi va obfuskatsiya: R8 va Dart --obfuscate
Mobil ekspertiza ilovani o'zgartirish va teskari muhandislikdan himoyani tekshiradi. R8, Dart obfuskatsiyasi va tamper tekshiruvini qanday sozlash kerakligi.
· 7 daq. o'qish

Mobil ilova foydalanuvchi qurilmasiga to'liq holda tushadi. Demak, APK yoki IPA faylini istalgan odam yuklab olib, ochib ko'rishi, o'zgartirishi va qayta yig'ishi mumkin. Shuning uchun kiberxavfsizlik ekspertizasi mobil ilovada faqat server bilan aloqani emas, balki binar faylning o'zi qanchalik himoyalanganini ham tekshiradi. OWASP Mobile Top 10 (2024) ro'yxatida bu M7: Insufficient Binary Protections deb ataladi.
O'z mahsulotimizning mobil ilovasi (Flutter, Android va iOS) ekspertizasida aynan shu yo'nalishda bir nechta yuqori darajali topilma bo'lgan: ilova yaxlitligi (tamper) tekshiruvi yo'q edi, kod esa yetarlicha chalkashtirilmagan edi. Quyida ularni qanday yopganimizni amaliy ko'rinishda bayon qilamiz.
Ikki xil himoya: obfuskatsiya va yaxlitlik
Bu ikki tushuncha ko'pincha aralashtiriladi, lekin ular turli vazifani bajaradi:
- Obfuskatsiya — kodni o'qishni qiyinlashtiradi. Klass, metod va o'zgaruvchi nomlari ma'nosiz qisqa nomlarga almashtiriladi, ishlatilmagan kod olib tashlanadi. Maqsad — teskari muhandislikka (reverse engineering) ketadigan vaqtni oshirish.
- Yaxlitlik tekshiruvi — ilova ishga tushganda o'zining o'zgartirilmaganini tekshiradi. Agar kimdir APK'ni ochib, kodni o'zgartirib, boshqa kalit bilan qayta imzolagan bo'lsa, ilova buni aniqlashi va ishlashni to'xtatishi kerak.
Obfuskatsiya sir saqlash vositasi emas. U faqat tahlilni sekinlashtiradi. Shuning uchun ikkalasi birga ishlatiladi.
Android: R8 bilan kodni qisqartirish
Android'da Java/Kotlin qatlamini R8 kompilyatori qisqartiradi va obfuskatsiya qiladi. Flutter loyihasida
release build uchun bu odatda yoqilgan bo'ladi, lekin android/app/build.gradle (yoki build.gradle.kts)
faylida aniq ko'rsatib qo'ygan ma'qul — ekspertiza aynan release build'ni tekshiradi:
android {
buildTypes {
release {
isMinifyEnabled = true
isShrinkResources = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}
}
proguard-rules.pro faylida faqat haqiqatan kerak bo'lgan -keep qoidalarini qoldiring. Butun paketni
-keep class com.example.** { *; } bilan saqlab qo'yish obfuskatsiyani amalda o'chirib qo'yadi — bu tez-tez
uchraydigan xato.
Flutter: Dart kodini --obfuscate bilan yig'ish
Flutter ilovasining asosiy mantiqi Dart'da yoziladi va R8 unga ta'sir qilmaydi. Dart kodi uchun alohida flag kerak:
flutter build apk --release --obfuscate --split-debug-info=build/symbols
flutter build ipa --release --obfuscate --split-debug-info=build/symbols
--split-debug-info simvollarni ilovadan tashqariga, alohida papkaga chiqaradi. Bu papkani ommaga chiqarmang,
lekin saqlab qo'ying: crash hisobotlaridagi stack trace'ni flutter symbolize bilan o'qish uchun aynan shu
fayllar kerak bo'ladi.
Obfuskatsiya satr literallarini shifrlamaydi. API manzillari, kalitlar va maxfiy qiymatlar oddiy satr sifatida kodda turgan bo'lsa, ular obfuskatsiyadan keyin ham
stringsbuyrug'i bilan ko'rinadi.
Shuning uchun o'z ilovamizda endpoint'larni oddiy satr ko'rinishida saqlashdan voz kechdik, maxfiy kalitlarni esa umuman ilova ichiga qo'ymadik — ular serverda qoladi.
Yaxlitlik (tamper) tekshiruvi
Ilova o'zgartirilganini aniqlashning asosiy usuli — imzo sertifikatini tekshirish. Har bir release ilova sizning kalitingiz bilan imzolanadi. Kimdir ilovani o'zgartirsa, uni o'z kaliti bilan qayta imzolashga majbur bo'ladi, chunki sizning kalitingiz unda yo'q. Ilova ishga tushganda joriy imzoning xeshini kutilgan qiymat bilan solishtiradi.
Buni qo'lda yozish mumkin, lekin biz tayyor RASP (Runtime Application Self-Protection) kutubxonasidan foydalandik — freeRASP. U bir vaqtning o'zida quyidagilarni aniqlaydi:
- imzo o'zgargani (tamper) va ilova rasmiy bo'lmagan manbadan o'rnatilgani;
- root yoki jailbreak qilingan qurilma;
- emulyator;
- Frida kabi hook vositalari va debugger ulanishi.
Konfiguratsiyada imzo sertifikatining xeshi (Android uchun) va Team ID (iOS uchun) ko'rsatiladi. Tahdid aniqlanganda biz ilovani shunchaki yopmadik, balki foydalanuvchiga tushunarli bloklovchi ekran ko'rsatdik: nima uchun ilova ishlamayotgani va nima qilish kerakligi.
Muhim nuqta: imzo xeshini olishda release kalitidan foydalaning. Agar ilova Google Play App Signing orqali tarqatilsa, do'kondagi ilova Google kaliti bilan qayta imzolanadi. Bu holda Play Console'dagi "App signing key" sertifikatining xeshini ham ro'yxatga qo'shing, aks holda ilova do'kondan o'rnatilgan nusxani "o'zgartirilgan" deb hisoblaydi.
Server tomonidagi tasdiq
Qurilmadagi har qanday tekshiruvni yetarli vaqt va bilimga ega odam chetlab o'tishi mumkin. Shuning uchun muhim amallar uchun server tomonida ham tasdiq so'rash foydali: Android uchun Play Integrity API, iOS uchun App Attest. Bu ilovaning haqiqiy, o'zgartirilmagan nusxasi so'rov yuborayotganini server o'zi tekshirishiga imkon beradi. Hamma loyihada bu majburiy emas, lekin moliyaviy yoki shaxsiy ma'lumot bilan ishlaydigan ilovalarda o'ylab ko'rishga arziydi.
Ekspertizadan oldin tekshirish ro'yxati
- Release build'da R8 yoqilgan (
isMinifyEnabled = true), ortiqcha-keepqoidalari yo'q. - Dart kodi
--obfuscate --split-debug-infobilan yig'ilgan, simvollar xavfsiz joyda saqlangan. - APK'ni
jadxyoki shunga o'xshash vosita bilan ochib, klass nomlari haqiqatan chalkashtirilganini ko'rib chiqing. stringsbilan binar faylda kalitlar, parollar, ichki manzillar qolmaganini tekshiring.- Imzo (tamper) tekshiruvi ishlaydi: ilovani boshqa kalit bilan qayta imzolab o'rnating va bloklovchi ekran chiqishini ko'ring.
- Root/jailbreak, emulyator va hook aniqlash test qurilmada sinab ko'rilgan.
- Ekspertizaga topshiriladigan fayl aynan shu sozlamalar bilan yig'ilgan release fayl.
Bu choralar ilovani buzib bo'lmaydigan qilmaydi. Ular teskari muhandislik va o'zgartirishni sezilarli darajada qimmatlashtiradi — ekspertiza ham aynan shuni, ya'ni himoya qatlamlari mavjudligi va ishlashini tekshiradi.
Skanerlash
Ilovangiz binar himoya bo'yicha qanday holatda ekanini bilmoqchimisiz? APK yoki IPA faylingizni skanerlash uchun yuboring. Claude AI agenti va mutaxassisimiz obfuskatsiya, imzo tekshiruvi va RASP choralarini ko'rib chiqib, ekspertizadan oldin nimalarni yopish kerakligini aytib beramiz.


