Как посмотреть код apk файла

Обновлено: 04.07.2024

Жесткий диск на моем ноутбуке просто разбился, и я потерял весь исходный код приложения, над которым я работал последние два месяца. Все, что у меня есть, это файл APK, который хранится в моем письме, когда я отправил его другу.

Есть ли способ извлечь исходный код из этого файла APK?

ОТВЕТЫ

Ответ 1

Процедура декодирования .apk файлов, пошаговый метод:

Шаг 1:

Создайте новую папку и скопируйте файл .apk, который вы хотите декодировать.

Теперь переименуйте расширение этого файла .apk в .zip (например, переименуйте из filename.apk в filename.zip) и сохраните его. Теперь вы можете получить доступ к файлам classes.dex и т.д. На этом этапе вы можете видеть графические объекты, но не файлы XML и Java, поэтому продолжайте.

Шаг 2:

Теперь распакуйте этот файл .zip в ту же папку (или NEW FOLDER).

Скачайте dex2jar и распакуйте его в ту же папку (или в NEW FOLDER).

Переместите файл classes.dex в папку dex2jar.

Теперь откройте командную строку и измените каталог на эту папку (или NEW FOLDER). Затем напишите d2j-dex2jar classes.dex (для терминала Mac или Ubuntu напишите ./d2j-dex2jar.sh classes.dex ) и нажмите клавишу ввода. Теперь у вас есть файл classes.dex.dex2jar в той же папке.

Загрузите декомпилятор java, дважды щелкните jd-gui, щелкните открытый файл и откройте файл classes.dex.dex2jar из этой папки: теперь вы получаете файлы классов.

Сохраните все эти файлы классов (в jd-gui выберите Файл → Сохранить все источники) под именем src. На этом этапе вы получаете исходный код Java, но файлы .xml по-прежнему не читаются, поэтому продолжайте.

Шаг 3:

Теперь откройте еще одну новую папку

Поместите в файл .apk, который вы хотите декодировать

Загрузите последнюю версию apktool и окно установки apktool (обе можно скачать по одной и той же ссылке) и поместите их в одну папку

Откройте командное окно

Теперь запустите команду как apktool if framework-res.apk (если у вас ее нет, получите ее здесь) и затем

apktool d myApp.apk (где myApp.apk обозначает имя файла, который вы хотите декодировать)

теперь вы получаете папку с файлами в этой папке и можете легко читать файлы apk xml.

Шаг 4:

Это не какой-либо шаг, просто скопируйте содержимое обеих папок (в данном случае обе новые папки) в одну

и наслаждайтесь исходным кодом.

Ответ 2

Это альтернативное описание - на всякий случай, когда кто-то застрял над описанием выше. Выполните следующие шаги:

Промежуточный результат: файлы ресурсов, AndroidManifest.xml

Промежуточный результат: classes.dex

Промежуточный результат: classes_dex2jar.jar

Результат: исходный код

Примечание: не разрешается декомпилировать пакеты сторонних поставщиков; это руководство предназначено для восстановления личного исходного кода только из файла APK; наконец, полученный код, скорее всего, будет запутан.

Ответ 3

В то время как вы можете декомпилировать ваш файл APK , вы, вероятно, столкнетесь с одной большой проблемой:

он не вернет код, который вы написали. Вместо этого он будет возвращать все, что встраивается компилятором, с переменными, заданными случайными именами, а также функциями, заданными случайными именами. Это может занять значительно больше времени, чтобы попытаться декомпилировать и восстановить его в коде, который у вас был, чем начать.

К сожалению, такие вещи убили много проектов.
В будущем я настоятельно рекомендую изучить систему управления версиями, например CVS, SVN и git и т.д.

и как создать резервную копию.

Ответ 4

Просто установите и получайте удовольствие. Я думаю, что это самый простой способ декомпилировать приложение.

Ответ 5

apktool - лучшая вещь, которую вы можете попробовать. Я сохранил некоторые XML с ним, но, честно говоря, я не знаю, как это будет работать с кодом .java.

Я бы порекомендовал вам иметь хранилище кода, даже если вы единственный кодер. Я использую Project Locker для своих собственных проектов. Это дает вам бесплатные репозитории SVN и GIT.

Ответ 6

В этих двух статьях описывается, как совместить использование apktool и dex2jar для получения файла APK и создания проекта Eclipse, который может его собрать и запустить.

  1. Используйте apktool чтобы получить файлы ресурсов из apk
  2. Используйте dex2jar чтобы получить файл jar, содержащий классы в формате, который понравится Eclipse.
  3. Создайте проект Eclipse, наведите его на файлы ресурсов и новый файл jar
  4. Откройте файл jar утилитой zip и удалите существующие ресурсы
  5. Откройте файл JDGui с JDGui чтобы просмотреть исходный код
  6. Возьмите любой исходный код из JDGui , JDGui его в класс внутри Eclipse и измените его
  7. Удалите этот класс из файла jar (чтобы один и тот же класс не определялся несколько раз)
  8. Запустить его.

Ответ 7

apktool будет работать. Вам даже не нужно знать хранилище ключей, чтобы извлечь исходный код (что немного страшно). Основной недостаток заключается в том, что источник представлен в формате Smali вместо Java. Другие файлы, такие как значок и main.xml, проходят отлично, хотя, возможно, стоит потратить время, чтобы хотя бы восстановить их. В конечном итоге вам, скорее всего, придется перезаписать Java-код с нуля.

Здесь вы можете найти apktool здесь. Просто скачайте apktool и соответствующий помощник (для Windows, Linux или Mac OS). Я рекомендую использовать такой инструмент, как 7-zip, чтобы распаковать их.

Ответ 8

Есть несколько способов сделать это:

Используйте функцию "Профиль или Отладка APK" в Android Studio 3.0.

Это позволяет открывать и изучать APK в Android Studio. Классы декомпилированы в smali. Ресурсы не извлекаются, и такие вещи, как "Перейти к определению", "Найти все ссылки" и отладка, не работают без исходного кода (android studio 3.0 canary 9). Некоторые дополнительные функции smali могут работать с smallidea.

android-studio

select-file

code

Jadx декомпилирует код в данном APK в исходные файлы Java.

jdax-img

Apktool - это инструмент командной строки, который извлекает ресурсы и декомпилирует код в smali для данного apk. Вы также можете перекомпилировать, используя apktool. Вот пример этого в действии:

Ответ 9

Может быть, легко увидеть источник:

В Android Studio 2.3, Build → Analyze APK → Select the apk that you want to decompile .
Вы увидите исходный код.

Ответ 10

Я покажу вам другой способ декомпилировать файлы .apk.

Вы можете выполнить первые 2 шага из " prankul garg". Таким образом, у вас есть еще одна возможность:

Шаг 3 ':

