PDA

View Full Version : محافظت از سورس برنامه



esmaeilbf
یک شنبه 08 دی 1392, 14:28 عصر
سلام دوستان
وقتی یک برنامه رو نوشتیم و کامپایل کردیم به راحتی یه نفر میتونه بیاد با winrar نوشته و سورس XML ها رو تغییر بده ایا برای جلوگیری از این سو استفاده ها راهی وجود داره

rubiks.kde
یک شنبه 08 دی 1392, 14:40 عصر
در حفاظت از برنامه چندین راه دارید که میتونید انجام بدید.

یکی اینکه کدها اصلی به صورت native نوشته بشه که قابل دسترسی نباشه(که زیاد بکار نمیاد)
راه دیگه هم استفاده از ProGuard برای مبهم سازی کد و بهینه سازی هست.

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

در مورد فایل برنامه هم شما هر کاری کنید هم بازهم با برنامه هایی مثل winrar باز میشه یا با apktoolمیشه decompile کرد.ولی استفاده از این روش ها تا حدودی کار رو مشکل میکنه.

البته یکی از دوستان توی یکی از تاپیک ها موردی رو درخواست کرده بودن که میشد فایلهای xml رو هم محافظت کرد ولی مشکل رایگان نبودنش بود.

shs1377
یک شنبه 08 دی 1392, 22:22 عصر
میشه نحوه استفاده از proguard رو توضیح بدید

rubiks.kde
یک شنبه 08 دی 1392, 23:54 عصر
میشه نحوه استفاده از proguard رو توضیح بدید

استفاده از اون نیاز به کار خاصی نداره تنها باید آدرس اسکریپتش رو توی project.properties بدید مثل این مورد :
proguard.config=proguard.cfg
بعد همین فایل رو کنار فایل project.properties درست کنید و دستورات اسکریپت رو توش بنویسید.خود اکلیپس این فایلها رو ایجاد میکنه.

اینم یه نمونه از اسکریپت :

# This is a configuration file for ProGuard.
# http://proguard.sourceforge.net/index.html#manual/usage.html

