Як дістати андроїд програми з телефону. Як зберігати apk файли з Google play market? Ім'я облікового запису Google та ID пристрою

Головна / Google Play

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

У яких випадках здійснюється резервування встановлених додатків?

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

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

Таких ситуацій є безліч.

Як отримати APK-файли з Android-пристрою?

Для виконання цього завдання нам знадобиться безкоштовний додаток"ES Провідник" , яке можна знайти на Google Play. Чому саме цей провідник? Та все просто, це відмінний та зручний у використанні диспетчер файлів і він уже має інтегровану функцію резервування програм. За допомогою цієї функції можна отримати потрібні APK-файли з Android-пристроїв.

Спосіб 1.Отже, Ви встановили "ES Провідник", тепер запускаємо його:

Малюнок 1

Заходимо в меню програми, для цього натискаємо вказану нами кнопку у верхньому лівому кутку екрана пристрою. Розкриваємо розділ «Бібліотеки» та натискаємо APPs.

Малюнок 2

Якщо Ви все зробили правильно – перед Вами відкриється вікно із встановленими користувальницькими програмами. Далі вибираємо додаток, який потрібно витягти і натискаємо кнопку Резервувати у нижній частині екрану.


Малюнок 3 Малюнок 4

Усі вилучені програми знаходяться в папці « Пам'ять телефону/backups/apps». Можливо, Ви помітили, що на малюнку 3 і 4 деякі файли виділені червоним або зеленим кольором, так ось: зеленим кольором позначені програми які були резервовані раніше і знаходяться в папці apps , а червоним – програми, які теж були вилучені раніше, але видалені з папки apps (видалені лише вилучені файли, а не встановлені). Ось у принципі і все, що стосується вилучення цим способом.

Малюнок 5

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

Спосіб 2.Запускаємо той самий «ES Провідник». У верхній частині екрана знаходиться вибір розділів пам'яті (рисунок 6) або заходимо в меню « Локальне сховище(рисунок 7) і вибираємо пункт /Пристрій .


Малюнок 6 Малюнок 7

Далі треба перейти в system/app . Тут знаходяться всі програми, які встановлені на пристрої: як користувацькі, так і системні. Потім шукаємо потрібний APK-файл і копіюємо його в потрібну папку. Таким чином Ви отримаєте готовий APK-файл для інсталяції на інших гаджетах.

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

На цьому все.

Ми сподіваємося, що цей пост допоміг вирішити поставлене завдання і Вам вдалося отримати APK-файли з Android-пристрою. Якщо Вам відомі інші способи резервування програм або виникнуть подібні питання, напишіть нам.

Залишайтеся з нами попереду ще багато цікавого.

Багато хто з вас знає, що процес встановлення Android-програми простий - ви відкриваєте Google Play маркет, знаходите потрібну програмуабо гру, натискаєте на велику кнопку "Встановити" і все. Однак, програми для Android представлені у вигляді пакетів, які встановлюються також вручну. Ці пакети мають розширення «.apk» та їх практичне застосуваннячисельно. Наприклад, ви можете без проблем робити резервні копіїдодатків, які також зберігаються як apk-файли. Це навіть допоможе в тому випадку, якщо раптом несподівано додаток або гра зникли з Google Play, як це було з Flappy Bird. За бажання будь-хто може завантажити програму та встановити її на свій смартфон. Також apk-файли зручно встановлювати на таких пристроях, які штучно обмежені виробником. Amazon Kindle Fire або Nokia X).

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

  • 1. на Android-пристрій Google Play і завантажте програму, яку ви хочете витягти.
  • 2. Скачайте програму APK Extractor. Це безкоштовне та просте у використанні додаток.
  • 3. Відкрийте додаток APK Extractor і вкажіть будь-яку програму, яку ви хочете витягти. Можна зазначити відразу кілька додатків. Файли APK будуть збережені в папці ExtractedApks у пам'яті пристрою.

Вилучені APK файли тепер можна скопіювати на інший Android-смартфон або планшет і встановити за допомогою будь-якого файлового менеджера, такого як Astro чи ES File Explorer.

Багато користувачі Androidзнають, що за допомогою програми Titanium Backup можна витягнути програму з пристрою як apk файлу. Сьогодні ми розглянемо спосіб, за допомогою якого можна витягнути apk файл програми прямо з Google Play Store.

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

1. Google Chrome

Створюємо на робочому столі другий ярлик для Google Chrome.

