برنامه ای برای تغییر apk. مبانی ویرایش برنامه های سیستم اندروید (apk). تنظیم بسته های APK و دریافت آنها

APK فرمتی است که در سیستم عامل اندروید برای فایل های برنامه اجرایی بایگانی شده استفاده می شود. به عنوان مثال، آنالوگ در ویندوز .msi، در Symbian - .sis، در لینوکس - .rpm یا .deb است. در این مقاله ما تا حد امکان با جزئیات تمام مسائل مربوط به این فرمت فایل را درک خواهیم کرد.

فرآیند جداسازی، ویرایش و مونتاژ "درست" مهندسی معکوس نامیده می شود. چه چیزی برای این مورد نیاز است؟ ابزارهای زیر مورد نیاز است:

apktool. استفاده از آن با پوسته SmartApktool راحت تر است، همچنین می توانید از فایل های دسته ای آماده استفاده کنید، به عنوان مثال ApktoolBAT.

Notepad ++ - لازم نیست، اما به شدت توصیه می شود.

7zip یا WinRar یا هر برنامه آرشیو دیگری، اما یکی از اینها توصیه می شود.

سیستم عامل Deodexed.

راه های مختلفی برای نصب اپلیکیشن ها در سیستم عامل اندروید وجود دارد. اولین، همچنین اصلی، به طور مستقیم از طریق گوگل پلی(Android Market)، یعنی از یک منبع رسمی، که نیاز به یک حساب Google دارد. بسیاری از برنامه ها پولی هستند، اگر نمی خواهید به دنبال نسخه هک شده در سایت های غیرقانونی بگردید، باید هزینه خرید را پرداخت کنید. اما ما در مورد نحوه انجام این کار صحبت خواهیم کرد. مورد دوم از منابع غیر رسمی به غیر از Google Play است که برای آن باید در تنظیمات گوشی هوشمند یا تبلت خود گزینه "Allow install of apps from nonofficial sources" را فعال کنید و پس از آن فایل نصب APK باید در حافظه نوشته شود. کارت

همچنین امکان نصب برنامه های APK به صورت انبوه وجود دارد. برای انجام این کار، به Astro File Manager - یک مدیر فایل ویژه نیاز دارید. پس از نصب، برنامه ها را جابجا کنید:

از گوشی هوشمند/تبلت: در mntsdcardackupsapp(به عبارت دیگر، کارت حافظه، سپس پوشه پشتیبان، پوشه برنامه)

از رایانه شخصی (فراموش نکنید که اتصال دستگاه Android را در حالت درایو USB ساده فعال کنید): sdcardپشتیبان گیریبرنامه

سپس برنامه مورد نظر را باز کنید، در منوی زمینه"Application Manager" را انتخاب کنید و به تب "Backups" بروید، جایی که "Long click or check the application to install" را انتخاب می کنیم. روی دکمه "نصب" کلیک کنید - همه برنامه ها روی دستگاه شما نصب خواهند شد.

دیدن ساختار یک فایل APK بسیار آسان است. APK مورد نظر را با استفاده از یک برنامه بایگانی، به عنوان مثال، WinRar باز کنید. این چیزی است که در داخل می بینیم:

AndroidManifest.xmlنوعی "گذرنامه" است که آنچه را در برنامه وجود دارد، از جمله: سیستم مورد نیازبه برنامه، ساختار و نسخه آن.

META-INF– پوشه حاوی فایل MANIFEST.MF(تقریباً توسط هر کسی قابل باز شدن است ویرایشگر متن، توصیه می شود از Notepad++ استفاده کنید)، باز شده که می توانید چک جمع ها و مسیرهای داده SHA-1، نسخه استاندارد Manifest-Version، فایل های گواهی RSA یا DSA را مشاهده کنید، فایل SF حاوی مسیرهای منابع مختلف و جمع های بررسی آنها است. به طور کلی، META-INF فایل های فراداده هستند، یعنی داده های مربوط به داده ها.

پاسخ– پوشه ای که حاوی تمام منابع «نرم افزار پر کردن» است که در زیر پوشه ها مرتب شده اند. به عنوان مثال، در پوشه ~drawable~ عناصر گرافیکی برنامه ها (وضعیت های مختلف، نمادها و غیره) وجود دارد، در پوشه layout فایل های XML وجود دارد که قرار دادن عناصر گرافیکی را نشان می دهد. رابط کاربری(GUI).

classes.dex– کد برنامه ای که توسط ماشین مجازی Dalvik VM اجرا می شود. به یاد بیاورید که سیستم عامل اندروید ترکیبی از هسته لینوکس با ماشین مجازی جاوا است.

منابع.arsc– فایل XML کامپایل شده این شامل داده هایی در مورد تمام منابعی است که توسط برنامه استفاده می شود.

دارایی های– پوشه ای که حاوی منابع مختلفی نیز می باشد ممکن است اصلاً در APK نباشد.

lib- پوشه ای که حاوی "libs" یا به عبارت ساده تر، کتابخانه های بومی است، اگر برنامه با استفاده از NDK نوشته شده باشد، به عنوان مثال با عناصر در C++. این فهرست ممکن است در APK نباشد.

com- ممکن است در APK نباشد.

org- ممکن است در APK نباشد.

udk- ممکن است در APK نباشد.

ما به محتویات برنامه APK پرداختیم، اکنون اجازه دهید به جداسازی دقیق آن برویم. برای دیکامپایل به Apktool و Java و همچنین خود فایل APK نیاز دارید. توصیه می شود Apktool در یک فهرست بازگشایی شود ج:پنجره ها(این ضروری نیست، اما راحت تر خواهد بود. چرا - کمی پایین تر بخوانید).

برای راه اندازی Apktool، باید وارد منوی "Run" رایانه خود شوید. در ویندوز XP کلیک کنید شروع -> اجرا، در ویندوز 7: Task Manager ( Ctrl+Alt+دل)، در بالای منوی کشویی فایل -> وظیفه جدید (اجرا...)، یا به سادگی آن را با یک میانبر صفحه کلید فراخوانی کنید Win+R.

