Як відкрити apk на android. Що таке файл apk, ніж відкрити його і як з ним працювати

Користувачі стикаються з тим, що жодна програма на комп'ютері не відкриває такі файли. І це абсолютно нормально, адже файл з розширенням APK це інсталяційний файл операційної системи Android і запустити такий файл у Windows неможливо.

Якщо ви потрапили в подібну ситуацію і не знаєте, чим відкрити файл APK, то у вас є два варіанти:

  • Перенести файл APK на пристрій з операційною системою Android і запустити файл там. У цьому випадку ви зможете ознайомитися з програмою, яка міститься в даному файлі.
  • Також ви можете розпакувати APK файл на вашому комп'ютері Windows. У цьому випадку ви зможете ознайомитися зі структурою файлу, а також з його вмістом.

Якщо ви хочете запустити APK файл і ознайомитися з програмою, яка в ньому знаходиться, то перше, що вам потрібно зробити, це перенести даний файл на Андроїд пристрій. Це можна зробити будь-яким зручним для вас способом. Наприклад, можна підключити андроїд пристрій до комп'ютера за допомогою кабелю USB або безпроводового інтерфейсу Bluetooth.

Після цього на мобільний пристрій з операційною системою Android вам необхідно його запустити. Для цього відкрийте будь-який файловий менеджер, знайдіть APK файл у пам'яті пристрою та відкрийте його. Після цього з'явиться пропозиція , що міститься у цьому файлі. Після встановлення на робочому столі Android з'явиться ярлик встановленої програми. З його допомогою ви зможете відкрити програму з APK файлу.

Другий спосіб, це відкриття APK файлу на комп'ютері Windows за допомогою архіватора. Справа в тому, що файл APK за фактом це простий . Тому ви можете відкрити його за допомогою будь-якого архіватора. Наприклад, для цього можна використовувати популярний архіватор WinRAR.

Відкривши файл APK як архів, ви зможете побачити, з чого він складається. У більшості випадків даний файл включає такі папки і файли:

    • MANIFEST.MF – файл з інформацією про інші файли, що знаходяться в даному файлі APK (контрольні суми файлів);
    • CERT.RSA – сертифікат, яким підписано цей додаток;
    • CERT.SF – файл з інформацією про сертифікат та ресурси;
  • lib – тут зберігаються linux-бібліотеки для кожного з підтримуваних типів процесорів:

    • armeabi – для процесорів ARMv6 та старіших;
    • armeabi-v7a – для процесорів ARMv7 та новіших;
    • x86 – для процесорів з архітектурою x86;
    • mips – для MIPS процесорів;
  • res – ресурси, яких немає у файлі resources.arsc (див. нижче).
  • Assets – ресурси для AssetManager.
  • AndroidManifest.xml – файл із описом цієї програми. Тут зберігається ім'я програми, назва пакета, версія програми, а також інша інформація, яка має відношення до цієї програми.
  • classes.dex – виконуваний код програми у форматі DEX;
  • resources.arsc – компильовані ресурси, необхідних роботи програми;

Відкриття АРК-файлів – питання досить затребуване. Такий тип документів використовуються на смартфонах та планшетах. Вони дозволяють встановлювати програми на пристрої. До складу інсталяційного пакета входять файли і сама програма.


Якщо виникає питання, як відкрити APK-файли на комп'ютері і яким чином запустити їх, знадобиться, що для цього існують спеціальні Android-симулятори. До них входять YouWave і BlueStacks. Вони дають змогу виконати такі дії. При цьому варто звернути увагу на інструмент 7-Zip. Він є безкоштовним архіватором. Інтерфейс Програма відрізняється простим інтерфейсом. Вікно складається з:

Головне меню;
файлового менеджера;
панелі інструментів.

Зручність використання додають функціональні кнопки з підказками російською мовою. Інструмент може інтегруватися в меню ОС автоматично після інсталяції. Існує можливість використовувати командний рядок.

Платформа для розробників

У разі необхідності відкриття APK-файлів на комп'ютері та внесення в них правок, варто звернути увагу на програму Eclipse. У його основі лежить вихідний код відкритого типу. Головною метою програми є збільшення продуктивності у процесі розробки програмного забезпечення. Відзначається стабільність у роботі платформи разом із різними операційними системами.

