decompile اپلیکیشن های اندروید

یکی از راه های یادگیری برنامه نویسی، دیدن نمونه کدها است. یادگیری برنامه نویسی اندروید هم از این قانون مستثنی نیست. هرچند که در اینترنت کدهای زیادی برای استفاده و یادگیری وجود دارد اما اکثر این کدها کامل نیستند و تمامی جنبه ها را بررسی نمی کنند. البته دو سایت CodePlex و CodeProject شامل این موضوع نمی شوند.
برای دیدن سورس کد هر برنامه ای شما نیاز به انجام عملیات معکوسی هستید. اگر در هنگام ساخت برنامه، کدهای برنامه که برای شما قابل فهم هست به زبان ماشین کامپایل می شوند، برای دیدن کدها شما نیاز دارید که کدهای قابل فهم برای ماشین را به کدهای قابل فهم برای خودتان تبدیل کنید. یعنی مهندسی معکوس.
برای decompile اپلیکیشن های اندروید ، در ابتدا نیاز به فایل APK برنامه دارید. این فایل را به هر طریقی می توانید به کامپیوتر خود وارد کنید، چه با وصل مستقیم کارت حافظه چه با استفاده از کابل یا شبکه. اما من به شما توصیه می کنم حتما از برنامه رایگان و سورس باز DroidExplorer استفاده کنید. این برنامه علاوه بر کاربردی بودن، با مرور سورس آن جنبه آموزشی بالایی دارد.

روش decompile اپلیکیشن های اندروید

پس از کپی فایل APK، آن را با Winrar یا ۷Zip یا هر برنامه مدیریت فایل های فشرده باز کنید. همانطور که مشاهده می کنید، پوشه هایی با نام پوشه های پروژه ها در Eclipse وجود دارند.
اما مهمترین فایل موجود فایل classes.dex است. تمامی کلاس ها و کدهای جاوای نوشته شده در یک فایل به نام classes.dex تجمیع و تبدیل می شوند. این تبدیل به خاطر این هست که کدبایت جاوا با کدبایت Dalvik که ماشین مجازی اندروید هست، تفاوت دارد. dex کوتاه شده Dalvik Executable است.
مرحله دوم تبدیل dex به کدهای جاوا هست. برای این کار ابتدا برنامه dex2jar را از اینجا دانلود کنید. محتویات این فایل را Extract کنید. سپس Command Prompt را باز کنید و دستورات زیر را وارد کنید:

اگر در لینوکس هستید، به جای dex2jar.bat از dex2jar.sh در کد بالا استفاده کنید.
در مکانی که فایل classes.dex بود، یک فایل classes_dex2jar.jar ایجاد شده است. پس از این مرحله سورس کدها به کدهای جاوا با پسوند jar. تبدیل شده اند. برای مشاهده کدها برنامه رایگان JD-GUI را از اینجا دانلود کنید.
برنامه را باز کنید و فایل تبدیل شده مورد نظر را انتخاب کنید. کلاس های برنامه اولیه را می توانید مشاهده کنید.

4 دیدگاه در “decompile اپلیکیشن های اندروید” ارسال شده است.

  1. سلام
    مطلب خیلی خوبی گذاشتید.

    یه سوال دارم اگه لطف کنین و جواب بدین:
    من یک فایل apk رو میخواستم ویرایش کنم مراحل زیر رو رفتم:
    ۱- فایل apk رو با winrar باز کردم
    ۲- فایل classes.dex رو برداشتم
    ۳- فایل dex رو با برنامه AndroChef Java Decompiler به فایل jar تبدیل کردم
    ۴- فایل jar رو با برنامه winrar باز کردم که داخل آن چندتا فولدر و داخل هرکدام فایل های *.java وجود داشتند
    ۵- فایل مورد نظر خودم رو که با فرمت java بود ویرایش و دوباره با winrar داخل فایل jar برگرداندم

    حالا من میخوام این روال رو برگردم و دوباره فایل apk اولی رو بسازم ولی به مشکل برخوردم یعنی نمیتونم فایل jar ویرایش شده رو به dex تبدیل کنم و در نهایت فایل spk رو دوباره بسازم

    لطفا در صورت امکان راهنمایی کنید
    باتشکر.

  2. سلام. یه سوال داشتم.
    به همین روش که دووستمون گفته من هم عمل کردم متنهی با این تفاوت که :
    ۱٫ فایل apk روو که با winrar باز کردم و فایل dex رو برداشتم، با نه با AndroChef Java Decompiler و نه با DJ java decompiler، با هیچ کدوم نتونستم فایل dex رو دیکامپایل کنم.
    ۲٫ با نرم افزار dex2jar تونستم فایل jar تولید کنم اما فایلش انگار مشکل داره. هرچی سعی می کنم jar رو ازش کلاس های جاوا رو استخراج کنم نمی شه. من با روشی که شما اینجا توضیح دادید هم رفتم باز هم نشد. با jd gui هم امتحان کردم نشد.

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

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *