# Native Code > برنامه نویسی موبایل > Android Studio >  Decompile And Anti Decompile

## saeidpsl

هدف از این تاپیک، صرفا ارائه نمونه  Anti-Decompile   برای اندروید تحت جاوا است. امیدوارم نهایت استفاده رو ببرید."محافظت از سورس برنامه"

----------


## saeidpsl

...................................

----------


## dasssnj

با apk protect از دیکامپایل توسط apktool  و dex2jar جلوگیری کنید. (البته فکر کنم باید فایل apk را دوباره ساین کنید)

http://uploadboy.com/3yiqekf5s678.html

----------


## saeidpsl

> با apk protect از دیکامپایل توسط apktool  و dex2jar جلوگیری کنید. (البته فکر کنم باید فایل apk را دوباره ساین کنید)
> 
> http://uploadboy.com/3yiqekf5s678.html


اینو کسی تست کرد برا من که جواب نداد؟!!

----------


## Nevercom

دوستان اگر ممکنه لینک فایل اصلی از وبسایتش رو هم بزارید، اینطوری حداقل میشه اطلاعات بیشتری در مورد برنامه خوند. الان دوتا فایل تو این تاپیک هست که تا دانلود و اجراشون نکنم، هیچ اطلاعی ندارم که چی هستن.

برای دیکامپایل ابزار jd-GUI یه ابزار خوبه، بصورت پلاگین رو Eclipse و IntelliJ IDEA هم نصب میشه.

اما برای جلوگیری از دیکامپایل که خب راه حلی نیست، در واقع این ماهیت جاوا هست که کدها به کد ماشین ترجمه نمیشن. ابزارهایی که در این بین وجود دارن، Obfuscator هستن، میان و کدها رو به هم میریزن تا استفاده ازش مشکل تر بشه.

حالا یک سری ابزارهایی وجود دارن که کار بیشتری انجام میدن، مثلاً String ها رو هم به هم میریزن، یا از یه الگوریتم دیگه واسه بهم ریختن استفاده می کنن، بیشترشون هم تجاری هستن و ارزون هم نیستن

----------


## slr560

> دوستان اگر ممکنه لینک فایل اصلی از وبسایتش رو هم بزارید، اینطوری حداقل میشه اطلاعات بیشتری در مورد برنامه خوند. الان دوتا فایل تو این تاپیک هست که تا دانلود و اجراشون نکنم، هیچ اطلاعی ندارم که چی هستن.
> 
> برای دیکامپایل ابزار jd-GUI یه ابزار خوبه، بصورت پلاگین رو Eclipse و IntelliJ IDEA هم نصب میشه.
> 
> اما برای جلوگیری از دیکامپایل که خب راه حلی نیست، در واقع این ماهیت جاوا هست که کدها به کد ماشین ترجمه نمیشن. ابزارهایی که در این بین وجود دارن، Obfuscator هستن، میان و کدها رو به هم میریزن تا استفاده ازش مشکل تر بشه.
> 
> حالا یک سری ابزارهایی وجود دارن که کار بیشتری انجام میدن، مثلاً String ها رو هم به هم میریزن، یا از یه الگوریتم دیگه واسه بهم ریختن استفاده می کنن، بیشترشون هم تجاری هستن و ارزون هم نیستن


من jd-GUI رو روی Intellij نصب کردم
چجوری ازش باید استفاده کرد؟ اصن معلوم نیس کجا رفت  :لبخند گشاده!:

----------


## Nevercom

من تو اکلیپس ازش استفاده کردم و روی اون توضیح میدم، فرض کنید یک کنابخانه به پروژه اضافه کردید، سورس رو به حالت معمول نمیتونید ببینید، حالا اگه از قسمت Private Libraries (تو ساختار پروژه) اون فایل جار رو باز کنید لیست کلاس هاش رو میبینید، با باز کردن هر کلاس، سورس جاوا استخراج و نمایش داده میشه. و خب بزرگترین مزیتش اینه که مثل ادیتور های اکلیپس، می تونید با نگه داشتن Ctrl و کلیک رو نام کلاس، وارد اون کلاس بشید.

برای فایل های apk هم اول با dex2jar تبدیلش کنید و فایل jar تولید شده رو میشه با این برنامه باز کرد

----------


## smemamian

حتی نرم افزارهای بزرگ که توی بازارهای جهانی هستن، به راحتی دیکامپایل میشن و من 
این رو تست کردم و جالب اینه، کدها به خوبی هرچه تمام تر نمایش داده میشن.
برای مثال، نرم افزاری که اخیراً دیکامپایل کردم، نرم افزار *App Lock* با بیش از 50 میلیون
کاربر و پشتیبانی از 24 زبان ! 
پس یه نتیجه کلی و سریع میشه گرفت، اگر راه ی بود 100 درصد چنین نرم افزارهایی
انجام میدادن.

----------


## saeidpsl

> حتی نرم افزارهای بزرگ که توی بازارهای جهانی هستن، به راحتی دیکامپایل میشن و من 
> این رو تست کردم و جالب اینه، کدها به خوبی هرچه تمام تر نمایش داده میشن.
> برای مثال، نرم افزاری که اخیراً دیکامپایل کردم، نرم افزار *App Lock* با بیش از 50 میلیون
> کاربر و پشتیبانی از 24 زبان ! 
> پس یه نتیجه کلی و سریع میشه گرفت، اگر راه ی بود 100 درصد چنین نرم افزارهایی
> انجام میدادن.


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

----------


## smemamian

قشنگتر از این*؟ :*

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">Proguard</string>
    <string name="action_settings">Settings</string>
    <string name="hello_world">Hello world!</string>
</resources>
و بدین نشانی که در *proguard* و در قسمت MainActivity یک Toast داری.

----------


## poorman

برای دیکامپایل کردن زیاد به خودتون زحمت ندین، یکم حجم اینترنت بسوزونید کارتون خیلی راحت میشه 

http://www.decompileandroid.com/

این سایت فایل apk رو میگیره، سورس تحویل میده :|

البته اگر مبهم سازی شده باشه همونطوری مبهم شده تحویل میده دیگه