WinRAR

Є архіватором, який здатний вирішити відкриття APK-файлів на комп'ютері з метою його ознайомлення. Утиліта відрізняється високою швидкістю обробки інформації. WinRAR дозволяє розбити масив даних на певну кількість томів певних розмірів. Також програма дає можливість забезпечити захист інформації. Для цього використовується пароль.

У разі питання про те, як відкрити документ APK на комп'ютері, варто звернути увагу на програму WinZip. Йдеться про програму, призначену для стиснення файлів. Воно також здатне відкривати необхідні пакети даних. Програма має багато різних інструментів, вбудованих в інтуїтивний інтерфейс. Безперечною перевагою утиліти є спеціальний майстер, який максимально спрощує вилучення матеріалу. Достатньо дотримуватися послідовності дій, у тому числі потрібно звернути увагу на певні питання, що наводять.

Програма дає змогу відновлювати пошкоджені дані. Причому перевірка на наявність у файлах помилок, а також їх виправлення здійснюється в автоматичному режимі. Існує можливість надіслати пакет другові прямо з програми під час використання електронної пошти. Це завдання доручається вбудовані інструменти.

Гарячі клавіші дозволяють обробляти одночасно кілька файлів. Програма може інтегруватися в меню системи, тому використовувати інструмент дуже просто. Існує центр підтримки, де завжди готові надати допомогу у разі потреби. З командою розробників легко зв'язатися електронною поштою.

Інші утиліти

Варто також розглянути інші програми для відкриття файлу АРК на комп'ютері. Одним із них є Hamster Free. Цей архіватор відрізняється простотою застосування, а також повною підтримкою багатоядерних процесорів. Програма передбачає безкоштовне використання, має приємний інтерфейс, підтримує російську мову. Завдяки інтеграції в меню можна отримати моментальний доступ до основних функцій, серед яких є й опція розпакування пакетів даних.

Існує ще одна програма, яка називається Universal Extractor. Вона також підтримує роботу з представленим типом даних. Програма дозволяє витягувати дані з пакета. Також варто згадати ExtractNow - утиліту, яка чудово впорається з поставленим завданням. Програма досконало володіє відкриттям файлів та їх розпакуванням.

Існує можливість отримувати дані одночасно з кількох пакетів. Софт відрізняється простотою інтерфейсу. Щоб зробити обробку даних, достатньо перемістити їх мишею на головне вікно. Крім того, у додатку задіяно систему пошуку даних. У разі потреби запропоновано довідкові інструменти. Якщо програму згорнуто, в області системних повідомлень з'явиться спеціальний значок. Також існує функція «Поверх усіх вікон». Усі виконані операції відображаються у звітах.

Насамкінець хочеться сказати пару слів про програму YouWave. Вона дозволяє запустити на комп'ютері віртуальну машину, за допомогою якої можна відтворювати програми та гри для Android.

З наведених способів відкриття файлів АРК можна вибрати той, який створить максимальну зручність.

У цій статті ми з Вами поговоримо про те, як все ж таки встановлювати програми або ігри з *.apk файлів на Android. Рано чи пізно власники пристроїв під керуванням Android стикаються із ситуацією, коли стандартний функціонал системи набридає, і з'являється непереборне бажання його розширити.

На відміну від iOS, де інсталяція програм в основі своїй побудована на роботі з iTunes Store, розробники з Google передбачили можливість встановлення програм штатними засобами. Але для цього вам необхідно дозволити встановлення додатків з невідомих джерел, переходимо Налаштування/Settings -> Програми/Application Settings і ставимо галочку навпроти пункту Невідомі джерела/Unknown Sources.

Всі програми для операційної системи Android постачаються з розширенням файлу *.apk. Що стосується структури таких файлів, то по суті apk файл є звичайним архівом, переглянути вміст якого ви зможете будь-яким архіватором. Операційна система Android самостійно розпізнає такі файли та розуміє, що з ними потрібно робити. Таким чином, встановити додатки на Android ви можете декількома способами.

1. Встановлення *.apk файлу на Android

Перший, і з погляду найпоширеніший спосіб - це установка *.apk файлу на Android з допомогою файлового менеджера . Все, що потрібно зробити, це перекинути *.apk файл на SD карту вашого пристрою. Потім скористатися будь-яким доступним файловим менеджером із можливістю встановлення програм. Ми рекомендуємо використовувати ASTRO File Manager або ES File Explorer.

Потім запустіть файловий менеджер, знайдіть *.apk файл і встановіть програму за допомогою стандартного інсталятора Android.

Крім того, встановити програму можна без використання файлових менеджерів, скориставшись стандартним браузером. Просто введіть в адресний рядок content://com.android.htmlfileprovider/sdcard/ИмяФайла.apk і інсталяція запуститься автоматично. У цьому прикладі *.apk файл знаходиться в кореневій папці карти SD.

2. Встановлення за допомогою менеджера додатків

Другий, найпростіший спосіб встановлення *.apk файлів на Android, полягає у використанні менеджерів додатків. Дані програми створені для того, щоб максимально спростити процедуру встановлення програм через *.apk файли. І це справді так! Ми протестували програму під назвою SlideME Mobentoo App Installer , яку ми вам і рекомендуємо.

SlideME Mobentoo App Installer максимально швидко просканує карту SD вашого пристрою і відобразить список всіх знайдених *.apk файлів. Після чого ви зможете легко, практично в один клік встановити необхідні додатки.

3. Встановлення за допомогою комп'ютера та USB

Крім вищепереліченого, ми знаємо ще один, і мабуть найзручніший спосіб - це встановлення *.apk додатків за допомогою підключення Android пристрою до комп'ютера USB кабелем. Ми рекомендуємо використовувати програму InstallAPK і драйвери USB .

Просто встановіть InstallAPK на комп'ютер, потім підключіть Ваш смартфон USB кабелем і двічі клацніть по *.apk файлу. Програма самостійно ідентифікує *.apk файл і запустить інсталяцію програми у вашому Android пристрої.

Не тільки професійних розробників мобільних додатків, але й часом звичайнісіньких користувачів цікавить, яка має програма для відкриття APK файлів на комп'ютері. А також – яка з них найкраща. Насправді однозначно відповісти на це питання неможливо. Все залежить від того, для яких цілей планується відкривати АРК файл.

Що таке АРК файл

Насправді, даний формат файлу є не що інше, як звичайний ZIP-архів. Усередині нього знаходяться всілякі програмні компоненти, які необхідні для успішної роботи програми на мобільній операційній системі Android. І взагалі, АРК-формат – це «рідний» формат для цієї операційки. Відповідно, коли говорять про те, щоб завантажити АРК файл тієї чи іншої програми, мають на увазі під цим просто завантажити програму для Андроїда.

Чим і для чого відкриваються файли АРК

Повертаючись до питання, яка ж найкраща програма для APK файлів на комп'ютері, буде спочатку не зайвим визначитися, а для якої саме мети це потрібно зробити:

  1. Щоб просто запустити мобільний додаток на комп'ютері;
  2. Щоб розпакувати АРК архів на комп'ютері;
  3. Або щоб не лише роздрукувати цей архів, а й мати можливість внести до нього зміни.

У першому випадку можна порадити звернути увагу на так звані емулятори. Це спеціальні програми, які дозволяють запустити мобільні програми прямо на персональному комп'ютері. В даний час існує маса подібних додатків, і порадити щось певне дуже важко. Багато користувачів віддають перевагу знаменитому. Однак є й інші емулятори.

Якщо ж потрібно просто розкрити архів, то оскільки АРК-файл, як уже зазначалося, це і є звичайнісінький комп'ютерний архів, то його можна роздрукувати за допомогою практично будь-якого Windows архіватора. Наприклад, добре впорається з цим завданням знаменитий Win RAR.

Тим, у кого стоїть на комп'ютері «яблучна» операційна система, можна порадити таку програму, як Archive Utility. Вона також дозволить цікавим дізнатися, що ж, власне, є всередині загадкового АРК-архіву.

Ну а для того, щоб можна було не просто розкрити архів, а й проаналізувати його, а також мати можливість внести до нього зміни та зібрати наново, існують окремі програми для розробників. Наприклад, пропонується програма для читання APK файлів на комп'ютері та роботи з форматами АРК — . Це по-справжньому професійний набір інструментів з власним емулятором і т.д.


Іноді деякі програми на Android чимось не влаштовують користувача. Як приклад можна навести настирливу рекламу. А то буває і так – усім хороша програма, та тільки переклад у ній або кривою, або зовсім відсутня. Або, наприклад, програма тріальна, а отримати повну версію можливості немає. Як змінити ситуацію?

Вступ

У цій статті ми поговоримо про те, як розібрати пакет APK з додатком, розглянемо його внутрішню структуру, дизасемблуємо та декомпілюємо байт-код, а також спробуємо внести до додатків кілька змін, які можуть принести нам ту чи іншу вигоду.

Щоб зробити все це самостійно, знадобляться хоча б початкові знання мови Java, на якій пишуться програми для Android, і мови XML, яка використовується в Android повсюдно - від опису самої програми та її прав доступу до зберігання рядків, які будуть виведені на екран. Також знадобиться вміння поводитися зі спеціалізованим консольним софтом.

Отже, що ж є пакет APK, в якому поширюється абсолютно весь софт для Android?

Декомпіляція додатків

У статті ми працювали тільки з дизассембльованим кодом програми, проте якщо у великі програми вносити серйозніші зміни, розібратися в коді smali буде набагато складніше. На щастя, ми можемо декомпілювати код dex Java-код, який буде хоч і не оригінальним і не компилируемым назад, але набагато легшим для читання та розуміння логіки роботи програми. Щоб зробити це, нам знадобляться два інструменти:

  • dex2jar - транслятор байт-коду Dalvik в байт-код JVM, на основі якого ми зможемо отримати код мовою Java;
  • jd-gui - сам декомпілятор, що дозволяє отримати з байт-коду JVM код Java, що читається. Як альтернативу можна використовувати Jad (www.varaneckas.com/jad); хоч він і досить старий, але в деяких випадках генерує код, що більш читається, ніж Jd-gui.

Використовувати їх слід так. Спочатку запускаємо dex2jar, вказуючи як аргумент шлях до apk-пакета:

%dex2jar.sh mail.apk

В результаті в поточному каталозі з'явиться Java-пакет mail.jar, який можна відкрити в jd-gui для перегляду Java-коду.

Пристрій APK-пакетів та їх отримання

Пакет програми Android, по суті, є звичайним ZIP-файлом, для перегляду вмісту та розпакування якого ніяких спеціальних інструментів не потрібно. Достатньо мати архіватор – 7zip для Windows або консольний unzip у Linux. Але це щодо обгортки. А що всередині? Усередині ж у нас у загальному випадку така структура:

  • META-INF/- містить цифровий сертифікат програми, що засвідчує його творця, та контрольні суми файлів пакета;
  • res/ - різні ресурси, які додаток використовує у своїй роботі, наприклад, зображення, декларативний опис інтерфейсу, а також інші дані;
  • AndroidManifest.xml- Опис програми. Сюди входить, наприклад, список необхідних дозволів, необхідна версія Android та необхідна роздільна здатність екрана;
  • classes.dex- компільований байт-код програми для віртуальної машини Dalvik;
  • resources.arsc- теж ресурси, але іншого роду - зокрема рядки (так-так, цей файл можна використовувати для русифікації!).

Перелічені файли та каталоги є якщо не у всіх, то, мабуть, в більшості APK. Однак варто згадати ще кілька не настільки поширених файлів/каталогів:

  • assets- Аналог ресурсів. Основна відмінність - для доступу до ресурсу необхідно знати його ідентифікатор, список asset'ів можна отримувати динамічно, використовуючи метод AssetManager.list() в коді програми;
  • lib– нативні Linux-бібліотеки, написані за допомогою NDK (Native Development Kit).

Цей каталог використовують виробники ігор, розміщуючи туди двигун гри, написаний на C/C++, а також творці високопродуктивних програм (наприклад, Google Chrome). З пристроєм розібралися. Але як же отримати сам файл пакета програми, що цікавить? Оскільки без рута з пристрою забрати файли APK неможливо (вони лежать у каталозі /data/app), а рутити не завжди доцільно, є як мінімум три способи отримати файл програми на комп'ютер:

  • розширення APK Downloader для Chrome;
  • додаток Real APK Leecher;
  • різні файлообмінники та варезники.

Який із них використовувати - справа смаку; ми вважаємо за краще використовувати окремі програми, тому опишемо використання Real APK Leecher, тим більше що написаний він на Java і, відповідно, працюватиме хоч у вінді, хоч у ніксах.

Після запуску програми необхідно заповнити три поля: Email, Password та Device ID - та вибрати мову. Перші два - e-mail та пароль твого гуглоаккаунта, який ти використовуєш на пристрої. Третій є ідентифікатором пристрою, і його можна отримати, набравши на номеронабирачі код # #8255## а потім знайшовши рядок Device ID. При заповненні треба ввести лише ID без префікса android-.

Після заповнення та збереження нерідко вискакує повідомлення "Error while connecting to server". Воно не має відношення до Google Play, тому сміливо його ігноруй і шукай пакети, які тебе цікавлять.

Перегляд та модифікація

Припустимо, ти знайшов пакет, що тебе цікавить, скачав, розпакував… і при спробі перегляду якого-небудь XML-файлу з подивом виявив, що файл не текстовий. Чим же його декомпілювати та як взагалі працювати з пакетами? Невже потрібно ставити SDK? Ні, SDK ставити не обов'язково. Насправді для всіх кроків розпакування, модифікації та упаковки пакетів APK потрібні наступні інструменти:

  • архіватор ZIPдля розпакування та запакування;
  • smali- асемблер/дизассемблер байт-коду віртуальної машини Dalvik (code.google.com/p/smali);
  • aapt- інструмент для запакування ресурсів (за замовчуванням ресурси зберігаються у бінарному вигляді для оптимізації продуктивності програми). Входить до складу Android SDK, але може бути отриманий окремо;
  • signer- Інструмент для цифрового підпису модифікованого пакета (bit.ly/Rmrv4M).

Використовувати всі ці інструменти можна і окремо, але це незручно, тому краще скористатися високорівневим софтом, побудованим на їх основі. Якщо ти працюєш у Linux або Mac OS X, то є інструмент під назвою apktool . Він дозволяє розпаковувати ресурси в оригінальний вигляд (у тому числі бінарні XML- та arsc-файли), перезбирати пакет із зміненими ресурсами, але не вміє підписувати пакети, так що запускати утиліту signer доведеться вручну. Незважаючи на те, що утиліта написана на Java, її установка досить нестандартна. Спочатку слід отримати сам 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

Якщо ж ти працюєш у Windows, то для неї є чудовий інструмент під назвою Virtuous Ten Studio, який також акумулює всі ці інструменти (включаючи сам apktool), але замість CLI-інтерфейсу надає користувачеві інтуїтивно зрозумілий графічний інтерфейс, за допомогою якого можна виконувати операції з розпакування, дизассемблювання та декомпіляції в кілька кліків. Інструмент цей Donation-ware, тобто іноді з'являються віконця з пропозицією отримати ліцензію, але це, зрештою, можна і зазнати. Описувати його не має сенсу, тому що розібратися в інтерфейсі можна за кілька хвилин. А ось apktool, внаслідок його консольної природи, слід обговорити докладніше.


Розглянемо налаштування apktool. Якщо коротко, то є три основні команди: d(decode), b(build) та if(install framework). Якщо з першими двома командами все зрозуміло, що робить третя, умовний оператор? Вона розпаковує вказаний UI-фреймворк, який необхідний у тих випадках, коли ти препаруєш будь-який системний пакет.

