Як змінити файли гри на андроїд Основи редагування системних програм Андроїд (apk)

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

Для того щоб вносити зміни до коду, потрібні елементарні навички програмування практично будь-якими мовами (бажано - Java та C++). Для заміни графіки згодяться прямі руки та вміння працювати в графічному редакторі.

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

Зміна графіки в системних додатках Андроїд

Для того, щоб просто замінити або видозмінити вихідну графіку (поміняти кольори кнопок, перемалювати картинки тощо), достатньо мати на комп'ютері стандартний архіватор WinRAR. На апараті при цьому користувач повинен мати права «рут» (аналог облікового записуадміністратора на Windows), а також бажано мати альтернативний рекавері (CWM) і рут-експлорер (для доступу до файлової системи Android безпосередньо в самому девайсі).

В першу чергу необхідно включити в апараті «Налагодження USB», потім підключити його до комп'ютера за допомогою USB-кабелю та встановити необхідні драйвера. Зазвичай вони знаходяться на віртуальному диску, який з'являється під час підключення до комп'ютера.

Потім потрібно завантажити в мережі Інтернет ADB-плагін для файлового менеджера. Даний плагін дозволяє бачити всю систему Андроїд як підключений диск із папками. Всі системні програми знаходяться на адресі /system/app, а також /system/framework. Знайшовши потрібну програму, просто копіюємо його на комп'ютер. Якщо плагін не ставиться, можна за допомогою рут-експлорера скопіювати програму з розширенням apk на SD-карту, а потім вже з неї вже на комп'ютер.

Після копіювання потрібного додаткуможна розпочинати редагування графіки. До речі, всі картинки в додатках Андроїд зберігаються в форматі png, який легко відкривається будь-яким графічним редактором. Відкривши файл програми за допомогою WinRAR, можна побачити низку папок. Нас цікавитиме лише папка res, усередині якої виявиться, у свою чергу, дуже багато різних папок. З них потрібні лише ті, які мають у своїй назві слово «drawable».

Тепер пригадаємо наш тип девайса та роздільну здатність його екрану. Якщо це смартфон, а роздільна здатність дорівнює 240х320, то нас цікавитимуть переважно папки drawable та drawable-ldpi. Якщо роздільна здатність 320х480 - відповідно папки drawable і drawable-mdpi, а для дозволу 480х800 - папки drawable і drawable-hdpi. На додаток до них зазвичай є також папки, у назві яких є слово "land" - це графіка для портретного режиму, тобто. коли девайс нахиляють.

Якщо в руках планшет, то нас цікавитимуть лише папки drawable та drawable-mdpi при будь-якій роздільній здатності екрану.

Скопіювавши на комп'ютер вибрані папки, можна замінити або перефарбувати вихідні зображення на потрібні та приємні очі. Слід звернути особливу увагу на зображення з роздільною здатністю 9.png. Справа в тому, що по периметру такого зображення є особлива рамка шириною в один піксель зі спеціальними мітками, порушення цілісності яких призведе до збою в роботі програми. Тому необхідно дотримуватися підвищеної обережності під час редагування таких файлів.

Після завершення редагування папки необхідно завантажити назад в архів, яким виступає сама програма з розширенням apk. При цьому необхідно обов'язково вибирати WinRAR опцію «без стиснення».

Підправлений додаток закачується назад в апарат або за допомогою рут-експлорера (спочатку файл копіюється на SD-карту, а з неї вже в девайс), або після виходу в рекавері - відразу з комп'ютера в папку /system/app або /system/framework . Далі потрібно обов'язково виставити за допомогою відповідних опцій у рут-експлорері або плагіні ADB дозволу на файл. Вони мають бути формату 644. Після перезавантаження апарата можна переглянути результат роботи оновленої програми.

Редагування вихідного коду системних програм

Дещо більше зусиль потрібно витратити для редагування вихідного коду системних додатків. Щоб розібрати та зібрати програму після внесення до неї змін, знадобиться виконати кілька наступних кроків.