*ویرایش* : فقط این سایت یا احتمالا هر دیکامپایلر دیگه ای، رشته های فارسی رو نمیتونه برگردونه و اونا رو به صورت کد هر کاراکتر برمیگردونه

----------


## saeidpsl

:لبخند گشاده!: چه ربطی داره من گفتم سلام نه hello این salam  اون چیزی که toast میشه رو گفتم یه بار برنامه اجرا کن تا متوجه شی.

----------


## smemamian

> چه ربطی داره من گفتم سلام نه hello این salam  اون چیزی که toast میشه رو گفتم یه بار برنامه اجرا کن تا متوجه شی.


خودت ببین*:*

لینک

----------


## rubiks.kde

دوستان بهتره یکم در مورد خود زمان جاوا تحقیق کنید.جاوا میشه byte code به همین خاطر هم راحت دیکامپایل میشه و اگه به زبان ماشین تبدیل میشد این مشکلات خیلی کم بود.
هر کاری هم بکنید باز هم کد رو میشه دید.تنها مبهم سازی کار رو مشکل میکنه

----------


## saeidpsl

> خودت ببین*:*
> 
> لینک


چیزی پیدا نشد
داش من منظورم این بود اینو میتونی از کد دربیاری



public class a
{

    public static String a;
    public static boolean b;
    public static boolean c;

    public a()
    {
    }

    static 
    {
        char ac[];
        int i;
        int j;
        ac = "\030\t>]l".toCharArray();
        i = ac.length;
        j = 0;
        if (i > 1) goto _L2; else goto _L1
_L1:
        char ac1[];
        int k;
        int l;
        char ac2[];
        ac1 = ac;
        k = j;
        l = i;
        ac2 = ac;
_L9:
        char c1 = ac2[j];
        k % 5;
        JVM INSTR tableswitch 0 3: default 68
    //                   0 103
    //                   1 110
    //                   2 117
    //                   3 124;
           goto _L3 _L4 _L5 _L6 _L7
_L7:
        break MISSING_BLOCK_LABEL_124;
_L4:
        break; /* Loop/switch isn't completed */
_L3:
        byte byte0 = 1;
_L10:
        ac2[j] = (char)(byte0 ^ c1);
        j = k + 1;
        if (l != 0)
        {
            break MISSING_BLOCK_LABEL_131;
        }
        ac2 = ac1;
        k = j;
        j = l;
        if (true) goto _L9; else goto _L8
_L8:
        byte0 = 107;
          goto _L10
_L5:
        byte0 = 104;
          goto _L10
_L6:
        byte0 = 82;
          goto _L10
        byte0 = 60;
          goto _L10
        i = l;
        ac = ac1;
_L2:
        if (i <= j)
        {
            a = (new String(ac)).intern();
        }
        if (true) goto _L1; else goto _L11
_L11:
    }
}

----------


## saeidpsl

> بیشتر نرم افزارهای دیکامپایل از رشته های فارسی پشتیبانی نمی کنن*.* 
> ولی در کل نمیشد به خوبی او فایل رو دیکامپایل کرد.
> 
> روشتو خواستی توضیح بده به دوستان.


داش  فارسی نیست که  اینه salam  
حتمآ میزارم به زودی. :چشمک:

----------


## saeidpsl

یه برنامه فوق العاده عالی و قوی برای Obfuscation کردن فایل jar
خوب دوستادن رسیدیم به بخش مهم مهم Obfuscation(مبهم کردن) یک  پسورد یا آدرس سایت... در جاوا با کمک برنامه  *Zelix KlassMaster 5.5*  یا  *Zelix KlassMaster 8.0.8*  اگه پست بالا رو ببینید متوجه میشید نمونه مبهم شده با  برنامه.
*روش کار
*پروژه اول اختصاص میدیم به دیتا یا فقط برای آدرس و پسورد ...چیزای که نمیخواهید کسی بتونه ببینه یه پروژه جاوا درست میکند بعد پکیج مثلا com.me و بعد هم یه کلاس بعد تو کلاس یه رشته مثلا پسورد درست میکنید بعد با فرمت جار  export کنید. مثال
حالا میریم سراغ برنامه
برنامه رو ران میکنیم
فایل جار export شده رو باز میکنیم "Ctrl + O"
بعد از منو  Tools >Obfuscation  انتحاب کنید "Ctrl + B"
  حالا  از ComboBox Exclude package qualifiers پکیج مورد نظرتون رو انتخاب کنید  و نکس رو انتخاب کنید این بخش برای تنظیم مبهم کردنه و بعد اوکی حالا همه چی مبهم شد خوب حالا از سطون اول سمت چپ کلاس مورد نظر رو سلکت کنید  بعد سطون دوم معلومه اسم "اسم کلاس"و فیلد "رشته ها و ...."و  متود ... رو با سلکت رو هر کدوم میتونید اسم و مقدارشون رو عوض کنید 
و بعد  از منو File > Save all  انتحاب کنید "Ctrl + s" 
جار رو سیو کنید و بعد اون جار رو کپی کنید تو پوشه libs سورس برنامتون و  سورس رو رفرش کنید بعد اون رشته رو لود کنید  مثل

  Toast.makeText(getApplicationContext(), com.me.user.a , Toast.LENGTH_SHORT).show();



آموزش بیشتر  - سایت برنامه

----------


## hamedjj

دم *saeidpsl* و بقیه گرم
اسیر اینجور تاپیک ها هستم
ایول

----------


## saeidpsl

> دم *saeidpsl* و بقیه گرم
> اسیر اینجور تاپیک ها هستم
> ایول


خواهش داش


تست کنید اگه درست جواب داد از آقا مدیر *rubiks.kde* عزیز میخوام این تاپیک رو به  تاپیک های اعلان اضافه کنه.

----------


## dasssnj

> اینو کسی تست کرد برا من که جواب نداد؟!!


من رو سه چهار تا برنامه ی خارجی تست کردم. کار می کنه.

----------


## saeidpsl

> من رو سه چهار تا برنامه ی خارجی تست کردم. کار می کنه.


برا همه جواب نمیده

----------