صدا زدن خط فرمان- ما نوشتیم cmd، پس از آن Apktool - write را راه اندازی می کنیم apktool(برای این منظور لازم بود آن را در پوشه WINDOWS). علاوه بر این، تمام کنترل ها از طریق خط فرمان با استفاده از پارامترها انجام می شود.

اگر نمی خواهید با وارد کردن مداوم دستورات متنی خود را خسته کنید، می توانید استفاده کنید رابط کاربری گرافیکی– به عنوان مثال، SmartApkTool ذکر شده. SmartApkTool.exe را راه اندازی کنید، سپس برنامه APK مورد نظر را در تب Unpack/Pack انتخاب کنید (مهم است که نام فایل حاوی فاصله، سیریلیک، کاراکترهای خاص و علائم نقطه گذاری نباشد).

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

APK همچنین می تواند بومی سازی شود. قبل از شروع این کار، Notepad ++ از پیش نصب شده را راه اندازی کرده و آن را به صورت زیر پیکربندی می کنیم. افتتاح تنظیمات -> پیکربندی -> سند جدید.

پس از این مراحل، پوشه برنامه بدون بسته (دکامپایل) را باز کنید Res/ارزش های.

همه محلی سازی ها اغلب در فایل قرار دارند رشته های.xml، اما گاهی اوقات ممکن است برخی از آنها در آن گنجانده شوند آرایه هاxml. این فایل ها را کپی کرده و در یک پوشه ایجاد کنید پاسخپوشه ارزش های-ruو آنها را در آن قرار دهید.

حالا می توانید باز کنید رشته های.xmlبا استفاده از Notepad++، ترجمه را انجام دهید و فایل تغییر یافته را ذخیره کنید.

در پرونده AndroidManifest.xmlمی توانید محل نصب برنامه های APK را مشخص کنید. توجه، این فقط مربوط به اندروید نسخه 2.2 و جدیدتر است. بنابراین، فایل مشخص شده را با استفاده از Notepad++ باز کنید. تقریباً در همان ابتدا می توانید پارامتر را مشاهده کنید:

در اینجا می توانید گزینه های زیر را (بعد از علامت "=") مشخص کنید:

فقط داخلی- برنامه فقط در نصب خواهد شد حافظه داخلیدستگاه ها

خودکار– امکان نصب برنامه در حافظه داخلی یا کارت حافظه را در اختیار کاربر قرار می دهد

ترجیح خارجی– برنامه روی کارت حافظه نصب خواهد شد. باید در نظر داشت که همه برنامه ها در صورت نصب روی درایو خارجی به درستی کار نمی کنند یا اصلا کار نمی کنند. این شامل:

خدمات- یعنی خدمات

خدمات آلارم– خدماتی که از زمان استفاده می کنند، مانند ساعت زنگ دار

موتورهای روش ورودی- برنامه های ورودی، از جمله صفحه کلیدهای مختلف

تصاویر پس زمینه زنده- تصویر زمینه متحرک "زنده".

زندهپوشه ها- به ترتیب، دایرکتوری های متحرک

برنامهابزارک ها– ویجت های مختلف

حسابمدیران- مدیران حساب های مختلف، از جمله مشتریان ICQ، مشتریان برای شبکه های اجتماعیو غیره

همگام سازی آداپتورها- برنامه هایی که نیاز به همگام سازی مداوم دارند

دستگاهمدیران- برنامه هایی که برای مدیریت استفاده می شوند

حفاظت از کپی- برنامه هایی که از کپی محافظت می شوند.

در اپلیکیشن می‌توانید آیکون‌ها و عناصر گرافیکی مختلف رابط کاربری را ویرایش و جایگزین کنید. برای انجام این کار، پوشه را باز کنید پاسخدر پوشه با برنامه APK دیکامپایل شده، در اینجا می توانید پوشه ها را مشاهده کنید:

drawable-hdpi

drawable-ldpi

این پوشه ها شامل تمام آیکون ها و سایر عناصر گرافیکی برنامه هستند. حرف قبل از "dpi" به ترتیب به معنای اندازه عناصر گرافیکی است:

hdpi -نقاط با تراکم بالا در هر اینچ، اندازه 72x72 پیکسل

mdpi -میانگین تراکم نقاط در اینچ، اندازه 48x48 پیکسل

لdpi -تراکم نقاط کم در هر اینچ، اندازه 36x36 پیکسل

برای تغییر، به عنوان مثال، نماد برنامه، فایل را باز کنید AndroidManifest.xmlبا استفاده از برنامه Notepad++، به دنبال خطی باشید که نماد در آن نشان داده شده است، به نام دقیق آن نگاه کنید (توجه داشته باشید که پسوند فایل نوشته نشده است، فقط نام فایل).

پوشه مربوطه را باز کنید قابل کشیدن-*dpi،ویرایش شده را بچسبانید یا نماد جدیدفراموش نکنید که عنوان اصلی را دوباره چک کنید AndroidManifest.xml. تصویر باید با فرمت png. باشد و دقیقاً همان تراکم پیکسلی فایل منبع باشد، به عنوان مثال برای hdpi 72x72 پیکسل است.

اگر می خواهید نام نماد را با نام خود جایگزین کنید، عکس را با نام فایل مورد نظر در آن ذخیره کنید قابل کشیدن-*dpi، پس از آن دقیقاً همان نام را در نشان می دهیم AndroidManifest.xml(مثلا android:icon="@drawable/تست"). به همین ترتیب، می توانید هر عنصر گرافیکی دیگری را تغییر دهید، اما الزامات یکسان است - پسوند باید png. باشد و تراکم نقاط در هر اینچ با فایل منبع یکسان است.

در برنامه بدون بسته بندی، می توانید دوبار بررسی کنید که چه حقوقی دارد. اگر APK از یک منبع ناشناس نصب شده باشد، مفید است، و برای جلوگیری از موقعیتی که یک چراغ قوه یا یک تقویم زیبا به طور ناگهانی شروع به ارسال پیام های SMS پولی به شماره ناشناخته. افتتاح AndroidManifest.xml Notepad++ را برنامه ریزی کنید و به دنبال خطوط مربوطه بگردید. برای ارسال پیام های متنیبه عنوان مثال، پارامتر پاسخ می دهد ارسال پیامک. می‌توانید در مورد تمام حقوقی که ممکن است برای یک برنامه در دسترس باشد بیشتر بخوانید.