# Optimizations: If you don't want to optimize, use the
# proguard-android.txt configuration file instead of this one, which
# turns off the optimization flags. Adding optimization introduces
# certain risks, since for example not all optimizations performed by
# ProGuard works on all versions of Dalvik. The following flags turn
# off various optimizations known to have issues, but the list may not
# be complete or up to date. (The "arithmetic" optimization can be
# used if you are only targeting Android 2.0 or later.) Make sure you
# test thoroughly if you go this route.
-optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/*
-optimizationpasses 5
-allowaccessmodification
-dontpreverify

# The remainder of this file is identical to the non-optimized version
# of the Proguard configuration file (except that the other file has
# flags to turn off optimization).

-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-verbose

-keepattributes *Annotation*
-keep public class com.google.vending.licensing.ILicensingService
-keep public class com.android.vending.licensing.ILicensingService

# For native methods, see http://proguard.sourceforge.net/manual/examples.html#native
-keepclasseswithmembernames class * {
native <methods>;
}

# keep setters in Views so that animations can still work.
# see http://proguard.sourceforge.net/manual/examples.html#beans
-keepclassmembers public class * extends android.view.View {
void set*(***);
*** get*();
}

# We want to keep methods in Activity that could be used in the XML attribute onClick
-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}

# For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}

-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}

-keepclassmembers class **.R$* {
public static <fields>;
}

# The support library contains references to newer platform versions.
# Don't warn about those in case this app is linking against an older
# platform version. We know about them, and they are safe.
-dontwarn android.support.**

shs1377
دوشنبه 09 دی 1392, 01:00 صبح
حالا میشه بگید کلا کارش چیه؟ کاهنده حجم امنیت و...

rubiks.kde
دوشنبه 09 دی 1392, 01:08 صبح
حالا میشه بگید کلا کارش چیه؟ کاهنده حجم امنیت و...

میدونید که کدهای جاوا بعد از کامپایل به native کد تبدیل نمیشن و به byte code تبدیل میشن و این امر باعث میشه تا راحت decompile بشه
ولی استفاده از این ابزار این کار رو سخت میکنه یعنی میاد کد رو دستکاری میکنه .اسم توابع و کلاس ها رو به اسمهایی غیرمفهوم تبدیل میکنه مثلا اسم یه تابع رو میزاره a یا aaa و ...

کلا کارش مبهم سازی کدهست.البته بهینه سازی هم میکنه.

shs1377
دوشنبه 09 دی 1392, 01:19 صبح
از جوابتون متشکرم ببخشید یک سوال دیگه داشتم من یکجا دیدم گفته بود برای استفاده از proguard باید برنامه رو بوسیله export کردن در اکلیپس استفاده کنیم آیا این درسته؟ چون خودمم از proguard استفاده میکنم وقتی export میکنم حجم برنامه حدود 150 کیلوبایت میاد پایین این به علت استفاده از proguard یا کلا وقتی export میکنیم اینجوریه؟ در کل export به چه دردی میخوره ؟ فرقی با استفاده از برنامه ایجاد شده در bin داره؟

ببخشید سوالات زیاد شد

rubiks.kde
دوشنبه 09 دی 1392, 10:09 صبح
فرقشون توی حالت debug و release هست اون چیزی که شما توی پوشه bin در هربار کامپایل بدست میارید در واقع نسخه debug برنامه هست که با کلید دیباگ آندورید ساین شده و بهینه نشده.ولی وقتی export میکنید در واقع دارید نسخه release رو تولید میکنید که علاوه بر اینکه از کلیدخودتون برای ساین بسته استفاده میکنید ، اگه تنظیمات proguard رو ست کرده باشید بهینه سازی و مبهم سازی هم صورت میگیره.

raha_jon
سه شنبه 27 اسفند 1392, 15:12 عصر
سلام من به این فیلم نگاه کردم چیزی متوجه نشدم مبتدی هستم.

http://www.youtube.com/watch?v=qXsjTWX-l9A

و از سورس بالا سر در نیاوردم خواهشا راهنمایی کنید.
و همین طور اسکریپت بالا را کپی و فایل را ساختم تمام کلاس های برنامه رمزنگاری نشد.
لطفا راهنمایی کنید.
و همین طور حجم برنامه هم از 5 مگابایت به 4.1 رسید.

poorman
دوشنبه 12 خرداد 1393, 06:10 صبح
سلام دوستان

ساعت 6:45 صبح، من 3 ساعته دارم کل نت رو زیر و رو میکنم، هیچ آموزش ساده و به درد بخوری واسه proguard پیدا نکردم :ناراحت:

داکیومنت های اندروید که واسه ما باز نمیشه، چهار تا سایت هم که ظاهرا آموزش گذاشته بودن فیلتر بود

میشه یک نفر چند خط فقط راجع به اسکریپت های مربوط به مبهم سازی توضیح بده ؟

چه کلاس هایی رو مبهم نباید بکنیم ؟

میشه دیتابیس رو هم یه جوری این وسط محافظتش کنیم یا یه بلایی سرش بیاریم ؟

از هر کمکی هر چند کوچیک بی نهایت سپاسگذار میشم :لبخندساده:

Nevercom
دوشنبه 12 خرداد 1393, 08:24 صبح
اندروید بصورت پیشفرض دوتا تنظیمات مربوط به ProGuard داره، یکی proguard-android هست و دیگری proguard-android-optimize. فرقشون اینه که دومی یکسری بهینه سازیهایی هم انجام میده.

معمولاً برای بیشتر پروژه ها یکی از این دوتا کفایت می کنه، البته درصورتی که از کتابخانه های jar در برنامه استفاده کرده باشید، نیاز هست که به ProGuard بگید که فلان کلاس ها رو Obfuscate نکن.

از اینجا می تونید مستنداتش رو بخونید: http://proguard.sourceforge.net/index.html#manual/index.html

نسخه ای از ProGuard وجود داره بنام dexGuard که مخصوص اندروید هست و البته قابلیت هایی بیشتری برای درهم ریزی کدها هم داره (مثلاً ناخوانا کردن String ها) که متاسفانه رایگان نیست.

c0mmander
دوشنبه 12 خرداد 1393, 09:23 صبح
اقا از این چیزای خوب خوب برای سی شارپ و monoDroid هم هست؟؟

badname
دوشنبه 12 خرداد 1393, 10:04 صبح
اقا از این چیزای خوب خوب برای سی شارپ و monoDroid هم هست؟؟
بنظرم monoDroid رو بیخیال شو ... بچسب به eclipse :لبخندساده:
چون معمولا هرچی tools و پلاگین میاد اول برای eclipse میاد

badname
دوشنبه 12 خرداد 1393, 10:18 صبح
فرقشون توی حالت debug و release هست اون چیزی که شما توی پوشه bin در هربار کامپایل بدست میارید در واقع نسخه debug برنامه هست که با کلید دیباگ آندورید ساین شده و بهینه نشده.ولی وقتی export میکنید در واقع دارید نسخه release رو تولید میکنید که علاوه بر اینکه از کلیدخودتون برای ساین بسته استفاده میکنید ، اگه تنظیمات proguard رو ست کرده باشید بهینه سازی و مبهم سازی هم صورت میگیره.
چند وقته سواله برام...
خروجی که از debug روی موبایل نصب میشه با اونی که از eclipse Export میکنیم از لحاظ امنیتی فرق داره آیا ؟

Nevercom
دوشنبه 12 خرداد 1393, 14:37 عصر
وقتی که پروژه رو Export می کنید، چند اتفاق می افته.
یکی این هست که اگر ProGuard رو استفاده کرده باشید، روی سورس اعمال میشه (درحالت دیباگ پرو گارد وارد عمل نمیشه)
در این حالت شما نیاز به یک کلید برای ساین کردن دارید که این کلید میشه هویت شما، یعنی مارکت با استفاده از اون امضای دیجیتال تشخیص میده که شما صاحب برنامه هستید و اگر شخص دیگری بخواد یه برنامه با همون نام پکیج بده، چون کلید ساینش رو در احتیار نداره، اون برنامه رو معتبر نمیشناسه.

poorman
دوشنبه 12 خرداد 1393, 16:04 عصر
خیلی ممنون Nevercom (http://barnamenevis.org/member.php?89707-Nevercom) عزیز

من داکیومنت های خود سایت proguard رو خوندم اما خیلی کلی بود و بدون هیچ مثالی

الان مشکلم اینه که نفهمیدم چطور دقیقا باید توی فایل proguard.cfg دستورات رو برای مبهم سازی و بهینه سازی بنویسم

mfaridi
سه شنبه 13 خرداد 1393, 11:14 صبح
لطفا یکی بیاد یه اموزش تصویری در این رابطه بده ممنون میشیم

dasssnj
سه شنبه 13 خرداد 1393, 11:23 صبح
وستان من اینو پیدا کردم به نظر میاد خوبه و از proguard بهتره.

dexprotector.com (http://dexprotector.com)

smemamian
سه شنبه 13 خرداد 1393, 13:59 عصر
وستان من اینو پیدا کردم به نظر میاد خوبه و از proguard بهتره.

dexprotector.com (http://dexprotector.com)

نمونه های مشابه زیاد هست ولی...
این نمونه هم مشکل مشابهی داره :


The free trial license of DexProtector is fully functional for 15 days, but protected applications stop working when your trial license expires.

Amin-rz
پنج شنبه 23 مرداد 1393, 17:37 عصر
ميشه دقيقا مرحله بهت مرحله بگيد بايد چكار كرد؟
براي استفاده از pro guard