## dasssnj

من اصلا تو فکرشم یه برنامه ی anti decompile خودم بنویسم.

----------


## saeidpsl

> من اصلا تو فکرشم یه برنامه ی anti decompile خودم بنویسم.


باشه :لبخند گشاده!:

----------


## dasssnj

> باشه


برای فایل های jar تا یه جاهایی پیش رفتم ولی نشد. برای اندروید هم چند وقته دارم تلاش می کنم ولی نمیشه :لبخند گشاده!: 
ولی یه مبهم کننده ی string نوشتم اگه خواستین بهتون بدم . طوری نیست که خودش بره و مبهم کنه. شما متنتون را با برنامه ی من مبهم می کنید و میزارید توی کدتون و توی کدتون با تابعی که نوشتم برش می گردونید به حالت اول. یکم سخته و سرعت را میگیره ولی کار می کنه.

----------


## dasssnj

اینم کد کننده ی string من :
توی تست باکس اول متنتون را بنویسید و  دکمه ی enode را بزنید  . تکست باکس  دوم  کد را نمایش خواهد داد . 
کد را توی برنامتون با تابع زیر به حالت اول در بیاوید و به کاربر نمایش بدید.


public static String decode(String s){
        char[] ch = s.toCharArray();
        int len = ch.length;
        if(len % 4 !=0)
            return "Error !";
        String d= "";
        int yy =0;
        for (int i = 0; i < len/4; i++) {
            int c = (int) Integer.decode("#"+s.substring(yy, yy+4));
            yy+=4;
            d+=(char)c;        
       }      
        return d;
    }

فایل برنامه پیوست است. آن را از حالت زیپ در بیاورید و با jre اجرا کنید.

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

----------


## abbasalim

> خوب دوستادن رسیدیم به بخش مهم مهم Obfuscation(مبهم کردن) یک  پسورد یا آدرس سایت... در جاوا با کمک برنامه  *Zelix KlassMaster 5.5* اگه پست بالا رو ببینید متوجه میشید نمونه مبهم شده با  برنامه.
> *روش کار
> *پروژه اول اختصاص میدیم به دیتا یا فقط برای آدرس و پسورد ...چیزای که نمیخواهید کسی بتونه ببینه یه پروژه جاوا درست میکند بعد پکیج مثلا com.me و بعد هم یه کلاس بعد تو کلاس یه رشته مثلا پسورد درست میکنید بعد با فرمت جار  export کنید. مثال
> حالا میریم سراغ برنامه
> برنامه رو ران میکنیم
> فایل جار export شده رو باز میکنیم "Ctrl + O"
> بعد از منو  Tools >Obfuscation  انتحاب کنید "Ctrl + B"
>   حالا  از ComboBox Exclude package qualifiers پکیج مورد نظرتون رو انتخاب کنید  و نکس رو انتخاب کنید این بخش مال تنظیم مبهم کردنه و بعد اوکی حالا همه چی مبهم شد خوب حالا از سطون اول سمت چپ کلاس مورد نظر رو سلکت کنید  بعد سطون دوم معلومه اسم "اسم کلاس"و فیلد "رشته ها و ...."و  متود ... رو با سلکت رو هر کدوم میتونید اسم و مقدارشون رو عوض کنید 
> و بعد  از منو File > Save all  انتحاب کنید "Ctrl + s" 
> ...


آقا درجه یک تست شد ، ;)
ما هم از آقای مدیر میخوایم این رو ببره جز پست های مهم

----------


## Nevercom

کلاً ابزارهای مبهم سازی دسته های مختلفی دارن و سطوح مختلفی از توانایی.

یکی از مراحل مبهم سازی Name Obfuscation هست، که معمول ترین حالت هست و اسم متد ها و متغیرها و کلاس ها رو بصورت رندوم انتخاب می کنه گه کد تولید شده رو برای خوندن سخت تر می کنه.
سطح دیگه String Encryption هست که String ها رو بهم میریزه، درواقع در یک مرحله کد می کنه و در مرحله ای دیگه دیکد می کنه.
سطح دیگه Flow Obfuscation هست که روند اجرای برنامه رو تغییر میده بصورتی که نتیجه ای مشابه حاصل بشه، نمونه ای از Flow Obfuscation در کدهایی که دوستمون گذاشتن مشخص هست، از این Label و Goto برای تغییر روند اجرای کدها استفاده شده.

موضوع این هست که Flow Obfuscation بخاطر تاثیر منفی که در سرعت و عملکرد برنامه میزاره توصیه نمیشه 
String Encryption هم قابل دور زدن هست، به این دلیل ساده که الگوریتم کد کردن باید دوسویه باشه و بتونه رشته رو کد و دیکد کنه، درنهایت شخصی که قصد داره از برنامه ی ما سر در بیاره کافیه کدهای ما رو برداره و با یه کد ساده متد نهایی مارو صدا بزنه تا رشته دیکد شده براش نمایش داده بشه.
درواقع ما فقط داریم استرینگ رو از دید پنهان می کنیم که در نگاه اول مشخص نباشه، که من فکر می کنم بشه از یه روشی که خودمون ساختیم استفاده کنیم.

درکل مگر اینکه برنامه ی ما حاوی اطلاعات خیلی خاص و مهمی باشه، بهتره از روش هایی فراتر از Name Obfuscation استفاده نکنیم. به این دلیل که این ابزارها میتونن تاثیر منفی روی عملکرد برنامه بزارن و چون بر اساس فرضیاتی کار می کنن و قسمت هایی از کد رو تغییر میدن یا حذف می کنن، ممکنه ناخواسته باعث بشن برنامه ی ما کرش کنه.

در لیست زیر تعدادی نرم افزار جایگزین ProGuard رو میتونید ببینید: http://proguard.sourceforge.net/alternatives.html

ضمن اینکه با توجه به رایگان نبودن این ابزار، استفاده از dexGuard که هم ارزانتر هست، هم مخصوص اندروید هست و بر پایه ی ProGuard معقول تر بنظر میرسه.
این مقاله رو هم بخونید اطلاعات خیلی مفیدی داره: http://www.excelsior-usa.com/article...fuscators.html


درنهایت، شما فقط می تونید کدهاتون رو بهم بریزید تا نشه به راحتی ازش استفاده کرد. فکر می کنم تا همین اندازه کافی باشه، اما اگر تصمیم گرفتید پا رو از این حد فراتر بزارید، حتماً برنامه رو بعد از استفاده از این ابزارها چندبار تست کنید تا از کیفیت عملکردش مطمئن بشید

----------


## saeidpsl

..................................................  ..........

----------


## abbasalim

> *APK to Java Release Candidate 2*
> 
> توضیحات: 
> از آنجا که من به ساخت نرم افزار های آندرویید امروزه، من از ساخت این ابزار به نجات من فکر می کردم (و شما) زمان. پس شروع کردم به برنامه نویسی آن و آن کار می کرد از خوبی تا کنون. ابزار می تواند APK انتخاب خود را به کد جاوا decompiles، به آموختن از آن، بنابراین به عنوان یک هدف آموزشی. 
> علاوه بر آن نیز می تواند به کد smali decompile و آن را می توانید به منابع از برنامه decompile. این در حال حاضر بتا خیلی زود اما این کار موفقیت (حداقل در کامپیوتر من) 
> نسخه نهایی باید هر برنامه با موفقیت به جاوا / smali / منابع و پروژه گرفتگی تبدیل، من انجام بهترین من آن را به تمام کار ASAP، اگر شما فکر می کنم من چیزی اشتباه در منبع انجام داد و یا می خواهید برای کمک به هر چیزی لطفا اجازه دهید من می دانم! 
> 
> ابزارهای خارجی استفاده می شود (به لطف زیادی به این توسعه دهندگان!): 
> - 7za (ایگور پاولوف) 
> ...


واسه من کار نکرد


**مدیر این پست رو بزار بالا خواهشا  :ناراحت:

----------


## abbasalim

> برای دیکامپایل کردن زیاد به خودتون زحمت ندین، یکم حجم اینترنت بسوزونید کارتون خیلی راحت میشه 
> 
> http://www.decompileandroid.com/
> 
> این سایت فایل apk رو میگیره، سورس تحویل میده :|
> 
> البته اگر مبهم سازی شده باشه همونطوری مبهم شده تحویل میده دیگه
> 
> *ویرایش* : فقط این سایت یا احتمالا هر دیکامپایلر دیگه ای، رشته های فارسی رو نمیتونه برگردونه و اونا رو به صورت کد هر کاراکتر برمیگردونه