1) Встановити на комп'ютер необхідний пакет програм останніх версіях: Java SE Runtime Environment та Android SDK Windows (програми для роботи з додатками та їх компонентами), APKtool або APKManager або Firmware_tool (одна з трьох програм для розбирання та декомпіляції системних додатків), редактор NotePad++ (для внесення змін до вихідний кодсистемних додатків Андроїд).

2) Включити в апараті «Налагодження USB», підключити його до комп'ютера за допомогою USB-кабелю, встановити необхідні драйвера для роботи з девайсом.

3) За допомогою однієї з вищезгаданих програм для роботи з кодом програм необхідно вийняти з телефону у відповідну папку програми папку /system/framework (повністю) та системні програми з папки /system/app. Наприклад, для програми Firmware_tool файли з телефону необхідно скопіювати до папки C:Firmwaretoolfw_project1_source2_system.img_unpacked у відповідні підпапки (додатки - до папки app, файли з framework - до папки framework). При використанні цієї, так і інших програм потрібно обов'язково прочитати інструкцію до них.

4) Встановити «опорний framework», тобто. набір правил, відповідно до яких буде здійснюватися декомпіляція (тобто розбирання коду) та компіляція (тобто складання коду) додатків.

На цьому підготовка до роботи із системними програмами завершена.

Вивантаження програм з девайса та їх завантаження назад здійснюється аналогічно до процедури, описаної в розділі «Зміна графіки в системних додатках Андроїд».

Редагування коду програм Андроїд зазвичай виконується за допомогою редактора NotePad++ - одного з найзручніших текстових редакторів, які мають опцію підсвічування синтаксису вибраної мови програмування. Як правило, при редагуванні можна також попутно змінювати графіку за допомогою вибраного графічного редактора.

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

Це знову я та мої інструкції для чайників та кавників з картинками.

Цього разу я докладно розповім про заміну системних компонентівОС Android на прикладі встановлення модифікації рядка стану.

Android – це маленький Linux. У ньому треба дотримуватися ряду правил при заміні файлів, щоб телефон не перетворився на цеглу, оживити яку допоможе тільки повна перепрошивка з втратою всіх даних з внутрішньої пам'яті пристрою. Внутрішні розділи відформатовані у файлову систему, відмінну від FAT32 на флешках. У властивостях файлу також зберігаються дозволи для різних груп користувачів (власник файлу, група власника файлу, інші користувачі). При операції з системними файламиїх треба зберігати, тому що при завантаженні система просто може не зуміти отримати доступ до них і не завантажитися нормально.
Почнемо з інструментарію.

Нам знадобиться:

  • Менеджер файлів, який вміє працювати з root-правами та дозволами файлів. Найкраще підійде Root Explorer (Ви ж його купили, так?)
  • Сам модифікований файл, який ми хочемо покласти замість системного (посилання в кінці статті).

Тепер використовуємо одну із зручних функцій Root Explorer. Зробимо довгий тап за потрібним файлом, щоб викликати контекстне меню

І клацаємо по пункту " Zip this file", щоб зберегти файл у zip-архіві на SD-карті. Після архівації отримаємо таке повідомлення:

Натискаємо кнопкою " Stay", щоб залишитися в папці і зробити ще щось.

Тепер все готове замінити файл.
Я вже говорив про права доступу кожного файлу. Щоб відтворити їх на новому файлі, треба спочатку подивитися їх у старого. Вони представлені рядом символів "rwxrwxrwx". 1-а тріада - права власника, 2-а - групи власника, 3-я - решти користувачів. У нашому файлі права "rw-r-r--".

