آموزش برنامه نویسی اندروید (Android)
۴۱۹ آموزش
نمایش دسته بندی ها (۴۱۹ آموزش)

استفاده از ProGuard برای سخت تر شدن مهندسی معکوس (reverse engineering) و استخراج کدهای فایل apk برنامه اندروید

شاید تاکنون این سوال به ذهن شما رسیده باشد که آیا هنگامی که یک فایل apk از پروژه اندروید خود می سازید و آن را به سایت های فروش می دهید، آیا کاربران می توانند کدهای آن را از فایل apk استخراج نمایند. بر حسب تجربه باید بگویم که پاسخ کلی به این سوال، بله می باشد، اما مسلما گوگل و سایر توسعه دهنده های اندروید هم بیکار نمی نشینند و راهکارهایی را برای سختتر شدن مهندسی معکوس (reverse engineering) کدها، ارائه می دهند. یکی از این راهکارها، استفاده از ProGuard است که می خواهیم در مورد آن، در این مبحث صحبت کنیم.

تا به اینجا حدس می زنم که از شنیدن این موضوع که ممکن است کدهایی که شما نوشته اید را دیگران ببینند، نگران شده اید. راستش را بخواهید، نمی دانم که یک فرد باید چه انگیزه ای برای این کار داشته باشد، امروزه اینترنت همچون بهشتی برای برنامه نویسان است و می توانند انواع عملیات های برنامه نویسی مورد نظرشان را در مباحث آموزشی بیابند، بنابراین به نظر می آید که تنها انگیزه ای که باقی می ماند، یافتن بخشی از کدها است که از آن بتوان سوء استفاده کرد و در سیستم برنامه، اختلال ایجاد کرد. خود من تنها یک بار از مهندسی معکوس کدهای فایل apk استفاده کرده ام و آن هم برای اطمینان از امکان پذیر بودن دیدن کدهای برنامه بود. بنابراین شما باید برای امنیت بیشتر برنامه اندروید خود، از راهکارهای امنیتی استفاده کنید. یکی از این راهکارها، استفاده از ProGuard است. خوشبختانه اگر از جدیدترین برنامه های مربوط به توسعه اندروید استفاده می کنید (مثلا یک نسخه جدید از ADT Bundle)، آنگاه نیازی به نصب هیچ برنامه جدیدی نیست و خود برنامه مربوط به توسعه، حاوی ProGuard می باشد. بنابراین با فرض اینکه برنامه توسعه شما، زیاد قدیمی نباشد، مراحل فعال کردن ProGuard برای پروژه اندروید را شرح می دهیم.

فرض کنید که در برنامه eclipse ، یک پروژه اندروید با نام Kelidestan.com ساخته ایم و اکنون می خواهیم که ProGuard را برای آن فعال کنیم. درون پوشه بندی پروژه اندروید، بر روی فایل project.properties کلیک می کنیم تا باز شود :

استفاده از ProGuard برای سخت تر شدن مهندسی معکوس (reverse engineering) و استخراج کدهای فایل apk برنامه اندروید

کدهای فایل project.properties ، در ابتدا به صورت زیر می باشد :


# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must be checked in Version Control Systems.
#
# To customize properties used by the Ant build system edit
# "ant.properties", and override values to adapt the script to your
# project structure.
#
# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

# Project target.
target=android-19

همان طور که مشاهده می کنید، اکثر کدهای آن، به صورت توضیح (comment) می باشند. به این خط از کدها توجه کنید :


#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

این خط از کدها را باید از حالت توضیح (comment) دربیاوریم، یعنی علامت # را از ابتدای آن، حذف کنیم. بنابراین کدها، به صورت زیر در می آید :


proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

تغییرات را ذخیره کرده و فایل را ببندید. اکنون به همان روش عادی که از پروژه اندروید، یک فایل apk می ساخته اید، این بار نیز همان عملیات را انجام بدهید (بر روی نام پروژه اندروید، کلیک سمت راست کرده و سپس گزینه Export را انتخاب می کنیم و سایر گزینه ها را برای ساخت فایل apk ، طی می کنیم، ساخت فایل apk را در مبحثی دیگر شرح داده بودیم و آن توضیحات را تکرار نمی کنیم). اگر در حین ساخت فایل apk ، دقت کنید، در پوشه بندی پروژه اندروید، یک پوشه (folder) جدید با نام proguard ساخته می شود (به طور خودکار). آن را در شکل زیر نمایش داده ایم (با مقایسه آن با شکل قبل، می توانید مشاهده کنید که قبلا وجود نداشته است) :

استفاده از ProGuard برای سخت تر شدن مهندسی معکوس (reverse engineering) و استخراج کدهای فایل apk برنامه اندروید

از وجود همین فولدر می توان مطمئن شد که ProGuard برای برنامه اندروید، فعال شده است.

  • فهرست مباحث
نویسنده علیرضا گلمکانی
شماره کلید 323
گزینه ها
به اشتراک گذاری (Share) در شبکه های اجتماعی
نظرات 2 2 0
sami
۱۳۹۵/۰۷/۱۸
۱۹:۰۳

با سلام
دوتا مشکل دارم : 1. داخل فایل project.properties پروژه من این خط کد proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt وجود نداره
2.وقتی خودم این خط رو اضاف میکنم و میخوام اکسپورت کنم این پیغام "proguard-project.txt  does not exist or is not a regular file" رو میده و اجازه اتمام کار رو نمیده!!!!

jafar
۱۳۹۶/۱۱/۱۰
۱۶:۰۰

proguard محیط اندروید استودیو رو هم توضیح بدین

ارسال نظر جدید (بدون نیاز به عضو بودن در وب سایت)