این سایتم که دیگه بالا نمیاد :((

----------


## rubiks.kde

> **مدیر این پست رو بزار بالا خواهشا


کلا بحث های مربوط به هک و ... خلاف قوانین هست.
حالا اگر هدف آموزش های لازم برای بالابردن امنیت باشه یه چیزی.
همچنین باید پست از حالت آشفتگی بیاد بیرون و مطالب پراکنده بیان نشه.

----------


## pouya1999best@g

> کلا بحث های مربوط به هک و ... خلاف قوانین هست.
> حالا اگر هدف آموزش های لازم برای بالابردن امنیت باشه یه چیزی.
> همچنین باید پست از حالت آشفتگی بیاد بیرون و مطالب پراکنده بیان نشه.


واقعا راست میگی؛
با این پستا آخر سر من نفهمیدم چجوری میشه امنیت رو بالا برد!!!

----------


## saeidpsl

> واقعا راست میگی؛
> با این پستا آخر سر من نفهمیدم چجوری میشه امنیت رو بالا برد!!!


کجاش نفهمیدی ؟؟

----------


## saeidpsl

> کلا بحث های مربوط به هک و ... خلاف قوانین هست.
> حالا اگر هدف آموزش های لازم برای بالابردن امنیت باشه یه چیزی.
> همچنین باید پست از حالت آشفتگی بیاد بیرون و مطالب پراکنده بیان نشه.


آقا قبول Decompile رو پاک کن فقط بنویس  Anti Decompile و  پست های مربوط به  Decompile  هم پاک کن حالا میشه قرار بدی ؟؟

----------


## pouya1999best@g

> کجاش نفهمیدی ؟؟


هیچ جاشو؛
به نتیجه ای هم نرسیدم؛

----------


## saeidpsl

خوب اینجا  کامل گفتم

----------


## pouya1999best@g

> خوب اینجا  کامل گفتم


شرمنده؛متوجه نمیشم؛منظورتونو سخت میرسونید

----------


## halig313

دوست عزیز
راهی برای استفاده از این نمونه کدی که گذاشتید می شناسید؟
توی stackoverflowدنبال چی بگردم؟



> public class a
> {
> 
>     public static String a;
>     public static boolean b;
>     public static boolean c;
> 
>     public a()
>     {
> ...

----------


## saeidpsl

> دوست عزیز
> راهی برای استفاده از این نمونه کدی که گذاشتید می شناسید؟
> توی stackoverflowدنبال چی بگردم؟


برادر من داداش من اخوی رفیق این یک نمونه از کد شده توسط برنامه است
 ازش استفاده کنی برای چه ؟؟!!

----------


## samanbank

اقا من برنامه رو دیکامپایل میکنم لامصب برداشته با C++‎ یک برنامه نوشته و کامپایلش کرده file.so هست گزاشته تو پوشه libs اینو چطوری دیکامپایل کنم ؟! 


ایا یک برنامه نویش بهش بدی بنویسه نباید سورسشو بده !؟؟؟ ؟؟؟ بهش میگم سورس بده میگه باید 2 تومن بدی :| میخوام یه تغییر کوچیک بدم میگه 200 تومن !!! کلا هم 500 گرفته !!!

----------


## abbasalim

> اقا من برنامه رو دیکامپایل میکنم لامصب برداشته با C++‎‎ یک برنامه نوشته و کامپایلش کرده file.so هست گزاشته تو پوشه libs اینو چطوری دیکامپایل کنم ؟! 
> 
> 
> ایا یک برنامه نویش بهش بدی بنویسه نباید سورسشو بده !؟؟؟ ؟؟؟ بهش میگم سورس بده میگه باید 2 تومن بدی :| میخوام یه تغییر کوچیک بدم میگه 200 تومن !!! کلا هم 500 گرفته !!!


سلام
وقتی برنامه سفارش میدی باید در قرار داد ذکر کنی که سورس  رو بهت بدن یا نه (آلبته سورس هم بدن معمولا به درد نمیخوره :شیطان:  ) بهتره تو قرار داد در مورد ویرایش ها و آپدیتها حتما ذکر کنید تا بعدا به مشکل نخورید

----------


## saeidpsl

یه برنامه فوق العاده عالی و قوی برای محافظت از   apk 
کد کردن کلاس ها و همچنین محافظت از String و محافظت از لایه ها و فایل های resource و Anti Decompiler و قابلیت اجرا نشدن در  شبیه سازها  "برای تست برنامه کد شده حتمآ رو موبایل چک کنید"  

دانلود

----------


## samanbank

سورس خودش که خیلی ضایع هست خخخ

----------


## dasssnj

برای بیشتر برنامه هایی که تست کردم کار نداد .
اونایی هم که کار داد از apktool جلوگیری کرد نه dex2jar .

----------


## saeidpsl

> سورس خودش که خیلی ضایع هست خخخ


چشه ؟......

----------


## saeidpsl

> برای بیشتر برنامه هایی که تست کردم کار نداد .
> اونایی هم که کار داد از apktool جلوگیری کرد نه dex2jar .


درست ولی کلاس های اصلی رو نتونسته استخراج کنه اگه تونسته هم خالی هست ببین میتونی این MyDatabase کلاس رو پیدا کنی یا این رشته   me="asdasd"; ؟؟

----------


## dasssnj

> درست ولی کلاس های اصلی رو نتونسته استخراج کنه اگه تونسته هم خالی هست ببین میتونی این MyDatabase کلاس رو پیدا کنی یا این رشته   me="asdasd"; ؟؟


اینا را گفتی از کجا پیدا کنم؟ کجان؟

----------


## saeidpsl

> اینا را گفتی از کجا پیدا کنم؟ کجان؟


این...........

----------


## saeidpsl

تونستی ؟؟......

----------


## dasssnj

من اصلا کلاس MydataBase را توش پیدا نکردم

راستی دارم یه مبهم کننده می نویسم که کد پس از دیکامپایل اینجوری میشه.
http://uploadboy.com/dxdm4s71bhl4.html

----------


## saeidpsl

> من اصلا کلاس MydataBase را توش پیدا نکردم
> 
> راستی دارم یه مبهم کننده می نویسم که کد پس از دیکامپایل اینجوری میشه.
> http://uploadboy.com/dxdm4s71bhl4.html


خوبه تموم شد بزار چک کنیم :تشویق: 

خوب اون برنامه که گذاشم  کلاس های اصلی  رو غیز قابل استخراج میکرد دیگه کدی هم نشون نمیده مثل کلاس MyDatabase که نتونستی پیدا کنی :چشمک:

----------


## dasssnj

آره برنامه ی خوبیه جالب بود.
ممنون

برنامه ی خودمم که از وقتی شروع کردم فقط مخم داره سوت میکشه فکر کنم ماه ها در گیرش باشم . کم کمش 13000 خط میشه !!!! به این راحتی نمیشه کد بقیه برنامه ها را آنالیز کرد.

----------


## dasssnj

اون برنامه را که دادید  روی گوشی نصب کردم فورس کلوز داد.

----------


## saeidpsl

> اون برنامه را که دادید  روی گوشی نصب کردم فورس کلوز داد.


درست کد نکردی چون برا من به خوبی جواب داد

----------


## saman9074

سلام دوستان من اگه بخوام عکس هایی که گذاشتم تو برنامه ام دیکامپایل نشن باید چی کار کنم؟
دیگه حداقل نشه با وینرار بازش کرد:))
در ضمن اون APKProtect که گذاشتین خطا میده! 
میگه فایل baksmali.jar تو پوشه بین نیست!

----------


## saeidpsl

> سلام دوستان من اگه بخوام عکس هایی که گذاشتم تو برنامه ام دیکامپایل نشن باید چی کار کنم؟
> دیگه حداقل نشه با وینرار بازش کرد:))
> در ضمن اون APKProtect که گذاشتین خطا میده! 
> میگه فایل baksmali.jar تو پوشه بین نیست!


عکس رو نمیشه کاریش کرد
APKProtect هم مشکلی نداره برا من درست جواب داد

----------


## daniel021

چرا این ارور رو میده ؟؟؟     

لطفا راهنمایی کنید...
error1.jpg






> *APK to Java Release Candidate 2*
> توضیحات: 
> از آنجا که من به ساخت نرم افزار های آندرویید امروزه، من از ساخت این ابزار به نجات من فکر می کردم (و شما) زمان. پس شروع کردم به برنامه نویسی آن و آن کار می کرد از خوبی تا کنون. ابزار می تواند APK انتخاب خود را به کد جاوا decompiles، به آموختن از آن، بنابراین به عنوان یک هدف آموزشی. 
> علاوه بر آن نیز می تواند به کد smali decompile و آن را می توانید به منابع از برنامه decompile. این در حال حاضر بتا خیلی زود اما این کار موفقیت (حداقل در کامپیوتر من) 
> نسخه نهایی باید هر برنامه با موفقیت به جاوا / smali / منابع و پروژه گرفتگی تبدیل، من انجام بهترین من آن را به تمام کار ASAP، اگر شما فکر می کنم من چیزی اشتباه در منبع انجام داد و یا می خواهید برای کمک به هر چیزی لطفا اجازه دهید من می دانم! 
> 
> ابزارهای خارجی استفاده می شود (به لطف زیادی به این توسعه دهندگان!): 
> - 7za (ایگور پاولوف) 
> - apktool (و Ryszard Wisniewski، iBotPeaches) 
> ...

----------


## saeidpsl

...........................

----------


## saman9074

> عکس رو نمیشه کاریش کرد
> APKProtect هم مشکلی نداره برا من درست جواب داد


این هم عکس ارور