Тепер переходимо на SD-карту, знаходимо там модифікований файл і з контекстного меню вибираємо пункт " Copy", але не поспішаємо вибирати відразу папку "/system/app", тому що ми тут же пошкодимо систему. Натомість копіюємо файл у спеціальну папку для тимчасових файлів "/data/local/tmp", щоб привести файл у вигляд, який набуде система.
Для початку викличемо контекстне меню файлу та оберемо пункт " Renameі введемо ім'я файлу "SystemUI.apk ". Саме так, тому що в Linux регістр літер в імені має значення, тобто "systemui.apk" і "SystemUI.apk" - це різні файли.
Далі треба змінити права на файл, тому що зараз вони напевно виставлені неправильно. Для цього знову викликаємо контекстне меню файлу довгим тапом та вибираємо пункт " Permissions". Для нашого значення "rw-r--r--" прапорці треба розставити так:

Натискаємо " OK" і знову викликаємо контекстне меню. Тепер треба змінити власника та групу для цієї програми. Для цього вибираємо пункт " Змінити власникаЗ'явиться вікно з інформацією про поточного власника файлу.
Тут треба зробити маленький відступ.
У папці "/system/app" усіма файлами володіє користувач "root" (uid=0) та група "root" (gid=0), а в папці "/system/framework" панує користувач "system" (gid=1000) та група "system" (gid=1000).
Виходячи з вищесказаного, виставляємо потрібні значення та натискаємо " OK".
І втретє викликаємо контекстне меню для файлу та в ньому вибираємо пункт " Copy" та в діалозі копіювання переходимо в папку "/system/app". Тепер сміливо натискаємо " Pasteі читаємо далі уважно.
Майже одночасно система повідомить, що процес рядка стану раптово завершився, і запропонує його запустити. Усі спроби будуть невдалими. Між появами вікон треба встигнути зробити низку дій. Перед натисканням кнопки треба викликати меню вимкнення апарата, воно опиниться під попередженням. Тепер треба розташувати палець приблизно ліворуч кнопки. Тепер треба дуже швидко клацнути три рази пальцем, що встигнути закрити попередження, вибрати пункт вимкнення та підтвердити свої наміри.
Тепер чекаємо вимикання телефону, заново його запускаємо та насолоджуємося результатом або не насолоджуємось та шукаємо помилки.

Іноді деякі програми на 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. Проте, маючи базові знання, розібратися в цьому - лише питання часу.

З цієї статті ви дізнаєтеся з чого складається додаток для Android, як відкрити APK файл і за допомогою яких програм.

Що таке файл APK?

APK – формат операційної системи Android, що використовується для архівних виконуваних файлів-додатків, причому назва самого файлу може бути будь-яким, а ось розширення має виглядати тільки так. Аналогами APK в інших ОС є в Windows .msi, Symbian - .sis, в Linux - .rpm або .deb.

Дивимося, що всередині
По суті. ZIP архівтому подивитися на внутрішній пристрій можна скориставшись будь-яким файловим менеджеромабо архіватором, наприклад WinRAR або мобільним додатком X-Plore.





При цьому варто пам'ятати, що ви отримуєте лише візуальний доступ до внутрішніх ресурсів, можливості редагування вкрай обмежені.
Розглянемо структуру
Всередині.apk ми бачимо ряд файлів та папок, давайте дізнаємося для чого вони служать:
  • AndroidManifest.xml - це свого роду "паспорт" програми з якого можна дізнатися про всі основні моменти, вимоги, версію, дозволи та інше.
  • META-INF цей фаїл містить метадані, тобто дані про дані, контрольні суми, шляхи до даних, шляхи та контрольні суми ресурсів, сертифікати. Відкрити цей фаїл можна будь-яким текстовим редактором, але рекомендується використовувати Notepad++.
  • Папка res містить усі ресурси програми, графічні, такі як іконки, картинки, текстові, елементи графічного інтерфейсу. Отримати доступ до папки так само можна легко.
  • classes.dex - безпосередній програмний кодпрограми, що виконується віртуальною машиною Dalvik VM, побачити що всередині цього файлу можна лише декомпілювавши.apk, про це ми розповімо в інших статтях. resources.arsc -компільований файл XML, даний файл містить дані про всі ресурси задіяних у програмі.
  • lib - папка з нативними бібліотеками, отримати доступ до ресурсів якої можна лише за допомогою спеціалізованих програм. Так само в APK можуть зустрічатися такі файли та папки як com, org, udk, але далеко не завжди.