Розглянемо найцікавіші опції першої команди:

  • -s- не дизасемблювати файли dex;
  • -r- не розпаковувати ресурси;
  • -b- не вставляти налагоджувальну інформацію в результати дизасемблювання файлу dex;
  • -frame-path- використовувати вказаний UI-фреймворк замість вбудованого в apktool. Тепер розглянемо пару опцій для команди b:
  • -f- форсоване складання без перевірки змін;
  • -a- вказуємо шлях до aapt (засіб для збирання APK-архіву), якщо ти з якоїсь причини хочеш використовувати його з іншого джерела.

Користуватися apktool дуже просто, для цього достатньо вказати одну з команд і шлях до APK, наприклад:

$apktool d mail.apk

Після цього в каталозі mail з'являться всі вилучені та дизассембльовані файли пакета.

Препарування. Відключаємо рекламу

Теорія – це, звичайно, добре, але навіщо вона потрібна, якщо ми не знаємо, що робити з розпакованим пакетом? Спробуємо застосувати теорію з користю собі, саме модифікуємо якусь софтину те щоб вона показувала нам рекламу. Для прикладу нехай це буде Virtual Torch – віртуальний смолоскип. Для нас ця софтина підійде ідеально, тому що вона під зав'язку набита дратівливою рекламою і до того ж досить проста, щоб не загубитися в нетрях коду.


Отже, за допомогою одного з наведених способів завантажуй додаток з маркету . Якщо ти вирішив використовувати Virtuous Ten Studio, просто відкрий APK-файл у додатку та розпакуй його, для чого створи проект (File -> New project), потім у контекстному меню проекту вибери Import File. Якщо ж твій вибір припав на apktool, достатньо виконати одну команду:

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

Після цього у каталозі com.kauf.particle.virtualtorch з'явиться файлове дерево, схоже на описане у попередньому розділі, але з додатковим каталогом smali замість dex-файлів та файлом apktool.yml. Перший містить дизассембльований код виконуваного dex-файлу програми, другий - службову інформацію, необхідну apktool для складання пакета назад.

Перше місце, куди ми повинні заглянути, це, звичайно ж, AndroidManifest.xml. І тут ми відразу зустрічаємо наступний рядок:

Неважко здогадатися, що вона відповідає за надання додатку повноважень використання інтернет-з'єднання. По суті, якщо ми хочемо просто позбавитися реклами, нам, швидше за все, достатньо буде заборонити додатку інтернет. Спробуємо це зробити. Видаляємо вказаний рядок і пробуємо зібрати софтину за допомогою apktool:

$apktool b com.kauf.particle.virtualtorch

У каталозі com.kauf.particle.virtualtorch/build/ з'явиться результуючий файл APK. Однак встановити його не вийде, оскільки він не має цифрового підпису та контрольних сум файлів (у ньому просто немає каталогу META-INF/). Ми повинні підписати пакет за допомогою утиліти apk-signer. Запустили. Інтерфейс складається з двох вкладок – на першій (Key Generator) створюємо ключі, на другій (APK Signer) підписуємо. Щоб створити наш приватний ключ, заповнюємо такі поля:

  • Target File- Вихідний файл сховища ключів; у ньому зазвичай зберігається одна пара ключів;
  • Passwordі Confirm- пароль для сховища;
  • Alias- ім'я ключа у сховищі;
  • Alias ​​passwordі Confirm- пароль секретного ключа;
  • Validity- Термін дії (у роках). Значення за промовчанням оптимальне.

Інші поля, загалом, необов'язкові - але потрібно заповнити хоча б одне.


WARNING

Щоб підписати програму за допомогою apk-signer, ти маєш встановити Android SDK і вказати повний шлях до нього в налаштуваннях програми.

Вся інформація надана виключно для ознайомлення. Ні редакція, ні автор не несуть відповідальності за будь-яку можливу шкоду, заподіяну матеріалами цієї статті.

Тепер цим ключем можна підписати APK. На вкладці APK Signer вибираємо щойно згенерований файл, вводимо пароль, аліас ключа та пароль до нього, потім знаходимо файл APK і сміливо тиснемо кнопку Sign. Якщо все пройде нормально, пакет буде підписано.

INFO

Так як ми підписали пакет нашим власним ключем, він конфліктуватиме з оригінальним додатком, а це означає, що при спробі оновити софтину через маркет ми отримаємо помилку.

Цифровий підпис необхідний лише сторонньому софту, тому якщо ти займаєшся модифікацією системних додатків, які встановлюються копіюванням у каталог /system/app/, підписувати їх не потрібно.

Після цього скидаємо пакет на смартфон, встановлюємо та запускаємо. Вуаля, реклама зникла! Замість неї, однак, з'явилося повідомлення, що ми не маємо інтернету або відсутні відповідні дозволи. За ідеєю, цього могло б і вистачити, але повідомлення виглядає дратівливо, та й, якщо чесно, нам просто пощастило з тупим додатком. Нормально написана софтина, швидше за все, уточнить свої повноваження або перевірить наявність інтернет-з'єднання і інакше просто відмовиться запускатися. Як бути у цьому випадку? Звісно, ​​правити код.

Зазвичай автори додатків створюють спеціальні класи для виведення реклами та викликають методи цих класів під час запуску програми або однієї з його активностей (спрощено кажучи, екранів програми). Спробуймо знайти ці класи. Ідемо до каталогу smali, далі com (в org лежить тільки відкрита графічна бібліотека cocos2d), далі kauf (саме туди, тому що це ім'я розробника і там лежить весь його код) – і ось він, каталог marketing. Усередині знаходимо купу файлів із розширенням smali. Це класи, і найбільш примітний їх клас Ad.smali, за назвою якого неважко здогадатися, що він виводить рекламу.

Ми могли б змінити логіку його роботи, але набагато простіше буде тупо прибрати виклики будь-яких його методів із самого застосування. Тому виходимо з каталогу marketing і йдемо в сусідній каталог particle, а потім у virtualtorch. На особливу увагу тут заслуговує файл MainActivity.smali. Це стандартний для Android клас, який створюється Android SDK і встановлюється як точка входу в програму (аналог функції main в Сі). Відкриваємо файл для редагування.

Усередині знаходиться код smali (місцевий асемблер). Він досить заплутаний і важкий для читання через свою низькорівневу природу, тому ми не будемо його вивчати, а просто знайдемо всі згадки класу Ad в коді і закоментуємо їх. Вбиваємо рядок «Ad» у пошуку та потрапляємо на рядок 25:

Field private ad:Lcom/kauf/marketing/Ad;

Тут створюється поле ad для зберігання об'єкта класу Ad. Коментуємо за допомогою налаштування знака ### перед рядком. Продовжуємо пошук. Рядок 423:

New-instance v3, Lcom/kauf/marketing/Ad;

Тут відбувається створення об'єкта. Коментуємо. Продовжуємо пошук та знаходимо у рядках 433, 435, 466, 468, 738, 740, 800 та 802 звернення до методів класу Ad. Коментуємо. Наче все. Зберігаємо. Тепер пакет необхідно зібрати назад та перевірити його працездатність та наявність реклами. Для чистоти експерименту повертаємо віддалений з AndroidManifest.xml рядок, збираємо пакет, підписуємо та встановлюємо.

Наш піддослідний кролик. Видна реклама

Оп-па! Реклама зникла лише під час роботи програми, але залишилася у головному меню, яке ми бачимо, коли запускаємо софтину. Так, зачекайте, але ж точка входу - це клас MainActivity, а реклама зникла під час роботи програми, але залишилася в головному меню, отже, точка входу інша? Щоб виявити дійсну точку входу, знову відкриваємо файл AndroidManifest.xml. І так, у ньому є такі рядки:

Вони говорять нам (і, що важливіше, андроїду) про те, що активність з ім'ям Start має бути запущена у відповідь на генерацію інтенту (події) 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. Копіюємо на смартфон, встановлюємо, запускаємо. Вуаля, вся реклама зникла, із чим нас усіх і вітаємо.

Підсумки

Ця стаття лише коротке введення в методи розкриття та модифікації Android-додатків. За кадром залишилося багато питань, таких як зняття захисту, розбір обфусцированного коду, переклад та заміна ресурсів програми, а також модифікація програм, написаних з використанням Android NDK. Однак, маючи базові знання, розібратися в цьому - лише питання часу.