----------


## daniel021

> اینو دانلود کن کپی تو پوشه tools
> 
> اسم فایل رو بزار "classes-dex2jar.jar"




نشد بازم ارور میده.. ارور classes-dex2jar.jar میده بازم
خودتون ببینید

error2.JPGerror3.JPG

----------


## saeidpsl

..............................

----------


## saeidpsl

> این هم عکس ارور


یه برنامه دیگه چک کن

----------


## samanbank

-------------------------------------------------------------------------

----------


## saeidpsl

> -------------------------------------------------------------------------


برنامه رو بفرست تا چک کنم

----------


## saeidpsl

...................................

----------


## saeidpsl

من اومدم پست های مربوط به Decompile رو پاک کردم حالا جناب آقای *rubiks.kde* اگه میشه این تاپیک رو به تاپیک های اعلان برگردونید مرسی.

----------


## smemamian

اگه یه آموزش ویدیو بذاری خیلی بهتر میشه (کار با *Zelix KlassMaster 5.5* ).

الان من نمونه فایل خودتون رو دریافت کردم ولی توی پروژه اندروید شناسایی نمی کنه :

Capture.JPG

--------------

به علت عدم خواندن کتابخانه jar بود. کافیه Refresh  بزنید اگر نه یک بار اکلیپس رو ببندید*!!!*

----------


## alu0075

> یه برنامه فوق العاده عالی و قوی برای Obfuscation کردن فایل jar
> خوب دوستادن رسیدیم به بخش مهم مهم Obfuscation(مبهم کردن) یک  پسورد یا آدرس سایت... در جاوا با کمک برنامه  *Zelix KlassMaster 5.5* اگه پست بالا رو ببینید متوجه میشید نمونه مبهم شده با  برنامه.
> *روش کار
> *پروژه اول اختصاص میدیم به دیتا یا فقط برای آدرس و پسورد ...چیزای که نمیخواهید کسی بتونه ببینه یه پروژه جاوا درست میکند بعد پکیج مثلا com.me و بعد هم یه کلاس بعد تو کلاس یه رشته مثلا پسورد درست میکنید بعد با فرمت جار  export کنید. مثال
> حالا میریم سراغ برنامه
> برنامه رو ران میکنیم
> فایل جار export شده رو باز میکنیم "Ctrl + O"
> بعد از منو  Tools >Obfuscation  انتحاب کنید "Ctrl + B"
>   حالا  از ComboBox Exclude package qualifiers پکیج مورد نظرتون رو انتخاب کنید  و نکس رو انتخاب کنید این بخش مال تنظیم مبهم کردنه و بعد اوکی حالا همه چی مبهم شد خوب حالا از سطون اول سمت چپ کلاس مورد نظر رو سلکت کنید  بعد سطون دوم معلومه اسم "اسم کلاس"و فیلد "رشته ها و ...."و  متود ... رو با سلکت رو هر کدوم میتونید اسم و مقدارشون رو عوض کنید 
> ...


تلاش شما ( و تیم سازنده ی برنامه ) قابل احترام هست ، اما به یه چیزی فکر نکردید !

وقتی شما بتونید از اون فایل JAR به اون شکل استفاده کنید(com.me.user.a ) بقیه هم میتونن !
پس برای پیدا کردن پسورد ، کافیه اون فایل رو بزاریم تو یه پروژه و بعد بروژه رو اجرا کنیم و با یه Print ساده ، پسورد رو داریم

----------


## saeidpsl

> تلاش شما ( و تیم سازنده ی برنامه ) قابل احترام هست ، اما به یه چیزی فکر نکردید !
> 
> وقتی شما بتونید از اون فایل JAR به اون شکل استفاده کنید(com.me.user.a ) بقیه هم میتونن !
> پس برای پیدا کردن پسورد ، کافیه اون فایل رو بزاریم تو یه پروژه و بعد بروژه رو اجرا کنیم و با یه Print ساده ، پسورد رو داریم


فایل jar رو چه جور از apk خارج میکنی ؟

----------


## saeidpsl

*alu0075* : داش جواب منو بده لطفآ  :متفکر: 

 دوستای عزیز کسی تونسته jar رو از apk خارج کنه؟

----------


## hamedjj

> *alu0075* : داش جواب منو بده لطفآ 
> 
>  دوستای عزیز کسی تونسته jar رو از apk خارج کنه؟


*saeidpsl* جان به alu یه ایمیل میدم بیاد تو تاپیک

----------


## alu0075

سلام ، ببخشید دیر جواب دادم !

تا قبل از ADT 22 این ممکن بود ! ( لینک) ، یعنی دقیقا مثل پوشه ی assets که هیچ تغییری نمیکنه ، پوشه ی libs هم تغییری نمیکرد ! ، اما الان ، تمام محتوای جاوا برنامه ، به دو دسته ی اندروید و پکیج خودتون تقسیم میشه ، پس در واقع jar ها هم به صورت کلاس در میان و وارد پکیج خودتون میشن

این خودش میتونه نگه داری اطلاعات حساس رو با این روش به خطر بنداره ! ، پس میشه تعداد مراحل رو بیشتر کرد ، یعنی متن رو از jar گرفت ، یه سری پردازش روش انجام بدیم و تا به کلید یا url اصلی برسیم

----------


## saeidpsl

> سلام ، ببخشید دیر جواب دادم !
> 
> تا قبل از ADT 22 این ممکن بود ! ( لینک) ، یعنی دقیقا مثل پوشه ی assets که هیچ تغییری نمیکنه ، پوشه ی libs هم تغییری نمیکرد ! ، اما الان ، تمام محتوای جاوا برنامه ، به دو دسته ی اندروید و پکیج خودتون تقسیم میشه ، پس در واقع jar ها هم به صورت کلاس در میان و وارد پکیج خودتون میشن
> 
> این خودش میتونه نگه داری اطلاعات حساس رو با این روش به خطر بنداره ! ، پس میشه تعداد مراحل رو بیشتر کرد ، یعنی متن رو از jar گرفت ، یه سری پردازش روش انجام بدیم و تا به کلید یا url اصلی برسیم



 :متفکر:  آخر من نفهمیدم تونستی یا نه!

