amirhoseintangsirinet
amirhoseintangsirinet
خواندن ۳ دقیقه·۴ سال پیش

نحوه Decompile فایل های APK

در این محتوا قصد داریم که به چگونگی Decompile فایل های Apk و دسترسی به سورس فایل های اندرویدی بپردازیم

نویسنده: امیرحسین تنگسیری نژاد

امروز قصد داریم بررسی کنیم یک فایل اندرویدی با فرمت رو چطور میشه .Apk به Source-Code آن دسترسی پیدا کرد

فایل ها و ابزار های مورد نیاز:

  • نرم افزار مورد نظرتون
  • ابزار d2j-dex2jar
  • ابزار apktool
  • ابزار JD-GUI

ابتدا به بررسی ساختار فایل های اندرویدی می‌پردازیم؛ دوستان فایل های اندرویدی با فرمت .apk درواقع چیزی نیستند جز یک فایل فشرده شده که شما با تقییر فرمت آن ها به .zip می‌توانید از طریق یک Archive Manger به فایل های درون آن دسترسی پیدا کنید

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

فایل Classes.dex

درواقع تمامی Source-Code در این فایل قرار دارد (برای دسترسی به Source-Code درون این فایل می‌بایست آن را Decompile سازید)

دایرکتوری lib

تمامی Library های برنامه در این دایرکتوری قرار دارد

دایرکتوری res

تمامی Layout ها و مباحث مربوط به UI و دیزاین یک برنامه در این فایل قرار دارد

فایل AndroidManifest.xml

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

شروع عملیات Decompile فایل APK

روش اول (دسترسی به فایل های .smali)

ابتدا سراغ ابزار apktool میرویم و به شکل زیر فایل مورد نظرمان را Decompile می‌سازیم

apktool d FileName.apk

پس از زدن دستور بالا در همان مسیر یک دایرکتوری با نام فایل apk شما ایجاد می‌شود و محتویات Decompile سازی در آن قرار میگیرد

به همین سادگی ما توانستیم فایل Classes.dex را Decompile کنیم و به Source-Code برنامه دسترسی داشته باشیم.

فایل Classes.dex ما الان به دایرکتوری smali تقییر کرده است و اگر نگاهی درون آن بیندازیم میبینیم که چندین فایل با فرمت smali در آن قرار دارد


زبان smali: در واقع smali همان ByteCode های فایل Apk ما می‌باشند

در این قسمت از آموزش ما توانستیم به فایل های smali برنامه دسترسی پیدا کنیم


روش دوم(دسترسی به فایل .jar)

در این قسمت آموزش قصد داریم که به فایل .jar دسترسی پیدا کنیم و بتونیم فایل های جاوا برنامه را بخوانیم

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

d2j-dex2jar FileName.apk FileName.jar

پس از ایجاد شدن فایل jar اگر آن را با یک Archive Manger باز کنیم میبینیم که یک سری فایل Class درون آن وجود دارد که فرق چندانی با فایل های smali در قسمت قبل ندارند و فقد فرمت آن ها تقییر کرده است اما به راحتی این فایل ها قابل بازکردن و خواندن نیستند

محتوایی که شاید بپسندید: برنامه نویسی اندروید در Python | ماژول Kivy

اینجاست که ابزاری پیش روی ما می‌آید تحت عنوان JD-GUI

  • ابتدا این ابزار را اجرا می‌سازیم
  • از Menu بالا این ابزار به قسمت File -> Open می‌رویم

فایل jar انتخاب را اجرا می‌سازیم به این صورت ما با کلیک کردن بر روی هر یک از فایل های class توانایی دسترسی به Source-Code برنامه اندرویدی را پیدا خواهیم کرد

و در آخر نیز اسلایدی کلی از فرایند اجرایی و خوشه ایی نرم افزار های Apk

androidapkاندروید
شاید از این پست‌ها خوشتان بیاید