استفاده از پروگارد در برنامه اندروید

در این پست میخواهم راه حلی برای محافظت از برنامه های اندروید را به شما آموزش بدم ، همانطور که می دانید برنامه های اندرویدی را به راحتی می توان دیکد کرد و از انها استفاده و بعضا سوء استفاده کرد و به فایلها و کلاس ها ، api  و فایل های حیاتی آن دست پیدا کرد (سعی می کنم در آموزشی نحوه دیکد کردن برنامه اندروید را به شما آموزش بدم)  . با این کار امنیت برنامه ، و در برنامه هایی که بصورت آنلاین کار می کنند می تواند امنیت سایت و سرور را  به خطر بیاندازد  و افراد سودجو و به اصطلاح هــــکر می توانند در برنامه شما دست برده  و  با  انجام کارهای جعلی از این ضعف به سود خودشان استفاده کنند.متاسفانه نمی توان جلوی این خرابکاری ها را به طور کامل گرفت،ولی میتوان کاری کرد که انجام کار برای فرد مهاجم سخت شود. راه حل این کار استفاده از پروگارد  (proguard) هست که در این پست به معرفی و نحوه استفاده آن در پروژه های اندروید می پردازیم.

 

پروگارد چه کارهایی انجام می دهد ؟

کوچک کردن برنامه یا minification

به هم ریختن برنامه یا obfuscation

بسته‌بندی مجدد برنامه یا  repackaging

بهینه‌سازی یا optimization

 

پروگارد چه معایبی دارد؟

پروگارد ، کلاس ها و متغییرها مورد استفاده در پروژه را تغییر نام می دهد و باعث ناخوانا شدن انها و همچنین کلاس هایی که بی استفاده هستند را به صورت خودکار حذف می کند و  دیباگ کردن برنامه اندروید را دچار مشکل می کند و همچنین سرعت بیلد کردن پروژه را بالا می برد. برای حل این مشکلات به راحتی می توان پروگارد را در زمان دیباگ کردن غیرفعال کرد و بعد از تست نهایی و گرفتن خروجی آن را فعال کرد ،به همین راحتی 😀

 

نصب پروگارد

پروگارد به صورت پیشفرض در Sdk وجود دارد و نیاز به نصب خاصی ندارد (sdk\tools\proguard)

 

پیکربندی پروگارد

تنظیمات و فایل پیکربندی پروگارد در فایل proguard-rules.pro در زیر شاخه ی Gradle Scripts  قرار دارد.

هر خط در این فایل که با # شروع می‌شود کامنت یا راهنما و توضیح هست که غیر فعاله و مابقی خط ها مربوط به تنظیمات می شود.

پروگارد تنظیمات زیادی داره که در زیر چند مورد که از همه مهم تر هست را توضیح میدم و مابقی آنها را می توانید از مستندات ان در سایت اصلی proguard مشاهده و بررسی کنید.

-keep: به پروگارد می‌گوییم که این کلاس‌ها را نگه دارد و نام آن‌ها و بسته آن‌ها را تغییر ندهد. اگر بخواهیم همه کلاس‌های داخل یک پکیج را استثنا کنیم از * و اگر بخواهیم همه کلاس‌های داخل این پکیج و همه کلاس‌های داخل پکیج‌های داخلی آن را استثنا کنیم از ** استفاده می‌کنیم.

-dontwarn: اگر ارجاعاتی به/در کلاس یا کلاس‌های مشخص شده وجود دارد که پروگارد آن‌ها را به هر دلیل پیدا نمی‌کند، هشدار ندهد و آن‌ها را نادیده بگیرد.

-ignorewarnings: عملکرد آن شبیه dontwarn است با یک تفاوت: در لاگ خروجی این ارجاع نامشخص را می‌نویسد اما به کار خود ادامه می‌دهد.

-keepattributes: ویژگی‌هایی که اینجا اعلام کرده‌ایم را نگه می‌دارد و آن‌ها را حذف نمی‌کند.

-dontnote: پروگارد بعد از اجرا فایلی را در اختیار ما می‌گذارد که در آن تمام تغییراتی را که در پکیج‌ها، کلاس‌ها و ویژگی‌ها آن‌ها داده است، در آن می‌آورد. اگر بخواهیم که خطاهای بالقوه در یک یا چند کلاس خاص را در آن فایل ننویسد از این تنظیم استفاده می‌کنیم.

*منبع این اپشن ها سایت اسمارت لب هست

استفاده از پروگارد در پروژه اندروید

ابتدا به مسیر build.gradle (Module :app)  در زیر شاخه ی Gradle Scripts می رویم و کد زیر را پیدا می کنیم.و در ادامه

برای فعال کردن پروگارد در پروژه فقط کافی هست مقدار minifyEnabled را از false  به true تغییر دهید.

 

تنظیمات پروگارد برای کتابخانه های  اندروید

در زیر تنظیمات مربوط به کتابخانه ی معروف و پرکاربرد اندروید را برای شما قرار دادم که می تواند به راحتی از انها در پروژه خود استفاده کنید و پروژه خود را بدون مشکل کامپایل کنید.

فایل پیکربندی پروگارد برای کتابخانه ی پرکاربرد