Тепер розглянемо внутрішню структуру докладніше для цього нам знадобиться програма декомпіляції, Java і АПК-файл. Основним інструментом для розборки.apk є Apktool, але дана програмапрацює тільки з рядка, що не дуже зручно. Для більш швидкого та зручного розбору можна використовувати APKing, це все та сама Apktool, але з можливістю роботи з контекстного меню.
І так встановлюємо APKing як будь-який додаток для Windows і вибравши.apk натискаємо на нього правою клавішею миші і одночасно Shift, після чого побачимо наступне:


І вибираємо необхідну дію, наприклад декомпілювати повністю, далі програма завершить операцію та створить папку з такою самою назвою.


Відкривши папку, ми отримаємо доступ до всіх ресурсів АПК файлу.


Тепер все текстові файлиможна редагувати, при цьому дотримуючись основних правил, можна використовувати популярну програму Notepad++, наприклад розглянемо AndroidManifest.xml

Apk editor pro, яку Ви можете завантажити на андроїд на нашому сайті, дозволить Вам зламати/змінити вміст файлів будь-якої програми мобільних пристроїві налаштувати його на власний розсуд.

Особливості

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

Що вміє ця утиліта?

  1. Змінювати (перекладати) назви інших програм.
  2. Змінювати макети архітектури, кольори, шаблони графічних установок (наприклад, розмір іконок).
  3. Змінювати звукове оформлення, медіафайли.
  4. Видаляти рекламу.
  5. Обходити блокування платного контенту.
  6. Переносити програму з внутрішньої пам'яті пристрою на картку SD.
  7. Змінювати дозвіл та багато іншого.

Щоб зрозуміти, як користуватись утилітою, необхідно завантажити apk editor pro та зайти в меню. Потім вибрати або вже встановлений додатокна андроїді, або його apk файл. Після цього за промовчанням відкриються дані, які користувач може змінити:

  • редагування ресурсів;
  • заміна файлів;
  • загальне редагування;
  • редагування даних.

Програма пропонує встановити змінений варіант. Не завжди це спрацьовує, тому стара версіяповинна бути видалена вручну та встановлена ​​нова. Після видалення слід вибрати папку apk editor (для зручності можна скористатися ES Провідником) серед програм на андроїді та знайти змінений файл програми, встановити його на пристрій.

Програма відрізняється зручним інтерфейсом. Навігація досить проста, але користувачеві необхідно мати базові знання англійської, щоб розібратися.

Достоїнства і недоліки

  1. Програма відкриває перед користувачем широкий спектр можливостей настроювання програм.
  2. У меню присутній розділ Допомога, який просто та докладно описує великий обсяг можливостей програми Едитор. Тому користувачам, далеким від програмування, не доведеться шукати на сторонніх ресурсах приклади та інструкції редагування.
  3. Ви можете завантажити програму безкоштовно на нашому сайті.

Користування цією утилітою потребує деяких навичок та знань. У руках недосвідченого користувача редагування може призвести до порушень цілісності. файлової системи, що зрештою призведе до збоїв у роботі додатків. У меню в пункті Допомога присутні приклади перетворення з картинками та поради щодо правильного використання apk editor pro на андроїд. Тому, якщо виникне бажання розібратися з цією програмою, досить просто дотримуватися інструкцій.

Едитор - досить корисний інструмент для тих, хто стикається з незручним інтерфейсом додатків (відсутність російської мови, постійна реклама, банери та ін.). Якщо Ви вже користувалися цією програмою, поділіться своїми враженнями у коментарях нижче.



Завантаження...
Top