Робимо по ярлику правий клік, вибираємо «Властивості». У полі «Об'єкт» дописуємо через пропуск такі команди:

Ignore-certificate-errors

Allow-running-insecure-content

Вийде приблизно так:

...\chrome.exe" --ignore-certificate-errors --allow-running-insecure-content

Натискаємо «Застосувати» та «ОК».

Після цієї операції потрібно перезапустити браузер, закривши при цьому всі запущені екземпляри програми.

2. Ім'я облікового запису Google та ID пристрою

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

З ящиком все зрозуміло, а щоб дізнатися ID пристрою, відкрийте телефон на своєму смартфоні і наберіть *#*#8255#*#*

На екрані необхідно знайти рядок «Device ID:»

Ідентифікаційним номером є комбінація літер та цифр, що настає після «android-». Наприклад, якщо у рядку ви бачите "Device ID: android-1122aa33bb445577", то ідентифікатором є комбінація "1122aa33bb445577". Запишіть комбінацію.

Якщо з якихось причин у вас не вдалося дізнатися ваш Device ID вказаним вище способом, ви можете просто скачати програму Device ID в Google Play Store.

3. APK Downloader

Завантажуємо розширення для браузера під назвою APK Downloader.

У вікні вводимо адресу нашого Google акаунта, тобто адресу пошти. Пароль (ага, страшно), а також Device ID. Після цього натискаємо "Login".

У наступному вікні вибираємо свою країну та оператора стільникового зв'язку, після чого натискаємо "Save Settings". Далі має з'явитися вікно із повідомленням про успішну активацію розширення.

4. Google Play Store

Тепер заходимо на наш улюблений Google Play Store і вибираємо будь-яку безкоштовну програму. У правій частині адресного рядкабраузера з'явиться характерний вид зелена голова зі стрілочкою.

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

Впевнитися в абсолютній порядності розробника розширення APK Downloader не є можливим, тому вводьте дані свого облікового запису на власний страх і ризик. Крім того, подібні дії в принципі порушують правила. використання Google Play Store.

Інтерполяція, інтерполювання— в обчислювальній математиці спосіб знаходження проміжних значень величини наявного дискретного набору відомих значень.

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

Існує багато звичайно різницевих методів інтерполяції. Найбільш
поширеним є метод Ньютона для інтерполяції "вперед" (метод Ньютона - Грегорі). Інтерполяційний поліном у цьому випадку має вигляд:

Коефіцієнти З знаходимо за формулою:

Реалізація програми мовою C#:
using System; namespace Interpolation (class Program…

Програма розділена на два потоки, в одному з яких виконується сортування, а в іншому перемальовка графічного інтерфейсу. Після натискання на кнопку «Сортувати», у програмі викликається метод «RunSorting», у якому визначається алгоритм сортування та створюється новий потік із запущеним у ньому процесом сортування.
private void RunSo…

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

Нижче кілька фото зроблених під час збирання пристрою.

Котушка намотана проводом 0,08 мм приблизно 2000 витків на трубі ПВХ діаметром 50 мм і висотою 200 мм.

Як термінал була використана пластина зі старого жорсткого диска. Все інше збиралося за схемою, яка знаходиться в самому низу сторінки.

Перший варіант харчувався від блоку живлення старого комп'ютера, напругою 12 В. Потім був зроблений окремий блок живлення, напругою в 30 В і з вбудованим охолодженням.

Схема пристрою:

Спільне використання ресурсів (CORS) – це специфікація W3C, яка дозволяє здійснювати міждоменний зв'язок у браузері. Створюючи поверх об'єкта XMLHttpRequest, CORS дозволяє розробникам працювати з однаковими ідіомами, як запити з одним доменом. Варіант використання для CORS простий. Уявіть, що на alice.com є деякі дані, які сайт bob.com хоче отримати. Цей тип запиту зазвичай не допускається відповідно до тієї ж політики походження браузера. Однак, підтримуючи запити CORS, alice.com може додати кілька спеціальних заголовків відповідей, які дозволяють bob.com отримати доступ до даних. Як видно з цього прикладу, підтримка CORS вимагає координації між сервером та клієнтом. На щастя, якщо ви розробник на стороні клієнта, ви захищені від більшості цих деталей. У решті цієї статті показано, як клієнти можуть виконувати запити з крос-початком і як сервери можуть налаштовувати себе підтримки CORS. Продовж…

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

© 2022 androidas.ru - Все про Android