Загрузите "JD-GUI" , который легко найти. Откройте файл .jar в файле "jd-gui.exe". (Файл > Открыть файл > 'нашел ваш файл .jar). После этой процедуры вы можете сохранить все ресурсы в файле .zip.

1st - вам нужно переименовать файл .apk в .zip

2nd - Вы должны декодировать файл .dex (если хотите, декодируйте файл .apk на dex2jar, что возможно)

3rd - вам нужно декодировать .jar файл с JD-GUI

Ответ 11

Ниже ОНЛАЙН:

он делает ВСЕ одним щелчком мыши: декомпилировал .java файлы + ресурсы + xml (в одном .zip файле) с очень хорошим декомпилятором (jadx возвращает java-код в местах/функциях, где другие компиляции возвращают комментарии внутри функции типа "невозможно декомпилировать" или какой-либо ассемблер/машинный код Android)

Ответ 12

Сначала я попробовал сайт, упомянутый в принятом ответе, но у меня это не получилось.

Ответ 13

Я лично рекомендую показать Java Android App, чтобы получить исходный код. Вы можете скачать его из игрового магазина или отсюда

Ответ 14

Apktool для обратной инженерии сторонних, закрытых, бинарных приложений для Android.

Он может декодировать ресурсы до почти первоначальной формы и восстанавливать их после внесения некоторых изменений.

Это позволяет отлаживать smali-код шаг за шагом. Кроме того, упрощается работа с приложением из-за проектной структуры файла и автоматизации некоторых повторяющихся задач, таких как создание apk и т.д.

Ответ 15

Некоторые ограничения, очевидно, существуют из-за службы онлайн-характера: вы можете извлекать и исследовать активы и файл манифеста, но невозможно перекомпилировать приложение на данный момент.

Тем не менее, это бесполезный способ "открыть" приложение для Android.

Ответ 16

Вы можете попробовать DexPatcher. Он даже интегрируется с Android Studio. Он использует Apktool и Dex2Jar внутренне.
Вы также можете использовать эти инструменты самостоятельно. Apktool декомпилирует apk и извлекает файлы .dex, которые могут быть преобразованы в jar с использованием Dex2Jar. Jar можно декомпилировать, используя JD-GUI. Вы можете увидеть Java-код с помощью этого инструмента. Хотя сходство декомпилированного кода с реальным кодом не может быть гарантировано. Есть некоторые продвинутые методы обфускации кода, доступные на рынке, которые испортили код, чтобы затруднить декомпиляцию/понимание. например. Proguard

Ответ 17

Самым простым способом является использование Apk OneClick Decompiler. Это пакет инструментов для декомпиляции и дизассемблирования APK (пакетов Android).

ФУНКЦИИ

  • Все функции интегрированы в контекстное меню Windows.
  • Декомпилируйте классы APK в исходные коды Java.
  • Разберите APK, чтобы смали код и расшифруйте его ресурсы.
  • Установите APK на телефон, щелкнув правой кнопкой мыши.
  • Перекомпилируйте APK после редактирования кода и/или ресурсов. Во время перекомпиляции:
  • Оптимизировать PNG изображения
  • Войти apks
  • Zipalign

ТРЕБОВАНИЯ

Java Runtime Environment (JRE) должна быть установлена.

Вы можете скачать его по этой ссылке Apk OneClick Decompiler

Ответ 18

Я нашел следующее как самый простой метод:

  1. Переименуйте ваш app.apk в app.zip (измените расширение с apk на zip)
  2. Распакуйте zip файл в папку
  3. Используйте инструмент JADX, чтобы прочитать исходный код, представленный в файле classes.dex.

Ответ 19

  1. Выберите Приложения, в разделе "Установленные приложения" выберите свое приложение. Если его там нет, вы можете загрузить APK.
  2. Выберите "Извлечь APK"
  3. Выберите "Распаковать APK"
  4. Выберите "Декомпилировать с помощью Jadx". Это может занять несколько секунд или несколько минут в зависимости от скорости вашего устройства

После этого вы можете просмотреть исходный код, загрузить его на другой компьютер с elFinder или выполнить поиск по нему с помощью Lucene.

В дополнение к Jadx есть декомпиляторы CFR и Fernflower.

Ответ 20

Студия Android предлагает вам проанализировать любой файл apk.

1 - В меню сборки выберите параметр анализировать apk и выберите файл apk. 2 - В результате вы получите файл classes.dex и другие файлы. 3 - Нажмите на classes.dex, который предоставит вам список папок, пакетов, библиотек и файлов. 4 - Из настроек android studio установите плагин под названием "Dex to Jar" 5 - нажмите на любой файл активности вашего извлеченного проекта и выберите "dex to jar" в меню сборки.

Это приведет к фактическому коду вашего Java файла.

Ответ 21

в зависимости от вашего состояния, если ваш Android APK:

Выбор1: с помощью онлайн-сервиса

автоматически декодировать из АПК в исходный код Java

upload файл apk + нажать Run + подождать некоторое время + нажать Download чтобы получить zip + unzip ->

ваш ожидаемый исходный код Java

Choice2: декомпилировать/взломать самостоятельно

Используйте соответствующий инструмент для декомпиляции/взлома самостоятельно:

используйте jadx / jadx-gui конвертировать apk в java sourcecode

скачайте jadx-0.9.0.zip, затем распакуйте в bin/jadx , затем:

  • режим командной строки:
    • в терминальном запуске: jadx-0.9.0/bin/jadx -o output_folder/path_to_your_apk/your_apk_file.apk
    • output_folder покажет декодированные sources и resources
      • sources/com// - ваш ожидаемый java sourcecode
      • дважды щелкните для запуска jadx-0.9.0/bin/jadx-gui (Linux jadx-gui.sh /Windows jadx-gui.bat )
      • открыть файл apk
      • это будет автоматическое декодирование → увидеть ожидаемый исходный код Java
      • save all или save as Gradle project


      основной метод 3 steps :

      1. apk/app to dex
      2. dex to jar
      3. jar to java src

      Шаг 1: apk/app to dex

      использовать инструмент ( FDex2 /DumpDex) для выгрузки/извлечения (одного или нескольких) файла dex из запущенного приложения

      подготовить среду

      выкинуть dex из запущенного приложения

      запустите FDex2 затем щелкните по вашему имени apk, чтобы позже включить/захватить dex

      • в своей корневой папке обычно найдет несколько файлов dex

      Step2: dex to jar

      используйте инструмент ( dex2jar ), чтобы преобразовать (определенный, содержащий логику приложения) файл dex файл jar

      загрузить dex2jar получил dex-tools-2.1-SNAPSHOT.zip, распаковать получил dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh , затем

      sh dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh -f your_dex_name.dex

      Шаг 3: jar to java src

      используйте один из инструментов:

      конвертировать jar в java src

      для преобразования из jar в java src:

      Jadx > Procyon > CRF >> JD-GUI

      поэтому рекомендуем использовать: Jadx / jadx-gui

      • двойной щелчок для запуска jadx-gui
      • открыть файл dex
      • File → save all


      экспортированный источник Java:


      Более подробное объяснение можно посмотреть в моей онлайн-книге китайского учебника:

      жесткий диск на моем ноутбуке просто разбился, и я потерял весь исходный код приложения, над которым я работал в течение последних двух месяцев. У меня есть только APK файл, который хранится в моей электронной почте, когда я отправил его другу.

      есть ли способ, чтобы извлечь исходный код из этого файла APK?

      процедура декодирования .файлы apk, пошаговый метод:

      Шаг 1:

      создайте новую папку и скопируйте ее.файл apk, который вы хотите декодировать.

      теперь переименуйте расширение этого .apk файл .zip (например, переименовать из filename.apk для имени файла.ZIP) и сохраните его. Теперь вы можете доступ к классам.DeX файлы и т. д. На этом этапе вы можете видеть drawables, но не xml и java-файлы, поэтому продолжайте.

      Шаг 2:

      теперь этот экстракт .zip-файл в той же папке (или новой папке).

      скачать dex2jar и извлечь его в ту же папку (или новую папку).

      ход занятия.dex файл на dex2jar папка.

      теперь откройте командную строку и измените каталог на эту папку (или новую папку). Тогда пиши d2j-dex2jar classes.dex (для Mac terminal или ubuntu напишите ./d2j-dex2jar.sh classes.dex ) и нажмите enter. Теперь у тебя есть занятия.Декс.dex2jar файл в той же папке.

      скачать Java decompiler, дважды щелкните по jd-gui, нажмите "Открыть файл" и откройте классы.Декс.dex2jar файл из этой папки: теперь вы получаете файлы классов.

      сохранить все эти файлы классов (в JD-gui нажмите Файл - > Сохранить все источники) по имени src. На этом этапе вы получаете источник java, но .xml-файлы по-прежнему не читаются, поэтому продолжайте.

      Шаг 3:

      теперь откройте другую новую папку

      положить в .apk файл, который вы хотите декодировать

      скачать последнюю версию apktool и окно установки apktool (оба могут быть скачано по той же ссылке) и поместите их в ту же папку

      откройте командное окно

      Теперь запустите команду apktool if framework-res.apk и далее

      apktool d myApp.apk (где myApp.apk обозначает имя файла, которое вы хотите декодировать)

      теперь вы получаете папку с файлами в этой папке и можете легко читать xml-файлы apk.

      Шаг 4:

      это не какой-либо шаг, просто скопируйте содержимое обеих папок (в данном случае обеих новых папок)в одну

      и наслаждайтесь исходным кодом.

      это альтернативное описание-на всякий случай, если кто-то застрял с описанием выше. Выполните следующие действия:

      промежуточный результат: файлы ресурсов, AndroidManifest.xml

      промежуточный результат: classes.dex

      результат исходный код

      Примечание: не разрешается декомпилировать пакеты сторонних производителей; это руководство предназначено для восстановления личного исходного кода только из файла APK; наконец, результирующий код, скорее всего, будет запутан

      пока вы можете декомпилировать свой APK файл, вы, вероятно, нажмете одну большую проблему:

      он не собирается возвращать код, который ты написал. Вместо этого он будет возвращать все, что компилятор встроил, с переменными, заданными случайными именами, а также функциями, заданными случайными именами. Это может занять значительно больше времени, чтобы попытаться декомпилировать и восстановить его в код, который у вас был, чем начать все сначала.

      к сожалению, такие вещи убил много проекты.
      В будущем я настоятельно рекомендую изучить систему управления версиями, например CVS, SVN и git etc.

      и как это сделать.

      существует также новое приложение на Play Store С помощью которого можно декомпилировать apk (системные приложения тоже) и просмотреть исходный код прямо на вашем смартфоне. Она сохраняет файлы на SD карту, так что вы можете просмотреть его на вашем компьютере. Для этого не Требуется root или что-то еще.

      просто установите и получайте удовольствие. Я думаю, что это самый простой способ декомпилировать приложение.

      apktool это лучшее, что вы можете попробовать. Я сохранил с ним xml, но, честно говоря, я не знаю, как он будет работать с ним .Java-код.

      Я бы рекомендовал вам иметь репозиторий кода, даже если вы единственный кодер. Я использовал Проект Locker для моих собственных проектов. Это дает вам бесплатный SVN и Git РЕПО.

      эти две статьи описывают, как сочетать использование apktool и dex2jar взять APK файл и создать проект Eclipse, который может создавать и запускать его.

      1. использовать apktool to получить файлы ресурсов из apk
      2. использовать dex2jar чтобы получить файл jar, содержащий классы в формате, который понравится Eclipse.
      3. создать проект Eclipse укажите его на файлы ресурсов и новый файл jar
      4. откройте файл jar с помощью утилиты zip и удалите существующие ресурсы
      5. откройте файл jar с помощью JDGui для просмотра исходного кода
      6. Возьмите любой исходный код, который вам нужен от JDGui , вставьте его в класс внутри Eclipse и изменить его
      7. удалите этот класс из файла jar (так что у вас нет одного и того же класса, определенного несколько раз)
      8. запустить его.

      apktool будет работать. Вам даже не нужно знать хранилище ключей для извлечения исходного кода (что немного страшно). Основным недостатком является то, что источник представлен в формате Smali вместо Java. Другие файлы, такие как значок и основной.xml проходит отлично, хотя и может стоить вашего времени, чтобы по крайней мере восстановить их. В конечном счете, вам, скорее всего, придется переписать свой Java-код с нуля.

      вы можете найти apktool здесь. Просто скачайте apktool и соответствующий помощник (для Windows, Linux или Mac OS). Я рекомендую использовать такой инструмент, как 7-Zip, чтобы распаковать их.

      есть несколько способов сделать это:

      используйте функцию "профиль или отладка APK" в Android Studio 3.0.

      Это позволяет открывать и исследовать APKs в Android Studio. Занятия декомпиляция в smali. Ресурсы не извлекаются, и такие вещи, как" перейти к определению"," найти все ссылки " и отладка не работают без исходного кода (android studio 3.0 canary 9). Некоторые дополнительные функции smali могут работать с smalidea.

      android-studio

      select-file

      code

      Jadx декомпилирует код в данном APK в исходные файлы java.

      jdax-img

      Apktool-это инструмент командной строки, который извлекает ресурсы и декомпилирует код в smali для данного apk. Вы также можете перекомпилировать с помощью apktool. Вот пример этого в действии:

      может быть легко увидеть источник:

      в Android studio 2.3, Build -> Analyze APK -> Select the apk that you want to decompile .
      Вы увидите, что это исходный код.

      Я покажу вам другой способ декомпилировать .apk файлы.

      вы можете выполнить первые 2 шага от "prankul Гарг". Так что у вас есть еще одна возможность:

      Шаг 3':

      скачать "JD-GUI", это легко найти. Открой свой .Джар файл в " JD-gui.исполняемый." (Файл > Открыть файл > ' нашел свой .Джар "файл"). После этой процедуры можно сохранить все ресурсы в .zip.

      1st-вы должны переименовать .apk до .zip

      2nd-вы должны декодировать .Декс!--2-- > файл (если хотите, расшифруйте .apk до dex2jar, это возможно)

      3rd-вы должны декодировать .Джар С JD-GUI

      ниже онлайн:

      это сделать все одним щелчком мыши: decompiled .java файлы + ресурсы + xml (в одном .zip-файл) с очень хорошим декомпилятором (Jadx возвращает java-код в местах/функциях, где другие компиляторы возвращают комментарии внутри функции, такие как "невозможно декомпилировать" или некоторый ассемблер/машинный код android)

      Apktool по инженерный 3-й партии, закрытые, бинарные приложения для Android.

      Он может декодировать ресурсы почти в исходную форму и перестраивать их после внесения некоторых изменений.

      Это позволяет отлаживать код smali шаг за шагом. Также это упрощает работу с приложением из-за проектной файловой структуры и автоматизации некоторых повторяющихся задач, таких как построение apk, так далее.

      сначала я попробовал сайт, упомянутый в принятом ответе, но это не сработало для меня.

      Я лично рекомендую Показать Java Android App чтобы получить исходный код. Вы можете скачать его из play store или из здесь

      некоторые ограничения, очевидно, существуют из-за сервиса "online nature": вы можете извлекать и исследовать активы и файл манифеста, но на данный момент невозможно перекомпилировать приложение.

      тем не менее, это без проблем способ "открыть" приложение для android.

      вы можете попробовать DexPatcher. Он даже интегрируется с Android Studio. Он использует Apktool и Dex2Jar внутренне.
      Вы также можете использовать эти инструменты независимо. Apktool декомпилирует apk и извлекает .файлы dex, которые могут быть преобразованы в jar с помощью Dex2Jar. Банку можно декомпилировать с помощью JD-GUI. Вы можете увидеть код Java с помощью этого инструмента. Хотя сходство декомпилированного кода с фактический код не может быть гарантирована. Есть некоторые продвинутые обфускации кода инструменты, доступные на рынке, которые испортят код, чтобы затруднить декомпиляцию / понимание. например. Должны быть

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

      image

      Автор: Eric Gruber

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

      Требования к тестовой среде:

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

      Настройка устройства

      Инструкция ниже поможет вам подготовить устройство для экспериментов.

      Активация раздела Developer Options

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab23d04aadb.jpg

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab23efed362.jpg

      Рисунок 1: Для того чтобы активировать раздел Developer options, необходимо несколько раз кликнуть на Build number

      Разрешение отладки через USB

      Чтобы разрешить отладку через USB-порт, зайдите в раздел Settings > Developer options и отметьте флажок напротив USB debugging.

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab245453b30.jpg

      Рисунок 2: Включение опции USB debugging

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

      Устройство должно отобразиться в списке.

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab20b6a88b8.jpg

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

      Если устройство не отобразилось в списке, то наиболее вероятная причина в некорректно установленных драйверах (в Windows). В зависимости от устройства драйвер можно найти либо в Android SDK, либо на сайте производителя.

      Проверка приложения на возможность отладки

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

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

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab20cb0ee69.jpg

      Рисунок 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

      Отобразится список всех пакетов на устройстве.

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab20e0c5cc5.jpg

      Рисунок 5: Перечень пакетов на устройстве

      Глядя на список, находим тестовое приложение.

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab20e6154fe.jpg

      Рисунок 6: Пакет созданного тестового приложения (выделено белым)

      Теперь необходимо скопировать файл пакета. Открываем шелл и вводим следующую команду:

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

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab20eb8d72e.jpg

      Рисунок 7: Копируем APK-файл с устройства в систему

      Теперь нужно открыть файл пакета и исследовать содержимое AndroidManifest.xml. К сожалению, мы не можем просто так распаковать архив, поскольку APK-файл закодирован в бинарном формате. Для раскодировки чаще всего используется утилита apktool, хотя я использую APK Studio, поскольку у этого приложения дружелюбный графический интерфейс. Далее в статье будет рассказываться об APK Studio.

      В APK Studio кликните на маленькую зеленую иконку, задайте имя проекту и укажите путь к APK файлу. Затем укажите пусть для сохранения проекта.

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab20f0921cb.jpg

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

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

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab20f7d225c.jpg

      Рисунок 9: Содержимое файла AndroidManifest.xml

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

      При помощи утилиты apktool или APK Studio мы можем модифицировать файлы и упаковывать содержимое обратно в пакет. Сейчас мы изменим файл AndroidManifest.xml так, чтобы приложение можно было отлаживать. Добавляем внутрь тега application строчку android:debuggable="true".

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab20fc42d15.jpg

      Рисунок 10: Изменяем содержимое тега application

      После добавления флага кликаем на иконку «молоток» и заново собираем пакет. Пересобранный пакет будет находиться в директории build/apk.

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab21012ace5.jpg

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

      После пересборки пакет подписывается и его можно заново установить на устройстве (все Android-приложения должны быть подписаны). Большинство приложений не проверяет сертификат, при помощи которого происходит подпись. В противном случае необходимо изменить код, выполняющий эту проверку.

      Теперь нужно установить пересобранный пакет. Вначале удаляем старое приложение при помощи следующей команды:

      adb pm uninstall[package name]

      Затем устанавливаем новый пакет:

      adb install [.apk file]

      Также можно удалить и установить пакет одной командой:

      adb install -r [.apk file]

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab210595029.jpg

      Рисунок 12: Установка пересобранного пакета

      Проверьте, чтобы переустановленное приложение корректно запускалось на устройстве. Если все работает, переходим обратно в Android Device Monitor, где должно появиться тестовое приложение.

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab210a2d024.jpg

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

      Настройка среды разработки (IDE)

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

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab210f9153d.jpg

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

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab21133b456.jpg

      Рисунок 15: Иерархия директорий тестового приложения

      Снимите флажок «Create Hello World Activity» и завершите создание проекта (все остальные параметры остаются по умолчанию). Новый проект должен выглядеть примерно так:

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab21173f8b3.jpg

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

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

      Получение исходных текстов из пакета приложения

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

      d2j-dex2jar.bat [.apk file]

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab211c465e4.jpg

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

      Затем открываем или перетаскиваем полученный файл в JD-GUI (это java-декомпилятор).

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab211fdc6b0.jpg

      Рисунок 18: Структура jar-файла

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

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab2122f1cbe.jpg

      Рисунок 19: Сохранение исходных текстов декомпилированного файла

      После сохранения исходных текстов распаковываем архив в отдельную директорию.

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab21261c3a2.jpg

      Рисунок 20: Распакованный архив

      Теперь нужно импортировать обе директории в созданный ранее проект в IDE. В IntelliJ заходим в папку src и копируем туда содержимое распакованного архива (две директории).

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab212a14ab6.jpg

      Рисунок 21: Обе папки скопированы в директорию src

      Возвращаясь в Intellij, видим обновленный проект.

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab21326c1b7.jpg

      Рисунок 22: В проекте появились исходные тексты

      Если мы кликнем на какой-нибудь элемент из списка, то увидим исходный текст. Как видно на скриншоте ниже (исходный текст класса LoginActivity), исходный код обфусцирован при помощи ProGuard.

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab214b5e308.jpg

      Рисунок 23: Обфусцированный исходный текст класса LoginActivity

      Подключение отладчика

      Теперь, когда в проекте появились исходные тексты, мы можем начать устанавливать точки останова на методах и переменных. По достижению точек останова приложение будет останавливаться. В качестве примера я установил точку останова на методе (прямо в обфусцированном коде), отвечающим за обработку информации, введенной в текстовом поле.

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab21a0f27d5.jpg

      Рисунок 24: Поставлена точка останова на обфусцированный метод

      Как только появилась точка останова, подключаем отладчик к процессу на устройстве, кликнув на иконку с экраном в правом верхнем углу (на вашей IDE иконка может отличаться).

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab215912595.jpg

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

      Далее вам будет предложено выбрать процесс, к которому нужно подключиться. Будут отображены только процессы с флагом android:debuggable="true".

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab215c736db.jpg

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

      После выбора процесса отладчик подсоединится к устройству.

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab21655a386.jpg

      Рисунок 27: Отладчик подключен к процессу, запущенному на устройстве

      В текстовое поле я буду вводить число 42 (если помните, на соответствующем методе стоит точка останова).

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab24710eb8e-614x1024.jpg

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

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

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab216beec16.jpg

      Рисунок 29: Сработала точка останова

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

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab21711a588.jpg

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

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

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

      image

      Автор: Eric Gruber

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

      Требования к тестовой среде:

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

      Настройка устройства

      Инструкция ниже поможет вам подготовить устройство для экспериментов.

      Активация раздела Developer Options

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab23d04aadb.jpg

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab23efed362.jpg

      Рисунок 1: Для того чтобы активировать раздел Developer options, необходимо несколько раз кликнуть на Build number

      Разрешение отладки через USB

      Чтобы разрешить отладку через USB-порт, зайдите в раздел Settings > Developer options и отметьте флажок напротив USB debugging.

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab245453b30.jpg

      Рисунок 2: Включение опции USB debugging

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

      Устройство должно отобразиться в списке.

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab20b6a88b8.jpg

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

      Если устройство не отобразилось в списке, то наиболее вероятная причина в некорректно установленных драйверах (в Windows). В зависимости от устройства драйвер можно найти либо в Android SDK, либо на сайте производителя.

      Проверка приложения на возможность отладки

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

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

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab20cb0ee69.jpg

      Рисунок 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

      Отобразится список всех пакетов на устройстве.

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab20e0c5cc5.jpg

      Рисунок 5: Перечень пакетов на устройстве

      Глядя на список, находим тестовое приложение.

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab20e6154fe.jpg

      Рисунок 6: Пакет созданного тестового приложения (выделено белым)

      Теперь необходимо скопировать файл пакета. Открываем шелл и вводим следующую команду:

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

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab20eb8d72e.jpg

      Рисунок 7: Копируем APK-файл с устройства в систему

      Теперь нужно открыть файл пакета и исследовать содержимое AndroidManifest.xml. К сожалению, мы не можем просто так распаковать архив, поскольку APK-файл закодирован в бинарном формате. Для раскодировки чаще всего используется утилита apktool, хотя я использую APK Studio, поскольку у этого приложения дружелюбный графический интерфейс. Далее в статье будет рассказываться об APK Studio.

      В APK Studio кликните на маленькую зеленую иконку, задайте имя проекту и укажите путь к APK файлу. Затем укажите пусть для сохранения проекта.

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab20f0921cb.jpg

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

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

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab20f7d225c.jpg

      Рисунок 9: Содержимое файла AndroidManifest.xml

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

      При помощи утилиты apktool или APK Studio мы можем модифицировать файлы и упаковывать содержимое обратно в пакет. Сейчас мы изменим файл AndroidManifest.xml так, чтобы приложение можно было отлаживать. Добавляем внутрь тега application строчку android:debuggable="true".

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab20fc42d15.jpg

      Рисунок 10: Изменяем содержимое тега application

      После добавления флага кликаем на иконку «молоток» и заново собираем пакет. Пересобранный пакет будет находиться в директории build/apk.

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab21012ace5.jpg

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

      После пересборки пакет подписывается и его можно заново установить на устройстве (все Android-приложения должны быть подписаны). Большинство приложений не проверяет сертификат, при помощи которого происходит подпись. В противном случае необходимо изменить код, выполняющий эту проверку.

      Теперь нужно установить пересобранный пакет. Вначале удаляем старое приложение при помощи следующей команды:

      adb pm uninstall[package name]

      Затем устанавливаем новый пакет:

      adb install [.apk file]

      Также можно удалить и установить пакет одной командой:

      adb install -r [.apk file]

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab210595029.jpg

      Рисунок 12: Установка пересобранного пакета

      Проверьте, чтобы переустановленное приложение корректно запускалось на устройстве. Если все работает, переходим обратно в Android Device Monitor, где должно появиться тестовое приложение.

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab210a2d024.jpg

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

      Настройка среды разработки (IDE)

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

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab210f9153d.jpg

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

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab21133b456.jpg

      Рисунок 15: Иерархия директорий тестового приложения

      Снимите флажок «Create Hello World Activity» и завершите создание проекта (все остальные параметры остаются по умолчанию). Новый проект должен выглядеть примерно так:

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab21173f8b3.jpg

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

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

      Получение исходных текстов из пакета приложения

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

      d2j-dex2jar.bat [.apk file]

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab211c465e4.jpg

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

      Затем открываем или перетаскиваем полученный файл в JD-GUI (это java-декомпилятор).

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab211fdc6b0.jpg

      Рисунок 18: Структура jar-файла

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

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab2122f1cbe.jpg

      Рисунок 19: Сохранение исходных текстов декомпилированного файла

      После сохранения исходных текстов распаковываем архив в отдельную директорию.

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab21261c3a2.jpg

      Рисунок 20: Распакованный архив

      Теперь нужно импортировать обе директории в созданный ранее проект в IDE. В IntelliJ заходим в папку src и копируем туда содержимое распакованного архива (две директории).

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab212a14ab6.jpg

      Рисунок 21: Обе папки скопированы в директорию src

      Возвращаясь в Intellij, видим обновленный проект.

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab21326c1b7.jpg

      Рисунок 22: В проекте появились исходные тексты

      Если мы кликнем на какой-нибудь элемент из списка, то увидим исходный текст. Как видно на скриншоте ниже (исходный текст класса LoginActivity), исходный код обфусцирован при помощи ProGuard.

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab214b5e308.jpg

      Рисунок 23: Обфусцированный исходный текст класса LoginActivity

      Подключение отладчика

      Теперь, когда в проекте появились исходные тексты, мы можем начать устанавливать точки останова на методах и переменных. По достижению точек останова приложение будет останавливаться. В качестве примера я установил точку останова на методе (прямо в обфусцированном коде), отвечающим за обработку информации, введенной в текстовом поле.

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab21a0f27d5.jpg

      Рисунок 24: Поставлена точка останова на обфусцированный метод

      Как только появилась точка останова, подключаем отладчик к процессу на устройстве, кликнув на иконку с экраном в правом верхнем углу (на вашей IDE иконка может отличаться).

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab215912595.jpg

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

      Далее вам будет предложено выбрать процесс, к которому нужно подключиться. Будут отображены только процессы с флагом android:debuggable="true".

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab215c736db.jpg

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

      После выбора процесса отладчик подсоединится к устройству.

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab21655a386.jpg

      Рисунок 27: Отладчик подключен к процессу, запущенному на устройстве

      В текстовое поле я буду вводить число 42 (если помните, на соответствующем методе стоит точка останова).

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab24710eb8e-614x1024.jpg

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

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

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab216beec16.jpg

      Рисунок 29: Сработала точка останова

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

      https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab21711a588.jpg

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

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

      Читайте также: