Огляд засобів запуску та налагодження програм на Android. Налагодження Android програми на смартфоні Налаштування Android-пристрою для роботи з ADB

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

Ця стаття підійде вам у 2-х основних випадках:

1) Ваш комп'ютер недостатньо потужний для швидкої роботиемулятора (чи то в Android Studio або Eclipce);

2) У вас завалявся старенький Android-смартфон і ви не знаєте, куди його діти (дарувати/викидати шкода).

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

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

Після встановлення драйверів, підключіть USB-пристрій до комп'ютера. Усі необхідні налаштування запустяться і автоматично встановляться.

Далі запускаємо Android Studio. Ідемо в Tools --- Androidі ставимо галочку навпроти рядка "Enable ADB Integration" (ADB – Android Debug Bridge). Після цього потрібно налаштувати Android Studio так, щоб при натисканні на зелену кнопку "Run" ваш додаток відразу встановлювався і запускався на підключеному смартфоні. Ідемо в Run --- Edit Configurations. З'являється наступне вікно:

і в блоці "Target Device" ставимо галочку на пункт " USB Deviceі тиснемо OK.

Все, вітаю, якщо ви все зробили правильно, драйвера визначили ваш пристрій, то при натисканні на кнопку запуску програми (виділено червоним):

програму встановити і запуститися на підключеному пристрої.

Після цього вам залишається лише взяти в руки підключений апарат та тестувати свій програмістський твір.

Варто відзначити, що якщо програма встановилася, але автоматично не запустилася, то швидше за все, це означає, що десь у додатку є помилка (хоча вона може бути і не підсвічена в Android Studio, наприклад, просто пропущений важливий шматок коду).

Сподіваюся ця стаття вам знадобиться. Удачі у починаннях!

Останнє оновлення: 09.03.2017

Стандартний проект, створений у минулій темі, вже містить певний функціонал. Правда, цей функціонал майже нічого не робить, тільки виводить на екран рядок Hello world!.

У студії за промовчанням повинен бути відкритий файл activity_main.xml, який містить визначення графічного інтерфейсу програми.

Якщо файл відкритий у режимі дизайнера, а в центрі Android Studio відображається дизайн програми, то нам потрібно переключити вигляд файлу на текстовий. Для перемикання режиму з текстового в графічний і назад внизу є дві кнопки Design і Text.

Тепер змінимо код програми, щоб вона відображала рядок "Привіт Андроїд". Для цього змінимо код у файлі activity_main.xml, який зараз виглядає приблизно так:

Змінимо в цьому файлі визначення елемента TextView, який відповідає за виведення текстової інформації на екран мобільного апарату. Сам текст, що виводиться, задається за допомогою атрибута android:text . Тому змінимо весь код у файлі activity_main.xml таким чином:

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

Режим розробника на телефоні

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

Для використання мобільного пристрою для тестування на робочу машину потрібно встановити драйвер. Якщо смартфон від Google - Nexus 5/6/5x/6P або Google Pixel, то для його підтримки необхідно через SDK Manager встановити пакет Google Usb Driver. Якщо ж виробник апарату - інший вендор, то треба встановити USB-драйвер, який поставляється даним вендором. Якщо ОС – Windows 10, то там, як правило, система сама може знайти через центр оновлень драйвер та встановити його.

За замовчуванням опції розробника на смартфонах приховані. Щоб зробити їх доступними, треба зайти до Settings > About phone (Установки > Про телефон)і сім разів натиснути Build Number (Номер збирання).

Поверніться до попереднього екрану, і там ви побачите доступний пункт Developer options (Для розробника).

Перейдемо до пункту Для розробниківі включимо можливість налагодження по USB:

Запуск програми

Підключимо пристрій з ОС Android (якщо ми тестуємо на реальному пристрої) і запустимо проект, натиснувши зелену стрілку на панелі інструментів.

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

Виберемо пристрій і натисніть кнопку OK. І після запуску ми побачимо нашу програму на екрані пристрою.

Раніше я написав. Можна вирішити проблему кардинально, не використовувати емулятор, а тестувати відразу на мобільному пристрої під керуванням android. У мене є чудовий HTC, під нього і налаштовував. Отже, для того, щоб запускати програми на фізичному пристрої, потрібно:

  1. Увімкніть функцію налагодження по USB. Зробити це можна, зайшовши в меню Налаштування -> Програми -> Розробка та встановивши галочку «Налагодження USB»
  2. Дочекатися установки драйвера
  3. Вимкнути та знову підключити телефон до комп'ютера.

Щоб перевірити, чи телефон бачимо комп'ютером, потрібно зробити наступне:

Якщо у вас саме так, то можна скористатися спеціальною програмою: PdaNet. () Зазвичай вона використовується для того, щоб використовувати інтернет від телефону з комп'ютера, але так вийшло, що вона містить величезну кількість драйверів для телефонів. У мене при установці запитала модель пристрою, і далі вискочив гарний червоний балун із попередженням про те, що драйвер не тестувався, і все може погано скінчитися, але ні – все добре, встановилося. Після цього я ще раз запустив перевірку (команда вища) і в списку пристроїв з'явився мій телефон.

Як працювати з Eclipse? Насправді, все вже зроблено — просто запускаємо проект і він відкривається на телефоні.

Декомпіляція та налагодження Android-додатків

Alexander Antipov

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


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

Вимоги до тестового середовища:

  • Операційна система: Windows/Mac OS X/Linux
  • Java (рекомендується версія 1.7)
  • IDE (Eclipse, IntelliJ IDEA, Android Studio)
  • Android SDK (https://developer.android.com/sdk/index.html?hl=i)
  • APKTool (https://code.google.com/p/android-apktool/)/APK Studio (http://apkstudio.codeplex.com)
  • Пристрій / емулятор на базі Android

У статті буде використана наступна конфігурація: Windows 8, Android Studio та IntelliJ IDEA. Пристрій: Nexus 4 с Android версії 4.4.4. Рекомендую утиліти додати в змінну оточення PATH, щоб полегшити та прискорити доступ до цих інструментів.

Android application package (APK), який використовується у статті, можна завантажити звідси: com.netspi.egruber.test.apk .

Налаштування пристрою

Інструкція нижче допоможе підготувати пристрій для експериментів.

Активація розділу Developer Options

Для початку на Android-пристрої має бути дозволено налагодження через USB (опція USB debugging), що дозволить "спілкуватися" з девайсом за допомогою інструментів з набору Android SDK. Однак перед цим необхідно активувати розділ Developer options. На пристрої зайдіть у розділ Settings > About Phone і клацніть кілька разів на пункт Build Number, після чого має з'явитися повідомлення про те, що розділ Developer options активовано.

Рисунок 1: Щоб активувати розділ Developer options, необхідно кілька разів натиснути на Build number

Дозвіл налагодження через USB

Щоб вирішити налагодження через USB-порт, зайдіть у розділ Settings > Developer options і позначте прапорець навпроти USB debugging.

Рисунок 2: Увімкнення опції USB debugging

Підключення пристрою та запуск ADB

Після підключення пристрою до комп'ютера через USB-порт, з'явиться повідомлення "USB debugging connected on the device". Також слід перевірити, чи можна підключитися до пристрою за допомогою Android Debug Bridge (ADB), що входить до складу Android SDK ( пакет Android SDK Platform-tools). У командному рядку введіть наступну команду:

Пристрій має відображатися у списку.

Рисунок 3: Список підключених пристроїв

Якщо пристрій не відобразився в списку, то найімовірніша причина неправильно встановлених драйверах(У Windows). В залежності від пристрою драйвер можна знайти або в Android SDK або на сайті виробника.

Перевірка програми на налагодження

Перед налагодженням Android-програм спочатку необхідно перевірити, чи є така можливість. Перевірку можна виконати декількома способами.

Перший спосіб – запустити Android Device Monitor, що входить до складу Android SDK (у папці інструментів). В Windows файлназивається monitor.bat. При відкритті Android Device Monitor пристрій з'явиться у розділі Devices.

Рисунок 4: Android Device Monitor

Якщо якусь програму на пристрої можна налагодити, ця програма також з'явиться у списку. Я створив тестову програму, але список порожній, оскільки програму налагоджувати не можна.

Другий спосіб перевірити програму на можливість налагодження - досліджувати файл AndroidManifest.xml з пакета програми (APK, Android application package). APK є zip-архівом, що містить всю інформацію, необхідну для запуску програми на Android-пристрої.

Щоразу, коли програми завантажується з Google Play Store, також завантажується та пакет програми. Всі завантажені файли APK зазвичай зберігаються на пристрої в папці /data/app. Якщо у вас немає прав суперкористувача, ви не зможете отримати список файлів із директорії /data/app. Хоча, якщо ви знаєте ім'я APK-файлу, можете скопіювати його за допомогою утиліти adb. Щоб дізнатися ім'я APK-файлу, введіть наступну команду:

З'явиться командний рядокпристрої. Потім введіть наступну команду:

pm list packages -f

З'явиться список усіх пакетів на пристрої.

Рисунок 5: Перелік пакетів на пристрої

Дивлячись на список, знаходимо тестовий додаток.

Малюнок 6: Пакет створеного тестового додатка (виділено білим)

Тепер потрібно скопіювати файл пакета. Відкриваємо шелл та вводимо наступну команду:

adb pull /data/app/[.apk file]

Малюнок 7: Копіюємо APK-файл із пристрою в систему

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

В APK Studio клацніть на маленьку зелену іконку, задайте ім'я проекту та вкажіть шлях до файлу APK. Потім вкажіть, щоб зберегти проект.

Рисунок 8: Створення нового проекту в APK Studio

Після відкриття APK виберіть файл AndroidManifest.xml і перегляньте параметри тега application. Якщо прапорець android:debuggable відсутній (або присутній, але встановлено значення false), значить програму налагоджувати не можна.

Малюнок 9: Вміст файлу AndroidManifest.xml

Модифікація файлу AndroidManifest.xml

За допомогою утиліти apktool або APK Studio ми можемо модифікувати файли та упаковувати вміст у пакет. Зараз ми змінимо файл AndroidManifest.xml так, щоб програму можна було налагоджувати. Додаємо всередину тега application рядок android:debuggable="true".

Рисунок 10: Змінюємо вміст тега application

Після додавання прапора натискаємо на іконку «молоток» і наново збираємо пакет. Перезібраний пакет буде в директорії build/apk.

Рисунок 11: Повторне складання пакета завершилося успішно

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

Тепер потрібно встановити пакет, який було перезбрано. Спочатку видаляємо стару програму за допомогою наступної команди:

adb pm uninstall

Потім встановлюємо новий пакет:

adb install [.apk file]

Також можна видалити та встановити пакет однією командою:

adb install -r [.apk file]

Рисунок 12: Встановлення пакета

Перевірте, щоб перевстановлена ​​програма коректно запускалася на пристрої. Якщо все працює, переходимо назад до Android Device Monitor, де має з'явитися тестовий додаток.

Рисунок 13: Тепер перезібрану програму можна налагоджувати

Налаштування середовища розробки (IDE)

Тепер до перезібраної програми можна підчепити налагоджувач, але спочатку потрібно створити проект у середовищі розробки (у статті використовується IntelliJ IDEA). Створюємо новий проект. У полі Application name указуємо довільне ім'я. У полі Package name вказуємо ім'я, яке точно збігається з ієрархією папок перезбраного пакета.

Рисунок 14: Створення нового проекту в IntelliJ IDEA

Зазвичай ім'я файлу APK співпадає зі структурою папок, хоча, якщо ви не впевнені, в APK Studio перевірте ієрархію директорій до папки, де знаходяться файли програм. У моєму випадку ім'я та структура папок повністю збігаються (com.netspi.egruber.test).

Рисунок 15: Ієрархія директорій тестової програми

Зніміть прапорець Create Hello World Activity і завершіть створення проекту (всі інші параметри залишаються за замовчуванням). Новий проект має виглядати приблизно так:

Рисунок 16: Ієрархія папок та файлів нового проекту

Після створення проекту потрібно додати вихідний код з APK-файлу для того, щоб налагоджувач «знав» імена символів, методів, змінних і т.д. з оригіналом). Після декомпіляції вихідний текст імпортується у середовище розробки (IDE).

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

Для початку необхідно перетворити APK на jar-файл. Потім ми за допомогою java-декомпілятор отримаємо вихідний текст програми. Перетворення на jar будемо робити за допомогою утиліти dex2jar. У dex2jar є файл d2j-dex2jar.bat, який використовується для конвертування APK в jar. Синтаксис команди досить простий:

d2j-dex2jar.bat [.apk file]

Рисунок 17: Перетворення APK на jar

Потім відкриваємо або перетягуємо отриманий файл JD-GUI (це java-декомпілятор).

Малюнок 18: Структура jar-файлу

Jar-файл повинен відобразитись у вигляді ієрархічної структури, усередині якої знаходяться java-файли з читабельним вихідним кодом Заходимо в File > Save All Sources, щоб упакувати всі вихідні тексти у zip-архів.

Рисунок 19: Збереження вихідних текстів декомпільованого файлу

Після збереження вихідних текстів розпаковуємо архів в окрему директорію.

Малюнок 20: Розпакований архів

Тепер потрібно імпортувати обидві директорії до створеного раніше проекту в IDE. В IntelliJ заходимо в папку src і копіюємо вміст розпакованого архіву (дві директорії).

Рисунок 21: Обидві папки скопійовані до директорії src

Повертаючись до Intellij, бачимо оновлений проект.

Малюнок 22: У проекті з'явилися вихідні тексти

Якщо ми клацнемо на якийсь елемент зі списку, то побачимо вихідний текст. Як видно на скріншоті нижче (вихідний текст класу LoginActivity), вихідний код за допомогою ProGuard.

Рисунок 23: Об'єднаний вихідний текст класу LoginActivity

Підключення відладчика

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

Малюнок 24: Поставлено точку зупинки на обфусцований метод

Як тільки з'явилася точка зупинки, підключаємо відладчик до процесу на пристрої, клацнувши на іконку з екраном у правому верхньому кутку(на вашому IDE іконка може відрізнятись).

Рисунок 25: Підключаємо наладчик до процесу

Рисунок 26: Перелік процесів для підключення відладчика

Після вибору процесу налаштовувач приєднається до пристрою.

Рисунок 27: Налагоджувач підключено до процесу, запущеного на пристрої

У текстове поле я вводитиму число 42 (якщо пам'ятайте, на відповідному методі стоїть точка зупинки).

Рисунок 28: У текстове поле вводимо число 42

Після натискання на кнопку «Enter Code» виконання програми перерветься на точці зупинки, оскільки налагоджувач «обізнаний», який метод викликається на пристрої. Скомпільований Android-додаток містить налагоджувальну інформацію (наприклад, імена змінних), доступну будь-якому відладчику, сумісному з Java Debug Wire Protocol (JDWP). Якщо в програмі дозволено налагодження, налагодник, сумісний з JDWP (в цю категорію потрапляє більшість налагоджувачів, що йдуть у складі середовищ розробки для Java), зможе приєднатися до віртуальній машині Android-програми, а потім зчитувати та виконувати налагоджувальні команди.

Рисунок 29: Спрацювала точка зупинки

На скріншоті нижче видно число, яке ми ввели в текстовому полі.

Рисунок 30: Перелік змінних поточного екземпляра класу

Висновок

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

Встановлення пристроїв