Android : Ilova kodlarini Proguard yordamida himoyalash

Mirzohid Dilshodov
3 min readJul 6, 2022

--

Proguardning qanday ishlashini tushunish uchun amaliyotda bir nechta amallarni qilib ko‘ramiz. Birinchi navbatda eski loyihalarimizdan birortasini ochib olamiz. Yangi loyiha yaratsak ham bo‘ladi, ammo u holda qaysi papkalarimiz ko‘rinib, qaysilari himoyalanayotganini tushunish qiyinroq bo‘ladi.

Keyingi qadamda realise app chiqarib olamiz, debug qilib yaratsak, uni decompile qilib bo‘lmaydi.

Java decompiler online (javadecompilers.com)

Ushbu saytga kiramiz va apk decompiler sahifasiga o‘tib yaratgan ilovamizni yuklaymiz.

Upload and Decompile tugmasini bossak bizda quyidagicha oyna hosil bo‘ladi :

Biroz vaqtdan so‘ng esa, ilovamizning source kodlari ochilib qoladi. Endi istalgan fayldagi ma‘lumotlarni o‘qish va undan “unumli” foydalanish mumkin.

Mana shunaqa vaziyatning oldini olishni bizga proguard ta‘minlab beradi. Keling endi proguard ni qanday qilib to‘g‘irlash hamda o‘rnatishni ko‘rib chiqamiz. Va oxirida himoyalangan ilovamizni qaytadan decompile qilib nima hosil bo‘lishini ko‘ramiz. Loyihamizning build.gradle faylida quyidagi joyga e‘tibor qaratamiz :

buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}

Proguarddan foydalanish uchun minifyEnabled true, qilamiz va shrinkResources true bu buyruq bizga ilovamizdagi ortiqcha, ishlatilmayotgan kichik fayllarni o‘chirib, hajmini kichikroq qilib yaratishda yordam beradi . Quyidagi o‘zgarishlar amalga oshirilgandan so‘ng esa :

buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}

Gradleni sync qilib yuboramiz. Endi loyihamizda foydalangan kutubxonalarimizni qarab chiqamiz. Biz ilova decompile qilinganda faqatgina o‘zimiz yozgan kodlarni tushunarsiz qilamiz. Qolgan kodlarning ko‘rinib qolishi, hech narsani o‘zgartirmaydi. U kodlar shundoq ham internetda ochiqdan ochiq foydalanish uchun chiqarilgan. Demak ilovamizni himoyalayotgan vaqtimizda, kutubxonalar kodlaridan boshqalarini yashirishimiz uchun. Implement qilingan kutubxonalarning rasmiy sahifalaridan proguard hujjatlarini o‘zimizga yozib olishimiz kerak. Shunda decompile vaqtida o‘sha yozganlarimizga teginmasdan o‘tishni ta‘minlaymiz.

Buning uchun quyidagi faylni ochib olishimiz kerak :

Keyingi qadamda qo‘shgan kutubxonalarimizning rasmiy sahifalariga tashrif buyuramiz :

U yerda ProGuard bo‘limida hujjatlar berilgan bo‘ladi :

Bu hujjatlar ichiga kirib ma‘lumotlarni qanday yozilgan bo‘lsa o‘zidek qilib proguard-rules.pro faylimizga davomidan qo‘shamiz hamda proyektimizni rebuild qilib yuboramiz.

Hech qanday xatolik bermagan bo‘lsa, qaytada release ilova chiqaramiz va uni

http://www.javadecompilers.com

sayti orqali decompile qilamiz :

ko‘rinib turibdiki, proguard bizning fayllarimizni decompiledan himoyalab turibdi. Endi bular orasidan com -> package-name -> qilib kirsak,

bizda faqatgina MainActivity qoladi xolos, Savol tug‘iladiki, biz himoyalashni xohlamagan fayllarimiz ochiq turaversada, qolganlarini himoyalab qo‘ysak bo‘ladimi? Javobi -ha

Buning uchun proguard-rules.pro faylimiz oxiriga quyidagi shaklda manzilni berishimiz kerak :

keep buyrug‘i orqali biz himoyalash zarur bo‘lmagan fayllarni o‘zligicha saqlashni tayinlab qo‘yishimiz mumkin.

Agar yuqoridagi ketma-ketlikda amallarni bajargan bo‘lsangiz, o‘ylaymanki proguard tushunchasi sizga juda ham yoqdi. Va uni bundan keyingi loyihalaringizda keng qo‘llaysiz.

Bu maqola so‘nggi edi. O‘rganishda davom eting!! Ishlaringizga omad.

Yuqorida ishlatilgan kodlarni bu yerdan topishingiz mumkin :

wonmirzo/ProGuard-R8 (github.com)

--

--