----------


## alu0075

> آخر من نفهمیدم تونستی یا نه!


فایل jar سالم رو تو ADT بعد از 22 نمیشه !

----------


## pbm_soy

من امروز یه فایل apk را باز کردم فایلهای layout همگی کد شده بودند!
حتی فایلهای xml در فولدرهای دیگه هم کد شده بود!

با چه برنامه ای اینکار را کرده اند؟
آیا راهی دارد که این فایلها را هم برگرداند؟

----------


## saeidpsl

> من امروز یه فایل apk را باز کردم فایلهای layout همگی کد شده بودند!
> حتی فایلهای xml در فولدرهای دیگه هم کد شده بود!
> 
> با چه برنامه ای اینکار را کرده اند؟
> آیا راهی دارد که این فایلها را هم برگرداند؟


*اینجا Decompile بحث نمیشه دیگه*

----------


## pbm_soy

من خیلی خیلی متاسفم که سوال اشتباه پرسیدم!
محبت کنید و عنوان تاپیک را تغییر دهید تا دوستان دیگر هم مثل من اشتباه نکنند

سوال بنده این بود که چگونه فایلهای xml موجود در پروژه را کد کنم تا در زمان برگرداندن کسی آنرا نتواند بازکند؟ (فکر میکنم مربوط به دیکد نباشد! )
سوال بعدی هم این بود که اگر روشی برای کار بالا وجود دارد آیا راهی هم وجود دارد که دوباره آنها را برگردانند؟ (شاید این سوال مربوط به دیکد باشد، جواب این یکی را ننویسید!)

----------


## saeidpsl

> من خیلی خیلی متاسفم که سوال اشتباه پرسیدم!
> محبت کنید و عنوان تاپیک را تغییر دهید تا دوستان دیگر هم مثل من اشتباه نکنند
> 
> سوال بنده این بود که چگونه فایلهای xml موجود در پروژه را کد کنم تا در زمان برگرداندن کسی آنرا نتواند بازکند؟ (فکر میکنم مربوط به دیکد نباشد! )
> سوال بعدی هم این بود که اگر روشی برای کار بالا وجود دارد آیا راهی هم وجود دارد که دوباره آنها را برگردانند؟ (شاید این سوال مربوط به دیکد باشد، جواب این یکی را ننویسید!)


xml کد هم بشه قابل بازگشته  
برا حفاظت از xml راهی نیست

----------


## badname

> *اینجا Decompile بحث نمیشه دیگه*


به نظرم بحث Decompile اینجا ادامه پیدا میکرد بهتر بود و باعث میشد Anti-Decompile هم زنده بمونه ولی وقتی  Decompile ای در کار نباشه و هیچ اطلاعاتی نباشه ازش ، Anti-Decompile معنایی نداره ... :لبخند:  
از این اشتباهات ( فلیتر ها ) بصورت روزانه به چشم میبینیم ولی چرا درس نمیگیریم نمیدونم .
 با تشکر

----------


## saeidpsl

> به نظرم بحث Decompile اینجا ادامه پیدا میکرد بهتر بود و باعث میشد Anti-Decompile هم زنده بمونه ولی وقتی  Decompile ای در کار نباشه و هیچ اطلاعاتی نباشه ازش ، Anti-Decompile معنایی نداره ... 
> از این اشتباهات ( فلیتر ها ) بصورت روزانه به چشم میبینیم ولی چرا درس نمیگیریم نمیدونم .
>  با تشکر


اره . این تاپیک اول در تاپیک های اعلان قرار داشت ولی مدیر عزیز از تاپیک های اعلان ورداشت ودلیلش هم Decompile بود من اومدم هرچه در  مورد Decompile  پاک کردم ولی فایده نداشت این تاپیک رو  تو تاپیک های اعلان قرار نداد !!
اره حرف درست اول باید مشکل ایجاد بشه تا بشه برطرف کرد بعد لازمه که باهاش چک کنی برنامت امنیت داره یا نه امان از ( فلیتر ها :افسرده:  ) 

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

----------


## esideli

سلام دوستان. آیا این برنامه APKProtec مشکلی برای برنامه درست نمی کنه؟

توی قسمت زیر باید چه مواردی وارد بشه و آیا ضروری هست؟
titled.png
من اومدم از این برنامه استفاده کنم ولی برنامه ارور داد و آنتی ویروس نوشت : Trojan  :متفکر: 

Ued.png

----------


## saeidpsl

NDK C/C++‎‎‎‎‎‎ Encryption/Decryption

----------


## saeidpsl

proguard

_#Use 5 step of optimization
__#-optimizationpasses 5
__
_*-ignorewarnings
** -optimizationpasses* 5

 *-dontusemixedcaseclassnames
**
** -dontskipnonpubliclibraryclasses
**
** -dontpreverify
**
** -verbose
**
** -optimizations* !code/simplification/arithmetic,!field/*,!class/merging/*
 
_#When not preverifing in a case-insensitive filing system, such as Windows. This tool will unpack your processed jars,(if using windows you should then use):
__#-dontusemixedcaseclassnames
__
__#Specifies not to ignore non-public library classes. As of version 4.5, this is the default setting
__#-dontskipnonpubliclibraryclasses
__
__# Optimization is turned off by default. Dex does not like code run
__# through the ProGuard optimize and preverify steps (and performs some
__# of these optimizations on its own).
_*-dontoptimize
**-dontpreverify
**
**-dontwarn* android.support.**

_#Specifies to write out some more information during processing. If the program terminates with an exception, this option will print out the entire stack trace, instead of just the exception message.
_*-verbose
**
*_#The -optimizations option disables some arithmetic simplifications that Dalvik 1.0 and 1.5 can't handle. Note that the Dalvik VM also can't handle aggressive overloading (of static fields).
__#To understand or change this check http://proguard.sourceforge.net/inde...mizations.html
__#-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
__
__# Note that if you want to enable optimization, you cannot just
__# include optimization flags in your own project configuration file;
__# instead you will need to point to the
__# "proguard-android-optimize.txt" file instead of this one from your
__# project.properties file.
__
__#To repackage classes on a single package
__#-repackageclasses ''
__
__#Uncomment if using annotations to keep them.
__#-keepattributes *Annotation*
__
__#Keep classes that are referenced on the AndroidManifest
_*-keep* public class * extends android.app.Activity
*-keep* public class * extends android.app.Application
*-keep* public class * extends android.app.Service
*-keep* public class * extends android.content.BroadcastReceiver
*-keep* public class * extends android.content.ContentProvider
*-keep* public class * extends android.app.backup.BackupAgentHelper
*-keep* public class * extends android.preference.Preference
*-keep* public class com.google.vending.licensing.ILicensingService
*-keep* public class com.android.vending.licensing.ILicensingService
_#Compatibility library
_*-keep* public class * extends android.support.v4.app.Fragment
*-keep* public class * extends android.app.Fragment

_#To maintain custom components names that are used on layouts XML.
__#Uncomment if having any problem with the approach below
__#-keep public class custom.components.package.and.name.**
__
__# keep setters in Views so that animations can still work.
__# see http://proguard.sourceforge.net/manu...les.html#beans
_*-keepclassmembers* public class * extends android.view.View {
*  void set*(***);
**  *** get*();
*}

_#To remove debug logs:
__
__
__
_*-keep* class org.** {* *;* }
*-dontwarn* org.**



*-assumenosideeffects* class android.util.Log {
*public static *** d(...);
**public static *** v(...);
**public static *** i(...);
**public static *** w(...);
**public static *** e(...);
**public static *** wtf(...);
*}

----------


## saeidpsl

کسی اگه چیزی بلده اینجا به اشتراک بزاره حدعقل نظر بدبد  ! :اشتباه:

----------


## saeidpsl

دانلود  *Zelix KlassMaster 8.0.8* یکی از بهترین های مبهم سازی فایل jar و تشگر ویژه از دوست عزیز LittleNightmare به خاطر ارسال فایل.
_توضیحات بیشتر_ در _مورد_ این _برنامه_

----------


## nasr

> یه برنامه فوق العاده عالی و قوی برای Obfuscation کردن فایل jar
> خوب دوستادن رسیدیم به بخش مهم مهم Obfuscation(مبهم کردن) یک  پسورد یا آدرس سایت... در جاوا با کمک برنامه  *Zelix KlassMaster 5.5*  یا  *Zelix KlassMaster 8.0.8*  اگه پست بالا رو ببینید متوجه میشید نمونه مبهم شده با  برنامه.
> *روش کار
> *پروژه اول اختصاص میدیم به دیتا یا فقط برای آدرس و پسورد ...چیزای که نمیخواهید کسی بتونه ببینه یه پروژه جاوا درست میکند بعد پکیج مثلا com.me و بعد هم یه کلاس بعد تو کلاس یه رشته مثلا پسورد درست میکنید بعد با فرمت جار  export کنید. مثال
> حالا میریم سراغ برنامه
> برنامه رو ران میکنیم
> فایل جار export شده رو باز میکنیم "Ctrl + O"
> بعد از منو  Tools >Obfuscation  انتحاب کنید "Ctrl + B"
>   حالا  از ComboBox Exclude package qualifiers پکیج مورد نظرتون رو انتخاب کنید  و نکس رو انتخاب کنید این بخش برای تنظیم مبهم کردنه و بعد اوکی حالا همه چی مبهم شد خوب حالا از سطون اول سمت چپ کلاس مورد نظر رو سلکت کنید  بعد سطون دوم معلومه اسم "اسم کلاس"و فیلد "رشته ها و ...."و  متود ... رو با سلکت رو هر کدوم میتونید اسم و مقدارشون رو عوض کنید 
> ...


سلام
کلاسی که ما ایجاد میکنیم در پروژه پسوند اون .java است . این برنامه پسوند .jar میگیره
چطوری باید تبدیل کنیم به این پسوند

ممنون

----------


## samiasoft

> یه برنامه فوق العاده عالی و قوی برای Obfuscation کردن فایل jar
> خوب دوستادن رسیدیم به بخش مهم مهم Obfuscation(مبهم کردن) یک  پسورد یا آدرس سایت... در جاوا با کمک برنامه  *Zelix KlassMaster 5.5*  یا  *Zelix KlassMaster 8.0.8*  اگه پست بالا رو ببینید متوجه میشید نمونه مبهم شده با  برنامه.
> *روش کار
> *پروژه اول اختصاص میدیم به دیتا یا فقط برای آدرس و پسورد ...چیزای که نمیخواهید کسی بتونه ببینه یه پروژه جاوا درست میکند بعد پکیج مثلا com.me و بعد هم یه کلاس بعد تو کلاس یه رشته مثلا پسورد درست میکنید بعد با فرمت جار  export کنید. مثال
> حالا میریم سراغ برنامه
> برنامه رو ران میکنیم
> فایل جار export شده رو باز میکنیم "Ctrl + O"
> بعد از منو  Tools >Obfuscation  انتحاب کنید "Ctrl + B"
>   حالا  از ComboBox Exclude package qualifiers پکیج مورد نظرتون رو انتخاب کنید  و نکس رو انتخاب کنید این بخش برای تنظیم مبهم کردنه و بعد اوکی حالا همه چی مبهم شد خوب حالا از سطون اول سمت چپ کلاس مورد نظر رو سلکت کنید  بعد سطون دوم معلومه اسم "اسم کلاس"و فیلد "رشته ها و ...."و  متود ... رو با سلکت رو هر کدوم میتونید اسم و مقدارشون رو عوض کنید 
> ...


با تشکر از شما بابت این اموزش اما با اینکه زمان زیادی از این پست میگذره برای حل مشکل مجبور شدم این تاپیک رو بالا بیارم.

من داخل اندروید استودیو یک کلاس ساده ساختم و خروجی jar گرفتم و حالا که در این برنامه لودش میکنم با خطای زیر روبرو میشوم ...به نظرتون برای حل این مشکل چیکار باید کرد ؟








سورس پروژه رو هم ضمیمه کردم

----------