برنامه های APK نصب شده را می توان از سیستم استخراج کرد. این را از راه های گوناگون می توان انجام داد. ابتدا می توانید Astro File Manager را نصب کنید. برنامه را باز کنید، سپس "Application Manager" را از منوی زمینه انتخاب کنید. به دنبال درخواست مورد نیاز، آن را با یک علامت علامت بزنید و یک نسخه پشتیبان تهیه کنید. پس از پردازش، برنامه انتخاب شده در مسیر زیر قرار خواهد گرفت:

mntsdcardackupsapp

sdcardackupsapp

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

پشتیبان گیری خودکار mntsdcardRootUnistaller(هنگامی که مستقیماً از دستگاه Android مشاهده می شود)

پشتیبان گیری خودکار sdcardRootUnistaller(وقتی از طریق رایانه مشاهده می شود، در حالی که دستگاه Android به عنوان یک درایو USB متصل است).

راه دیگر استفاده از Root Browser Lite است، البته برای این کار به حقوق ریشه نیاز دارید. افتتاح این نرم افزار، مسیر را دنبال می کنیم:

سیستمبرنامه(اگر به برنامه های سیستمی علاقه دارید).

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

همچنین می‌توانید برنامه‌های APK مورد علاقه خود را از Google Play (مارکت اندروید) مستقیماً در آن دانلود کنید کامپیوتر شخصی. برای این کار به مرورگر نیاز خواهید داشت گوگل کروم(نسخه کمتر از 17) و افزونه آن است APK Downloader. پس از دانلود و نصب افزونه مشخص شده، یک کپی از میانبر ایجاد کنید مرورگر گوگلکروم، جایی که خط زیر را بعد از فاصله می نویسیم:

-نادیده گرفتن-گواهی-خطاها

با مسیر نصب استاندارد مرورگر، خط باید به شکل زیر باشد:

"C:Program FilesGoogleChromeApplicationchrome.exe" -ignore-certificate-errors

پس از این، در شماره گیر تلفن هوشمند وارد کنید:

*#*#8255#*#*

شناسه دستگاه را که از 16 کاراکتر تشکیل شده است، بازنویسی می کنیم. Google Chrome را با استفاده از میانبر ایجاد شده با پارامتر مشخص شده باز کنید -نادیده گرفتن-گواهی-خطاها، بریم به Tools -> Extensions(همچنین می توانید «chrome://settings/extensions» را در نوار آدرس وارد کنید)، تنظیمات افزونه APK Downloader را باز کنید. در گزینه ها آدرس ایمیل و رمز عبور خود را وارد کنید حساب Google و همچنین شناسه دستگاه حاصل. اکنون به Google Play (Android Market) بروید، صفحه را با آن باز کنید اپلیکیشن مورد نظر، منتظر بارگذاری کامل آن هستیم. نماد APK Downloader ظاهر می شود - پس از کلیک بر روی آن، برنامه در رایانه شما دانلود می شود.

Apk editor pro، که می توانید آن را برای اندروید در وب سایت ما دانلود کنید، به شما این امکان را می دهد که محتوای فایل های هر برنامه ای را هک یا تغییر دهید. دستگاه های تلفن همراهو آن را به دلخواه شخصی سازی کنید.

ویژگی های خاص

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

این ابزار چه کاری می تواند انجام دهد؟

  1. تغییر (ترجمه) نام سایر برنامه ها.
  2. طرح‌بندی‌های معماری، رنگ‌ها، قالب‌های تنظیمات گرافیکی (به عنوان مثال، اندازه نماد) را تغییر دهید.
  3. تغییر طراحی صدا، فایل های رسانه ای.
  4. تبلیغات را حذف کنید
  5. دور زدن مسدود کردن محتوای پولی
  6. یک برنامه را از حافظه داخلی دستگاه به کارت SD منتقل کنید.
  7. تغییر وضوح و خیلی بیشتر.

برای درک نحوه استفاده از ابزار، باید apk editor pro را دانلود کنید و به منو بروید. سپس یکی را انتخاب کنید برنامه نصب شدهدر اندروید یا فایل apk آن. پس از این، داده های پیش فرض باز می شوند که کاربر می تواند آنها را تغییر دهد:

  • ویرایش منابع؛
  • جایگزین کردن فایل ها؛
  • ویرایش کلی؛
  • ویرایش داده ها

برنامه نصب نسخه اصلاح شده را پیشنهاد می کند. این در همه موارد کار نمی کند، بنابراین نسخه قدیمیباید به صورت دستی حذف شود و یک مورد جدید نصب شود. پس از حذف باید پوشه apk editor را از بین برنامه های اندروید انتخاب کنید (برای راحتی کار می توانید از ES Explorer استفاده کنید) و فایل برنامه تغییر یافته را پیدا کرده و روی دستگاه نصب کنید.

این برنامه دارای یک رابط کاربر پسند است. ناوبری بسیار ساده است، اما کاربر برای درک آن نیاز به دانش اولیه زبان انگلیسی دارد.

مزایا و معایب

  1. این برنامه طیف گسترده ای از گزینه ها را برای شخصی سازی برنامه ها در اختیار کاربر قرار می دهد.
  2. منو شامل بخش Help است که به سادگی و با جزئیات تعداد زیادی از قابلیت های برنامه ویرایشگر را توضیح می دهد. بنابراین، کاربرانی که از برنامه نویسی دور هستند، نیازی به جستجوی مثال ها و دستورالعمل های ویرایش در منابع شخص ثالث ندارند.
  3. شما می توانید این برنامه را به صورت رایگان در وب سایت ما دانلود کنید.

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

ویرایشگر - کافی است ابزار مفیدبرای کسانی که با رابط کاربری نامناسب (نداشتن زبان روسی، تبلیغات مداوم، بنرها و غیره) مواجه هستند. اگر قبلا از این برنامه استفاده کرده اید، نظرات خود را در زیر در نظرات به اشتراک بگذارید.

از این مقاله یاد خواهید گرفت که برنامه اندروید از چه چیزی تشکیل شده است، چگونه یک فایل APK را باز کنید و با چه برنامه هایی.

فایل APK چیست؟

APK - فرمت عامل سیستم های اندروید، برای فایل های برنامه اجرایی بایگانی شده استفاده می شود و نام خود فایل می تواند هر چیزی باشد، اما پسوند فقط باید شبیه this.apk باشد. آنالوگ های APK در سایر سیستم عامل ها .msi در ویندوز، .sis در سیمبین، .rpm یا .deb در لینوکس هستند.

ببینیم داخلش چیه
در واقع، apk. یک آرشیو ZIP است، بنابراین می‌توانید با استفاده از هر کدام به ساختار داخلی نگاه کنید مدیر فایلیا یک بایگانی کننده مانند WinRAR یا برنامه موبایل X-plore.





شایان ذکر است که شما فقط به منابع داخلی دسترسی بصری دارید.
بیایید به ساختار نگاه کنیم
در داخل apk. تعدادی فایل و پوشه می بینیم، بیایید دریابیم که آنها برای چیست:
  • AndroidManifest.xml نوعی "گذرنامه" برنامه است که از آن می توانید تمام نکات اصلی، الزامات، نسخه، مجوزها و غیره را دریابید.
  • META-INF این فایل حاوی ابرداده است، یعنی داده‌های مربوط به داده‌ها، جمع‌های چک، مسیرهای داده‌ها، مسیرها و جمع‌های چک منابع، گواهی‌ها. شما می توانید این فایل را با هر ویرایشگر متنی باز کنید، اما توصیه می شود از Notepad++ استفاده کنید.
  • پوشه res شامل تمام منابع برنامه، گرافیک، مانند نمادها، تصاویر، متن و عناصر رابط گرافیکی است. همچنین می توانید به راحتی به پوشه دسترسی داشته باشید.
  • classes.dex کد برنامه مستقیمی است که توسط ماشین مجازی Dalvik VM اجرا شده است. resources.arsc - فایل XML کامپایل شده، این فایل حاوی اطلاعات مربوط به تمام منابع درگیر در برنامه است.
  • lib - پوشه ای با کتابخانه های بومی، که منابع آن تنها با استفاده از برنامه های تخصصی قابل دسترسی است. APK همچنین ممکن است حاوی فایل‌ها و پوشه‌هایی مانند com، org، udk باشد، اما نه همیشه.

حال بیایید ساختار داخلی را با جزئیات بیشتری بررسی کنیم برای این کار ما به یک برنامه کامپایل، جاوا و یک فایل APK نیاز داریم. ابزار اصلی برای جداسازی apk. Apktool است، اما این برنامهاین فقط از یک خط کار می کند که خیلی راحت نیست. برای تجزیه و تحلیل سریعتر و راحت تر، می توانید از APKing استفاده کنید، این هنوز همان Apktool است، اما با قابلیت کار از منوی زمینه.
و بنابراین APKing را مانند هر برنامه ای برای ویندوز نصب می کنیم و با انتخاب apk. روی آن با دکمه سمت راست ماوس و همزمان Shift کلیک می کنیم و پس از آن موارد زیر را مشاهده می کنیم:


و انتخاب کنید اقدام لازمبه عنوان مثال، به طور کامل دیکامپایل کنید، سپس برنامه عملیات را کامل کرده و یک پوشه با همین نام ایجاد می کند.


با باز کردن پوشه به تمام منابع فایل APK دسترسی خواهیم داشت.


خودشه فایل های متنیقابل ویرایش است، ضمن رعایت قوانین اساسی، می توانید از برنامه محبوب Notepad++ استفاده کنید، برای مثال AndroidManifest.xml را در نظر بگیرید.

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

این بار به طور مفصل در مورد جایگزینی اجزای سیستم سیستم عامل اندروید با استفاده از مثال نصب اصلاح نوار وضعیت صحبت خواهم کرد.

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

ما نیاز خواهیم داشت:

  • یک مدیر فایل که می تواند با حقوق ریشه و مجوزهای فایل کار کند. Root Explorer بهترین است (شما آن را خریدید، درست است؟)
  • خود فایل اصلاح شده که می خواهیم به جای سیستم یک قرار دهیم (لینک انتهای مقاله).

اکنون از یکی از توابع راحت Root Explorer استفاده می کنیم. بیایید یک ضربه طولانی روی فایل مورد نظر بزنیم تا منوی زمینه ظاهر شود

و روی مورد کلیک کنید " این فایل را زیپ کنید"برای ذخیره فایل در یک آرشیو فشرده روی کارت SD. پس از بایگانی، پیام زیر را دریافت خواهیم کرد:

دکمه را فشار دهید " اقامت کردنبرای ماندن در پوشه و انجام یک کار دیگر.

اکنون همه چیز برای جایگزینی فایل آماده است.
قبلاً در مورد حقوق دسترسی هر فایل صحبت کرده ام. برای ایجاد مجدد آنها در یک فایل جدید، ابتدا باید آنها را از فایل قبلی نگاه کنید. آنها با یک سری نماد "rwxrwxrwx" نشان داده می شوند. سه گانه 1 - حقوق مالک، 2 - گروه های مالک، 3 - همه کاربران دیگر. فایل ما دارای مجوزهای "rw-r--r--" است.

اکنون به کارت SD بروید، فایل اصلاح شده را در آنجا پیدا کنید و از منوی زمینه آن مورد را انتخاب کنید " کپی 🀄"، اما برای انتخاب پوشه "/system/app" بلافاصله عجله نکنید، زیرا بلافاصله به سیستم آسیب می‌رسانیم. در عوض، فایل را در یک پوشه مخصوص فایل‌های موقت "/data/local/tmp" کپی کنید تا فایل را به فرمی که سیستم می گیرد.
ابتدا با منوی زمینه فایل تماس بگیرید و " را انتخاب کنید تغییر نام دهید" و نام فایل "SystemUI.apk" را وارد کنید. درست است، زیرا در لینوکس حروف در نام مهم هستند، یعنی "systemui.apk" و "SystemUI.apk" فایل های متفاوتی هستند.
در مرحله بعد، باید مجوزهای فایل را تغییر دهید، زیرا اکنون تقریباً مطمئناً آنها اشتباه تنظیم شده اند. برای انجام این کار، دوباره منوی زمینه فایل را با یک ضربه طولانی فراخوانی کنید و مورد را انتخاب کنید " مجوزهابرای مقدار ما "rw-r--r--" چک باکس ها باید به این صورت قرار بگیرند:

کلیک " خوب"و دوباره منوی زمینه را فراخوانی کنید. اکنون باید مالک و گروه این برنامه را تغییر دهید. برای انجام این کار، مورد را انتخاب کنید " تغییر مالکیتپنجره ای با اطلاعات مالک فعلی فایل ظاهر می شود.
در اینجا باید یک انحراف کوچک انجام دهیم.
در پوشه "/system/app"، همه فایل ها متعلق به کاربر "root" (uid=0) و گروه "root" (gid=0) و در پوشه "/system/framework" کاربر است. system" (gid=1000) متعلق است. و گروه "system" (gid=1000).
بر اساس موارد فوق، مقادیر مورد نیاز را تنظیم کنید و روی "کلیک کنید" خوب".
و برای بار سوم، منوی زمینه فایل را فراخوانی کنید و مورد را انتخاب کنید " کپی 🀄"و در گفتگوی کپی به پوشه "/system/app" بروید. اکنون با خیال راحت روی " کلیک کنید چسباندن"و با دقت بیشتر بخوانید.
تقریباً بلافاصله، سیستم به شما اطلاع می دهد که فرآیند نوار وضعیت به طور ناگهانی به پایان رسیده است و شروع به آن را پیشنهاد می کند. همه تلاش ها ناموفق خواهد بود. بین ظاهر پنجره ها، باید برای انجام تعدادی از اقدامات وقت داشته باشید. قبل از فشار دادن دکمه، باید منو را فراخوانی کنید تا دستگاه را خاموش کنید. اکنون باید انگشت خود را تقریباً در سمت چپ دکمه قرار دهید. اکنون باید خیلی سریع سه بار انگشت خود را کلیک کنید تا زمان برای بستن اخطار داشته باشید، گزینه shutdown را انتخاب کنید و نیت خود را تأیید کنید.
حالا منتظر می مانیم تا گوشی خاموش شود، آن را ریستارت کنیم و از نتیجه لذت ببریم یا از آن لذت نبریم و به دنبال خطا باشیم.

گاهی اوقات برخی از اپلیکیشن ها در اندروید به نوعی مناسب کاربر نیستند. یک مثال تبلیغات سرزده است. و همچنین اتفاق می افتد که برنامه برای همه خوب است، اما ترجمه در آن یا کج است یا کاملاً وجود ندارد. یا مثلا برنامه آزمایشی است ولی راهی برای دریافت نسخه کامل وجود ندارد. چگونه شرایط را تغییر دهیم؟

معرفی

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

برای انجام همه این کارها، حداقل به دانش اولیه زبان جاوا، که برنامه های اندروید با آن نوشته می شوند، و زبان XML که در همه جای اندروید استفاده می شود - از توصیف خود برنامه و حقوق دسترسی آن گرفته تا ذخیره رشته ها نیاز دارید. روی صفحه نمایش داده خواهد شد. همچنین به توانایی استفاده از نرم افزارهای تخصصی کنسول نیاز خواهید داشت.

بنابراین، یک بسته APK چیست که در آن کاملاً تمام نرم افزارهای اندرویدی توزیع شده است؟

حذف کامپایل برنامه

در این مقاله ما فقط با کدهای برنامه جدا شده کار کردیم، اما اگر تغییرات جدی تری در برنامه های بزرگ ایجاد شود، درک کد smali بسیار دشوارتر خواهد شد. خوشبختانه، می‌توانیم کد dex را به کد جاوا تبدیل کنیم، که اگرچه اصلی نیست و کامپایل نشده است، اما خواندن و درک منطق برنامه بسیار آسان‌تر است. برای این کار به دو ابزار نیاز داریم:

  • dex2jar یک مترجم بایت کد Dalvik به بایت کد JVM است که بر اساس آن می توانیم کدهایی را در زبان جاوا بدست آوریم.
  • jd-gui خود یک دیکامپایلر است که به شما امکان می دهد کد جاوا قابل خواندن را از بایت کد JVM دریافت کنید. به عنوان جایگزین، می توانید از Jad (www.varaneckas.com/jad) استفاده کنید. اگرچه بسیار قدیمی است، اما در برخی موارد کد خواناتری نسبت به Jd-gui تولید می کند.

اینگونه باید از آنها استفاده کرد. ابتدا dex2jar را راه اندازی می کنیم و مسیر بسته apk را به عنوان آرگومان مشخص می کنیم:

% dex2jar.sh mail.apk

در نتیجه، بسته جاوا mail.jar در دایرکتوری فعلی ظاهر می‌شود که می‌توان آن را در jd-gui برای مشاهده کد جاوا باز کرد.

تنظیم بسته های APK و دریافت آنها

کیسه پلاستیکی برنامه های اندرویددر واقع یک فایل ZIP معمولی است که برای مشاهده محتویات و استخراج آن به ابزار خاصی نیاز نیست. کافی است یک آرشیو داشته باشید - 7zip برای ویندوز یا کنسول unzip در لینوکس. اما این در مورد لفاف است. داخلش چیه؟ به طور کلی، ساختار زیر را در داخل داریم:

  • META-INF/- حاوی یک گواهی دیجیتال از برنامه، شناسایی سازنده آن، و چک جمع فایل های بسته.
  • res/ - منابع مختلفی که برنامه در کار خود از آنها استفاده می کند، مانند تصاویر، توضیحات توضیحی رابط، و همچنین داده های دیگر.
  • AndroidManifest.xml- شرح برنامه این شامل، برای مثال، لیستی از مجوزهای مورد نیاز، مورد نیاز است نسخه اندرویدو مجوز مورد نیازصفحه نمایش؛
  • classes.dex- بایت کد برنامه کامپایل شده برای ماشین مجازیدالویک؛
  • منابع.arsc- همچنین منابع، اما از نوع متفاوت - به ویژه، رشته ها (بله، این فایل را می توان برای Russification استفاده کرد!).

فایل‌ها و دایرکتوری‌های فهرست‌شده، اگر نه در همه، شاید در اکثریت قریب به اتفاق فایل‌های APK هستند. با این حال، چند فایل/دایرکتوری نه چندان رایج دیگر وجود دارد که ارزش ذکر کردن را دارند:

  • دارایی های- آنالوگ منابع تفاوت اصلی این است که برای دسترسی به یک منبع باید شناسه آن را بدانید، اما لیست دارایی ها را می توان به صورت پویا با استفاده از متد AssetManager.list() در کد برنامه به دست آورد.
  • lib- کتابخانه های لینوکس بومی که با استفاده از NDK (Native Development Kit) نوشته شده اند.

این دایرکتوری توسط تولیدکنندگان بازی که موتور بازی نوشته شده با C/C++ را در آنجا قرار می دهند و همچنین سازندگان برنامه های کاربردی با کارایی بالا (مثلاً Google Chrome) استفاده می شود. ما دستگاه را کشف کردیم. اما چگونه می توان فایل پکیج اپلیکیشن مورد نظر خود را دریافت کرد؟ از آنجایی که دریافت فایل‌های APK از دستگاه بدون روت امکان‌پذیر نیست (آنها در فهرست /data/app قرار دارند)، و روت کردن همیشه توصیه نمی‌شود، حداقل سه راه برای دریافت فایل برنامه به رایانه شما وجود دارد:

  • پسوند APK Downloader برای کروم.
  • برنامه واقعی APK Leecher.
  • میزبانی فایل های مختلف و Varezniks.

استفاده از کدام یک موضوع سلیقه ای است. ما ترجیح می دهیم از برنامه های جداگانه استفاده کنیم، بنابراین استفاده از Real APK Leecher را شرح خواهیم داد، به خصوص که در جاوا نوشته شده است و بر این اساس، در ویندوز یا Nix کار می کند.

پس از شروع برنامه، باید سه قسمت ایمیل، رمز عبور و شناسه دستگاه را پر کنید و یک زبان را انتخاب کنید. دو مورد اول ایمیل و رمز عبور حساب Google شما هستند که در دستگاه استفاده می کنید. سومین شناسه دستگاه است و با تایپ کد روی شماره گیر قابل دریافت است # #8255## و سپس خط Device ID را پیدا کنید. هنگام پر کردن، فقط باید شناسه را بدون پیشوند android- وارد کنید.

پس از پر کردن و ذخیره کردن، اغلب پیام "خطا هنگام اتصال به سرور" ظاهر می شود. هیچ ربطی به Google Play ندارد، بنابراین با خیال راحت آن را نادیده بگیرید و به دنبال بسته های مورد علاقه خود بگردید.

مشاهده و اصلاح کنید

فرض کنید بسته‌ای را پیدا کرده‌اید که مورد علاقه‌تان است، آن را دانلود کرده‌اید، بسته‌بندی آن را باز کرده‌اید... و وقتی سعی کردید برخی از فایل‌های XML را مشاهده کنید، از اینکه متوجه شدید که فایل متنی نیست، متعجب شدید. چگونه آن را دیکامپایل کنیم و به طور کلی چگونه با بسته ها کار کنیم؟ آیا نصب SDK واقعا ضروری است؟ خیر اصلا نیازی به نصب SDK نیست. در واقع، تمام مراحل استخراج، اصلاح و بسته بندی بسته های APK به ابزارهای زیر نیاز دارد:

  • بایگانی ZIPبرای باز کردن و بسته بندی؛
  • کوچک- دستگاه مجازی Dalvik بایت کد اسمبلر/جداساز (code.google.com/p/smali)؛
  • aapt- ابزاری برای بسته بندی منابع (به طور پیش فرض، منابع به شکل باینری برای بهینه سازی عملکرد برنامه ذخیره می شوند). در Android SDK گنجانده شده است، اما می توان آن را به طور جداگانه دریافت کرد.
  • امضاکننده- ابزار برای امضای دیجیتالیبسته اصلاح شده (bit.ly/Rmrv4M).

می توانید از همه این ابزارها به طور جداگانه استفاده کنید، اما این کار ناخوشایند است، بنابراین بهتر است از نرم افزارهای سطح بالاتری که بر اساس آنها ساخته شده است استفاده کنید. اگر روی لینوکس یا Mac OS X کار می کنید، ابزاری به نام apktool وجود دارد. این به شما امکان می دهد منابع را به شکل اصلی خود باز کنید (از جمله فایل های XML باینری و arsc)، بسته ای را با منابع تغییر یافته بازسازی کنید، اما نمی داند چگونه بسته ها را امضا کند، بنابراین باید ابزار امضا کننده را به صورت دستی اجرا کنید. با وجود این واقعیت که ابزار به زبان جاوا نوشته شده است، نصب آن کاملا غیر استاندارد است. ابتدا باید خود فایل jar را دریافت کنید:

$ cd /tmp $ wget http://bit.ly/WC3OCz $ tar -xjf apktool1.5.1.tar.bz2

$ wget http://bit.ly/WRjEc7 $ tar -xjf apktool-install-linux-r05-ibot.tar.bz2

$ mv apktool.jar ~/bin $ mv apktool-install-linux-r05-ibot/* ~/bin $ export PATH=~/bin:$PATH

اگر روی ویندوز کار می کنید، پس یک ابزار عالی برای آن به نام Virtuous Ten Studio وجود دارد که تمام این ابزارها (از جمله خود apktool) را نیز جمع آوری می کند، اما به جای یک رابط CLI، یک رابط گرافیکی بصری در اختیار کاربر قرار می دهد که با آن می توانید عملیات باز کردن، جداسازی و کامپایل کردن را با چند کلیک انجام دهید. این ابزار Donation-ware است، یعنی گاهی اوقات ویندوز ظاهر می شود که از شما مجوز دریافت می کند، اما در نهایت می توان این را تحمل کرد. هیچ فایده ای در توصیف آن وجود ندارد، زیرا می توانید در عرض چند دقیقه رابط کاربری را درک کنید. اما apktool به دلیل کنسولی بودنش باید بیشتر مورد بحث قرار گیرد.


بیایید به گزینه های apktool نگاه کنیم. به طور خلاصه، سه دستور اصلی وجود دارد: d (decode)، b (build) و if (install frame). اگر همه چیز با دو دستور اول روشن است، پس عبارت شرطی سوم چه کاری انجام می دهد؟ چارچوب مشخص شده UI را باز می کند، که در مواردی که هر بسته سیستمی را تجزیه می کنید، ضروری است.

بیایید به جالب ترین گزینه های دستور اول نگاه کنیم:

  • -s- فایل های dex را از هم جدا نکنید.
  • -r- منابع را باز نکنید.
  • - وارد نکنید اشکال زدایی اطلاعاتبه نتایج جداسازی فایل dex؛
  • ---فریم مسیر- از چارچوب UI مشخص شده به جای فریمورک ساخته شده در apktool استفاده کنید. حالا بیایید به چند گزینه برای دستور b نگاه کنیم:
  • - مونتاژ اجباری بدون بررسی تغییرات؛
  • - اگر به دلایلی می خواهید از منبع دیگری استفاده کنید، مسیر aapt (ابزاری برای ساختن بایگانی APK) را مشخص کنید.

استفاده از apktool برای انجام این کار بسیار ساده است، برای مثال کافی است یکی از دستورات و مسیر APK را مشخص کنید.

$ apktool d mail.apk

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

آماده سازی. غیرفعال کردن تبلیغات

البته تئوری خوب است، اما اگر نمی‌دانیم با بسته‌های بسته‌بندی نشده چه کنیم، چرا به آن نیاز است؟ بیایید سعی کنیم تئوری را به نفع خود اعمال کنیم، یعنی برخی از نرم افزارها را اصلاح کنیم تا تبلیغات را به ما نشان ندهد. به عنوان مثال، اجازه دهید مشعل مجازی باشد - یک مشعل مجازی. این نرم افزار برای ما ایده آل است، زیرا با تبلیغات مزاحم پر شده است و علاوه بر این، به اندازه کافی ساده است که در جنگل کد گم نشوید.


پس با استفاده از یکی از روش های بالا اپلیکیشن را از بازار دانلود کنید. اگر تصمیم دارید از Virtuous Ten Studio استفاده کنید، به سادگی فایل APK را در برنامه باز کنید و آن را از حالت فشرده خارج کنید، یک پروژه ایجاد کنید (File -> New project)، سپس Import File را در منوی زمینه پروژه انتخاب کنید. اگر انتخاب شما بر روی apktool بود، فقط یک دستور را اجرا کنید:

$ apktool d com.kauf.particle.virtualtorch.apk

پس از این، یک درخت فایل مشابه آنچه در بخش قبل توضیح داده شد، در فهرست com.kauf.particle.virtualtorch ظاهر می شود، اما به جای فایل های dex و یک فایل apktool.yml، یک فهرست smali اضافی وجود دارد. اولی حاوی کد جداشده از فایل dex اجرایی برنامه است، دومی حاوی اطلاعات سرویس لازم برای apktool است تا بسته را دوباره جمع کند.

البته اولین جایی که باید نگاه کنیم AndroidManifest.xml است. و در اینجا بلافاصله با خط زیر روبرو می شویم:

حدس زدن اینکه مسئول اعطای مجوزهای برنامه برای استفاده از اتصال به اینترنت است، دشوار نیست. در واقع، اگر فقط بخواهیم از شر تبلیغات خلاص شویم، به احتمال زیاد فقط باید برنامه را از اینترنت مسدود کنیم. بیایید سعی کنیم این کار را انجام دهیم. خط مشخص شده را حذف می کنیم و سعی می کنیم نرم افزار را با استفاده از apktool بسازیم:

$ apktool b com.kauf.particle.virtualtorch

فایل APK به دست آمده در دایرکتوری com.kauf.particle.virtualtorch/build/ ظاهر می شود. با این حال، نصب آن امکان پذیر نخواهد بود، زیرا امضای دیجیتالی ندارد و چک جمع هافایل ها (به سادگی هیچ دایرکتوری META-INF/ در آن وجود ندارد). ما باید بسته را با استفاده از ابزار apk-signer امضا کنیم. راه اندازی شد. رابط از دو تب تشکیل شده است - در اول (Key Generator) کلیدها را ایجاد می کنیم ، در دوم (APK Signer) امضا می کنیم. برای ایجاد کلید خصوصی، فیلدهای زیر را پر کنید:

  • فایل هدف- فایل خروجی ذخیره کلید. معمولاً یک جفت کلید را ذخیره می کند.
  • کلمه عبورو تایید- رمز عبور برای ذخیره سازی؛
  • نام مستعار- نام کلید در انبار؛
  • رمز عبور مستعارو تایید- رمز عبور کلید مخفی؛
  • اعتبار- مدت اعتبار (به سال). مقدار پیش فرض بهینه است.

فیلدهای باقی مانده، به طور کلی، اختیاری هستند - اما حداقل یکی باید پر شود.


هشدار

برای امضای برنامه با استفاده از apk-signer، باید Android SDK را نصب کرده و مشخص کنید مسیر کاملقبل از آن در تنظیمات برنامه

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

اکنون می توانید APK را با این کلید امضا کنید. در برگه APK Signer، فایل جدید تولید شده را انتخاب کنید، رمز عبور، نام مستعار کلیدی و رمز عبور را وارد کنید، سپس فایل APK را پیدا کنید و با جسارت روی دکمه "Sign" کلیک کنید. اگر همه چیز خوب پیش برود، بسته امضا خواهد شد.

اطلاعات

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

امضای دیجیتال فقط برای نرم افزارهای شخص ثالث مورد نیاز است، بنابراین اگر در حال تغییر هستید برنامه های کاربردی سیستم، که با کپی کردن در پوشه /system/app/ نصب می شوند، نیازی به امضای آنها ندارید.

پس از آن، بسته را در تلفن هوشمند خود دانلود کنید، آن را نصب کرده و راه اندازی کنید. Voila، آگهی از بین رفته است! اما در عوض، پیامی ظاهر شد که ما اینترنت نداریم یا مجوزهای مناسب را نداریم. در تئوری، این ممکن است کافی باشد، اما پیام آزاردهنده به نظر می رسد، و صادقانه بگویم، ما فقط با یک برنامه احمقانه خوش شانس بودیم. نرم افزاری که معمولاً نوشته شده است به احتمال زیاد اعتبار خود را روشن می کند یا اتصال اینترنت را بررسی می کند و در غیر این صورت به سادگی از راه اندازی خودداری می کند. چگونه در این مورد باشیم؟ البته کد را ویرایش کنید.

به طور معمول، نویسندگان برنامه زمانی که برنامه یا یکی از «فعالیت‌های» آن (به عبارت ساده، صفحه‌های برنامه) راه‌اندازی می‌شود، کلاس‌های خاصی را برای نمایش تبلیغات و روش‌های فراخوانی این کلاس‌ها ایجاد می‌کنند. بیایید سعی کنیم این کلاس ها را پیدا کنیم. ما به دایرکتوری smali می رویم، سپس com (org فقط شامل کتابخانه گرافیکی باز cocos2d است)، سپس kauf (این جایی است، زیرا این نام توسعه دهنده است و تمام کدهای او در آنجا وجود دارد) - و اینجاست. دایرکتوری بازاریابی در داخل ما یک دسته فایل با پسوند smali پیدا می کنیم. اینها کلاس هایی هستند و قابل توجه ترین آنها کلاس Ad.smali است که از نام آن به راحتی می توان حدس زد که این کلاس تبلیغاتی است.

ما می‌توانیم منطق عملکرد آن را تغییر دهیم، اما حذف تماس‌های هر یک از روش‌های آن از خود برنامه بسیار ساده‌تر است. بنابراین، دایرکتوری بازاریابی را ترک می کنیم و به دایرکتوری ذرات مجاور و سپس virtualtorch می رویم. فایل MainActivity.smali در اینجا شایسته توجه ویژه است. این یک کلاس استاندارد اندروید است که توسط Android SDK ایجاد شده و به عنوان نقطه ورود به برنامه نصب شده است (مشابه با عملکرد اصلی در C). فایل را برای ویرایش باز کنید.

در داخل کد smali (اسمبلر محلی) وجود دارد. به دلیل ماهیت سطح پایین آن کاملاً گیج کننده و خواندن آن دشوار است، بنابراین ما آن را مطالعه نمی کنیم، بلکه به سادگی تمام ارجاعات به کلاس Ad را در کد پیدا می کنیم و آنها را نظر می دهیم. ما خط "تبلیغ" را در جستجو وارد می کنیم و به خط 25 می رسیم:

آگهی خصوصی فیلد: Lcom/kauf/marketing/Ad;

در اینجا یک فیلد تبلیغاتی برای ذخیره یک شیء کلاس Ad ایجاد می شود. ما با گذاشتن علامت ## در جلوی خط نظر می دهیم. ما به جستجو ادامه می دهیم. خط 423:

نسخه جدید نسخه 3، Lcom/kauf/marketing/Ad.

این جایی است که ایجاد شی رخ می دهد. نظر بدهیم جستجو را ادامه می دهیم و در خطوط 433، 435، 466، 468، 738، 740، 800 و 802 فراخوانی متدهای کلاس Ad را پیدا می کنیم. نظر بدهیم بنظر همینه پس انداز کنیم. اکنون بسته باید دوباره کنار هم قرار گیرد و از نظر عملکرد و وجود تبلیغات بررسی شود. برای خلوص آزمایش، خط حذف شده از AndroidManifest.xml را برمی گردانیم، بسته را مونتاژ می کنیم، امضا می کنیم و نصب می کنیم.

خوکچه هندی ما تبلیغات قابل مشاهده

اوه! تبلیغات فقط در زمانی که برنامه در حال اجرا بود ناپدید شد، اما در منوی اصلی باقی ماند، که هنگام راه اندازی نرم افزار مشاهده می کنیم. بنابراین، صبر کنید، اما نقطه ورودی کلاس MainActivity است، و تبلیغ در حالی که برنامه در حال اجرا بود ناپدید شد، اما در منوی اصلی باقی ماند، بنابراین نقطه ورودی متفاوت است؟ برای شناسایی نقطه ورودی واقعی، فایل AndroidManifest.xml را دوباره باز کنید. و بله، شامل خطوط زیر است:

آنها به ما می گویند (و مهمتر از آن اندروید) که فعالیتی به نام Start باید در پاسخ به تولید یک intent (رویداد) android.intent.action.MAIN از دسته android.intent.category.LAUNCHER راه اندازی شود. این رویداد زمانی ایجاد می‌شود که روی نماد برنامه در راه‌انداز ضربه بزنید، بنابراین نقطه ورودی، یعنی کلاس Start را تعیین می‌کند. به احتمال زیاد، برنامه نویس ابتدا یک برنامه بدون منوی اصلی نوشت که نقطه ورودی آن کلاس استاندارد MainActivity بود و سپس یک پنجره (اکتیویتی) جدید حاوی منو و توضیح در کلاس Start اضافه کرد و به صورت دستی آن را به ورودی تبدیل کرد. نقطه.

فایل Start.smali را باز کنید و دوباره به دنبال خط "Ad" بگردید، ما در خطوط 153 و 155 اشاره ای به کلاس FirstAd پیدا می کنیم. همچنین در کد منبع وجود دارد و با قضاوت از روی نام، وظیفه نمایش تبلیغات در صفحه اصلی را بر عهده دارد. بیایید بیشتر نگاه کنیم، ایجاد یک نمونه از کلاس FirstAd و یک هدف است که با توجه به زمینه، مربوط به این نمونه است و سپس برچسب cond_10، که انتقال شرطی به آن دقیقاً قبل از ایجاد یک نمونه انجام می شود. از کلاس:

If-ne p1, v0, :cond_10 .line 74 new-instance v0, Landroid/content/Intent; ... :cond_10

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

#if-ne p1, v0, :cond_10 goto:cond_10

دیگر هیچ اشاره ای به FirstAd در کد وجود ندارد، بنابراین فایل را می بندیم و مشعل مجازی خود را با استفاده از apktool دوباره جمع می کنیم. آن را در گوشی هوشمند خود کپی کنید، نصب کنید، راه اندازی کنید. Voila، همه تبلیغات ناپدید شده اند، که ما به همه ما تبریک می گوییم.

نتایج

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




بالا