Как открыть apk файл в android studio
Подготовка к запуску
Как вы запускаете ваше приложение зависит от двух вещей: есть ли у вас реальное Android устройство и используете ли вы Android Studio или Eclipse. Этот урок покажет вам, как установить и запустить свое приложение на реальном устройстве и на Android эмуляторе, и в обоих случаях с помощью Eclipse или инструментов командной строки.
Перед запуском вашего приложения, вы должны быть осведомлены о нескольких каталогах и файлах в Android проекте:
AndroidManifest.xml файл манифеста описывает основные характеристики приложения и определяет каждый из его компонентов. Вы узнаете о различных объявлениях в этом файле по мере изучения учебных курсов.Одним из наиболее важных элементов, который ваш манифеста должен включать является <uses-sdk> элемент. Он заявляет о совместимости вашего приложения с различными версиями Android, используя android:minSdkVersion и android:targetSdkVersion атрибуты. Для вашего первого приложения, оно должно выглядеть следующим образом:
Вы всегда должны устанавливать android:targetSdkVersion как можно более высоким и протестировать приложение на соответствующей версии платформы. Для получения дополнительной информации, читайте Поддержка различных версий платформы. src/ Каталог для основных исходных файлов вашего приложения. По умолчанию, он включает в себя Activity класс, который запускается, когда ваше приложение запускается с помощью значка приложения. res/ Содержит несколько вложенных каталогов, в которых размещаются ресурсы приложения. Вот только некоторые из них: drawable-hdpi/ Каталог для рисуемых объектов (например, растровых изображений), которые предназначены для высокой плотности (hdpi) экранов. Другие drawable каталоги содержат наборы, предназначенные для других плотностей экрана. layout/ Каталог для файлов, которые определяют пользовательский интерфейс вашего приложения. values/ Каталог для других различных XML-файлов, которые содержат коллекцию ресурсов, таких как строки и цветовые определения.
Как запустить android-приложение на реальном устройстве
Если у вас есть реальное Android устройство, вот как вы можете установить и запустить приложение:
- Подключите ваш смартфон к компьютеру с помощью кабеля USB. Если вы разрабатываете на Windows, вам может потребоваться установить соответствующий драйвер USB для вашего устройства. Для получения справки по установке драйверов см. Драйвера OEM USB.
- Включите Отладка через USB на вашем устройстве.
- На большинстве устройств под управлением Android 3.2 или старше, вы можете найти опцию вНастройки > Приложения > Разработка.
- На Android 4.0 и новее, это находится в Настройки > Для разработчиков.
Примечание: На Android 4.2 и новее, Для разработчиков по умолчанию скрыт. Чтобы сделать его доступным, перейдите к Настройки > О телефоне и нажмите Номер сборки семь раз. Вернитесь к предыдущему экрану, чтобы найти Для разработчиков.
Как запустить android-приложение из Android Studio:
Откройте один из файлов вашего проекта и нажмите Run app на панели инструментов. Или нажмите комбинацию клавиш Shift+F10.
Откроется окно выбора подключенного реального устройства или эмулятора. Android Studio устанавливает приложение на выбранное устройство и запускает его.
Как запустить android-приложение из Eclipse
- Откройте один из файлов вашего проекта и нажмите Запуститьна панели инструментов.
- В окне Запуск от имени , которое появляется, выберите Android Application и нажмите OK.
Eclipse устанавливает приложение на подключенное устройство и запускает его.
Вы скачали файл APK и не знаете, как открыть его на своём компьютере? Или вы хотите установить файл APK на свой компьютер, но не можете этого сделать, потому что операционная система не распознает его? Это нормально: файлы APK, по сути, являются установочными пакетами приложений для Android, и, если вы попытаетесь открыть их в системе, отличной от разработанной Google для смартфонов и планшетов, вы не сможете просмотреть их содержимое. если вы не используете специальные решения. Какие? Я объясню вам это в ближайшее время.
Если вы хотите узнать, как открыть APK-файлы на ПК, вам просто нужно потратить несколько минут свободного времени и прочитать инструкции, которые я собираюсь вам дать. Фактически, в сегодняшнем руководстве я покажу вам, как выполнить эту процедуру для Windows и macOS, и рекомендую различные решения. Расскажу вам об официальном программном обеспечении Google Android Studio, которое позволяет разрабатывать приложения для Android и детально просматривать их содержимое. С другой стороны, если ваша цель состоит в том, чтобы установить приложение для Android на ваш ПК, то это можно осуществить через эмулятор Android, о чём я расскажу во второй части руководства. Если вы намерены только извлечь содержимое файла APK на компьютер, не волнуйтесь, я покажу вам некоторые решения, которые могут подойти для этого случая.
Открыть APK файл на ПК с Android Studio
Файл APK представляет собой архив, содержащий файлы, необходимые для установки приложения на Android. В связи с этим для разработки приложений можно использовать бесплатное программное обеспечение Android Studio, разработанное Google. Эта программа позволяет декомпилировать файл APK и просматривать его содержимое.
После загрузки файла, если вы используете Windows, дважды щелкните по нему и нажмите Да в окне контроля учетных записей. На появившемся экране нажмите кнопку Далее три раза подряд и в конце установки нажмите кнопку Готово . Если вы используете macOS, дважды щелкните загруженный файл и перетащите Android Studio в папку «Приложения» на отображаемом экране.
Как только это будет сделано, запустите Android Studio, с помощью его значка, который вы можете найти на рабочем столе Windows или на Launchpad MacOS. Затем нажмите кнопку ОК и на появившемся экране нажмите кнопку Далее три раза подряд и дождитесь загрузки всех компонентов, необходимых для работы программы. В конце процедуры нажмите Готово , чтобы отобразить главный экран Android Studio.
Среди элементов, отображаемых на экранной панели, выберите элемент под названием Открыть существующий проект Android Studio и на просматриваемом экране выберите интересующий вас APK-файл, подтвердив действие кнопкой Открыть .
Если вы следовали инструкциям, которые я вам предоставил, вы успешно откроете APK-файл с отображением всех файлов внутри него на центральной панели основного экрана Android Studio.
Открыть APK файл на ПК через эмулятор Android
Если вы хотите запустить приложение Android на своем компьютере, вы должны использовать эмулятор Android: их несколько, но сегодня я покажу вам процедуру, которой следует придерживаться в случае BlueStacks, известного бесплатного программного обеспечения для эмуляции Android, который доступен как для Windows, так и для MacOS на официальном сайте.
После запуска BlueStacks вам будет предложено настроить учетную запись Google. Затем нажмите кнопку Пуск и войдите в систему, используя учетные данные своего аккаунта Gmail. На этом этапе нажмите кнопку Пуск с помощью BlueStacks , чтобы начать использовать эмулятор Android.
Теперь, когда у вас установлен и настроен BlueStacks, вы можете легко открыть файл APK. На главном экране эмулятора найдите Установленные приложения в левом верхнем углу. Затем щелкните значок вертикального троеточия, который находится рядом, и в появившемся окне выберите пункт Установить APK.
На этом этапе вам просто нужно указать APK-файл на вашем компьютере, подтвердив операцию с помощью кнопки Открыть . При этом будет выполнена установка APK-файла, и станет возможным запуск содержащегося в нём приложения.
В качестве альтернативы этой процедуры, после установки и настройки BlueStacks, вы можете просто дважды щелкнуть файл APK, чтобы открыть его, и, следовательно, установить внутри эмулятора.
Извлечь APK файлы на ПК
Файл APK можно открыть на ПК с помощью любого программного обеспечения или инструмента сжатия данных, например WinRAR или WinZip. Однако, в этом руководстве я расскажу вам о бесплатной программе 7-Zip, доступной только в Windows. Но, будучи программным обеспечением с открытым исходным кодом, её основной код разработки (p7zip) используется для создания другого программного обеспечения, также бесплатного, например, Keka для macOS.
В следующих главах я покажу вам, как извлечь содержимое файла APK с помощью 7-Zip для Windows и Keka для macOS.
7-Zip (Windows)
Если у вас есть компьютер с Windows, среди множества программ для сжатия и распаковки архивов, я рекомендую использовать 7-Zip, доступный бесплатно на официальном сайте. Это программа с открытым исходным кодом, которая позволяет вам управлять архивам с расширениями RAR, CAB, GZIP, 7Z, ZIP и даже APK.
Если вы заинтересованы в использовании 7-Zip, перейдите по предоставленной мной ссылке и нажмите на элемент Download, соответствующий версии архитектуры компьютера. Как только это будет сделано, будет загружен файл .exe. Дважды щелкните его и нажмите Да в окне контроля учетных записей Windows. Пройдите через стандартный процесс установки программ на Windows.
Чтобы открыть пакет APK и извлечь его содержимое на компьютер, щелкните файл правой кнопкой мыши и в контекстном меню выберите 7-Zip → Извлечь файлы. Вам будет показан экран, на котором вам нужно будет выбрать место для извлечения содержимого файла APK. Затем нажмите кнопку ОК , чтобы начать извлечение файлов, и через несколько секунд процесс будет завершён. Папка, содержащая файлы APK, будет расположена в выбранном вами месте назначения.
Кека (macOS)
Как я уже говорил, Keka – это бесплатное программное обеспечение для macOS, которое позволяет вам управлять сжатыми архивами, такими как архивы в формате RAR, ZIP, 7Z и APK, с возможностью извлечения их содержимого на ваш компьютер в любом месте, выбранном пользователем. Если вы хотите загрузить его на свой Mac, перейдите на официальный сайт и нажмите кнопку Download vx.xx, которая находится слева. Вы также можете загрузить его непосредственно из Mac App Store, но в этом случае требуется оплата в размере 2,99 долл. (для поддержки разработчика).
После установки Keka просто перейдите к месту, где расположен файл APK и дважды щелкните по нему. При этом вам будет показан экран для выбора места назначения, куда следует извлечь содержимое файла APK. Затем выберите папку на Mac и нажмите кнопку Извлечь , расположенную внизу справа.
Если вы выполнили процедуру правильно, вы найдете содержимое файла APK внутри папки в выбранном вами месте назначения. Если Keka не открывается автоматически при двойном щелчке по файлу APK, щелкните правой кнопкой мыши на пакете, чтобы извлечь его, и выберите Открыть с помощью → Keka из контекстного меню MacOS.
В случае ошибок при выполнении перейдите в папку «Приложения» и запустите Keka, щелкнув правой кнопкой мыши по её значку и выбрав пункт «Открыть» два раза подряд: эта операция необходима только при первом запуске и служит для обхода ограничений macOS, установленных для приложений от несертифицированных разработчиков.
TelephonyManger.getDeviceId () Возвращает уникальный идентификатор устройства, например IMEI для GSM и MEID или ESN для телефонов CDMA.
Но я рекомендую использовать:
Settings.Secure.ANDROID_ID, который возвращает идентификатор Android в качестве уникальной 64-разрядной шестнадцатеричной строки.
Иногда TelephonyManger.getDeviceId () возвращает null, поэтому для обеспечения уникального идентификатора вы будете используйте этот метод:
Процедура для декодирования .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 write ./d2j-dex2jar.sh classes.dex ) и нажмите enter. Теперь у вас есть файл classes.dex.dex2jar в той же папке.
- Загрузите java decompiler , дважды щелкните по jd-gui, щелкните по открытому файлу и откройте classes.dex .dex2jar из этой папки: теперь вы получаете файлы классов.
- Сохраните все эти файлы классов (в jd-gui, щелкните File -> Save All Sources) по имени src. На этом этапе вы получаете источник java, но файлы .xml по-прежнему не читаются, поэтому продолжайте.
Шаг 3:
Теперь откройте еще одну новую папку
- Вставьте файл .apk, который вы хотите декодировать
- Загрузите последнюю версию apktool И окно установки apktool (обе могут быть загружены из одной и той же ссылки ) и поместите их в ту же папку
- Откройте командное окно
- Теперь запустите команду, например apktool if framework-res.apk и следующую
- apktool d myApp.apk (где myApp.apk обозначает имя файла, которое вы хотите декодировать)
теперь вы получаете папку с файлами в этой папке и можете легко прочитать XML-файлы apk.
Шаг 4:
Это не какой-либо шаг, просто скопируйте содержимое обеих папок (в данном случае и новую папку) в один файл
и наслаждайтесь источником код .
ответ дан 19 revs, 17 users 47% 23 August 2018 в 15:46Есть несколько способов сделать это:
- Использовать функцию «Профиль или отладка APK» в Android Studio 3.0. Это позволяет вам открывать и исследовать APK в Android Studio. Классы декомпилируются в smali. Ресурсы не извлекаются, и такие вещи, как «Перейти к определению», «Найти все ссылки» и отладки, не работают без исходного кода (android studio 3.0 canary 9). Некоторые дополнительные функции smali могут работать с smalidea . [/g3] [/g4] [/g5]
- Используйте jadx . Jadx декомпилирует код в заданном APK для исходных файлов java. [/g6]
- Используйте apktool . Apktool - это инструмент командной строки, который извлекает ресурсы и декомпилирует код в smali для данного apk. Вы также можете перекомпилировать, используя apktool. Вот пример этого в действии:
Некоторые ограничения, очевидно, существуют из-за службы «онлайн-характер»: вы можете извлечь и исследовательские активы и файл манифеста, но невозможно перекомпилировать приложение на данный момент.
Тем не менее, это беспроблемный способ «открыть» приложение для Android.
Apktool для обратной инженерии сторонних, закрытых, бинарных приложений для Android.
Он может декодировать ресурсы до почти первоначальной формы и восстанавливать их после внесения некоторых изменений.
Это позволяет отлаживать smali-код шаг за шагом. Кроме того, упрощается работа с приложением из-за проектной структуры файла и автоматизации некоторых повторяющихся задач, таких как создание apk и т. Д.
Это альтернативное описание - на случай, если кто-то застрял с описанием выше. Выполните следующие шаги:
Примечание: не разрешается декомпилировать пакеты сторонних поставщиков; это руководство предназначено для восстановления личного исходного кода только из файла APK; наконец, полученный код, скорее всего, будет запутан
В Play Store есть новое приложение, с помощью которого можно декомпилировать apk (системные приложения) и просмотреть исходный код прямо на вашем смартфоне. Он сохраняет файлы на SD-карте, чтобы вы могли просматривать их на своем компьютере. Это не требует root или что-то еще.
Просто установите и получайте удовольствие. Я думаю, что это самый простой способ декомпилировать приложение.
Я лично рекомендую Show Java Android App получить исходный код. Вы можете загрузить его из магазина воспроизведения или из здесь
Я покажу вам другой способ декомпилировать файлы .apk.
Вы можете выполнить первые 2 шага от «prankul garg». Итак, у вас есть еще одна возможность:
Загрузите «JD-GUI», который легко найти. Откройте файл .jar в «jd-gui.exe». (Файл> Открыть файл> 'нашел ваш .jar-файл'). После этой процедуры вы можете сохранить все ресурсы в файле .zip.
1st - вам нужно переименовать файл .apk в .zip
2nd - вам нужно декодировать файл .dex (если хотите, декодировать файл .apk в dex2jar, это возможно)
3rd - вам нужно декодировать файл .jar с JD-GUI
Вы можете попробовать DexPatcher . Он даже интегрируется с Android Studio. Он использует внутренние функции Apktool и Dex2Jar . Вы также можете использовать эти инструменты самостоятельно. Apktool декомпилирует apk и извлекает файлы .dex, которые могут быть затем преобразованы в jar с использованием Dex2Jar. Jar можно декомпилировать с помощью JD-GUI . Вы можете увидеть Java-код с помощью этого инструмента. Хотя сходство декомпилированного кода с реальным кодом не может быть гарантировано. На рынке доступны некоторые усовершенствованные инструменты [f5] obfuscation , которые испортили код, чтобы затруднить декомпиляцию / понимание. например. Proguard
ответ дан Lakshmikant Deshpande 23 August 2018 в 15:46Сначала я попробовал сайт, упомянутый в принятом ответе, но это не сработало я.
apktool - лучшее, что вы можете попробовать. Я сохранил некоторые xml с ним, но, честно говоря, я не знаю, как это будет работать с кодом .java.
Я бы рекомендовал вам иметь репозиторий кода, даже если ваш единственный кодер. Я использовал Project Locker для своих собственных проектов. Это дает вам бесплатные svn и git repos.
apktool будет работать. Вам даже не нужно знать хранилище ключей, чтобы извлечь исходный код (что немного страшно). Основной недостаток заключается в том, что источник представлен в формате Smali вместо Java. Другие файлы, такие как значок и main.xml, проходят отлично, хотя, возможно, стоит потратить время, чтобы хотя бы восстановить их. В конечном итоге вам, скорее всего, придется перезаписать Java-код с нуля.
Здесь вы можете найти apktool здесь . Просто скачайте apktool и соответствующий помощник (для Windows, Linux или Mac OS). Я рекомендую использовать такой инструмент, как 7-zip, чтобы распаковать их.
Хотя вы можете декомпилировать ваш файл APK , вы, вероятно, попадете в одну большую проблему:
он не вернет код, который вы написали. Вместо этого он будет возвращать все, что встраивается компилятором, с переменными, заданными случайными именами, а также функциями, заданными случайными именами. Это может занять значительно больше времени, чтобы попытаться декомпилировать и восстановить его в коде, который у вас был, чем начать.
К сожалению, такие вещи убили много проектов. В будущем я настоятельно рекомендую изучить систему управления версиями, такую как CVS, SVN и git и т. Д.
и как ее создать.
В этих двух статьях описывается, как объединить использование apktool и dex2jar , чтобы взять файл APK и создать проект Eclipse, который может его создавать и запускать.
Файл с расширением APK является пакетом файлов для Android и используется для распространения приложений на Android – мобильной операционной системы от Google.
Файлы APK сохраняются в формате ZIP и, как правило, загружаются непосредственно на устройства Android, обычно через магазин Google Play, но их также можно найти на других веб-сайтах.
Часть содержимого, содержащегося в типичном APK-файле, включает в себя файл AndroidManifest.xml, classes.dex и resources.arsc; а также папку META-INF и res.
Как открыть файл APK
Файлы APK могут быть открыты в ряде операционных систем, но они используются, в основном, на устройствах Android.
Откройте файл APK на Android
Чтобы открыть файл APK на вашем Android-устройстве, вам нужно просто загрузить его, как любой другой файл, а затем открыть. Однако? файлы APK, загруженные из-за пределов магазина Google Play, могут быть установлены не сразу из-за ограничений системы безопасности.
Чтобы обойти это ограничение загрузки и установить APK-файлов из неизвестных источников, перейдите в «Настройки» → «Безопасность» (или воспользуйтесь поиском по настройкам) и установите флажок Устанавливать из неизвестных источников . Возможно, вам придётся подтвердить это действие.
Если файл APK не открывается на вашем Android, попробуйте найти его с помощью файлового менеджера, такого как Astro File Manager или ES File Explorer File Manager.
Откройте файл APK на Windows
Вы можете открыть файл APK на ПК, используя Android Studio или BlueStacks. Например, если вы используете BlueStacks, перейдите на вкладку Мои приложения и выберите Установить apk в правом нижнем углу окна.
Откройте файл APK на Mac
ARC Welder – это расширение Google Chrome, предназначенное для тестирования приложений Android для ОС Chrome, но оно работает на любой ОС. Это означает, что вы можете открыть APK на своем компьютере Mac или Windows, если это приложение установлено в браузере Chrome.
Откройте файл APK на iOS
Вы не cможете открывать или устанавливать файлы APK на устройстве iOS (iPhone, iPad и т.д.), поскольку файл построен совершенно иным образом, чем приложения, используемые на этих устройствах, и две платформы несовместимы друг с другом.
Вы также можете открыть файл APK в Windows, MacOS или любой другой настольной операционной системе с помощью инструмента извлечения файлов. Поскольку файлы APK представляют собой просто архивы из нескольких папок и файлов, вы можете разархивировать их с помощью программы, такой как 7-Zip или PeaZip, чтобы увидеть различные компоненты, составляющие приложение.
Однако, это не позволяет вам использовать APK-файл на компьютере. Для этого требуется эмулятор Android (например, BlueStacks), который по существу запускает ОС Android на компьютере.
Как конвертировать файл APK
Хотя программа или служба преобразования файлов обычно необходимы для преобразования файлов одного типа в другой, они не очень полезны при работе с файлами APK. Это связано с тем, что файл APK представляет собой приложение, предназначенное для работы только на определенных устройствах, в отличие от файлов других типов, таких как MP4 или PDF, которые работают на различных платформах.
Вместо этого, если вы хотите преобразовать файл APK в ZIP, вы должны использовать инструкции, описанные выше. Либо откройте файл APK в инструменте извлечения файлов, а затем упакуйте его в ZIP-файл или просто переименуйте файл .APK в .ZIP.
Переименование файла таким образом, это не конвертация файла. И это работает только в случае файлов APK, потому что формат файла уже использует ZIP, но он просто добавляет другое расширение файла (.APK).
Как уже упоминалось выше, вы не можете конвертировать файл APK в IPA для использования на iOS, а также вы не можете конвертировать APK в EXE, чтобы использовать приложение Android в Windows.
Однако, обычно вы можете найти альтернативу iOS, которая работает вместо приложения для Android, которое вы хотите установить на свой iPhone или iPad. Большинство разработчиков имеют одинаковое приложение, доступное на обеих платформах (как APK для Android, так и IPA для iOS).
Что касается конвертера APK в EXE, просто установите Windows APK и затем используйте его, чтобы открыть приложение Android на вашем компьютере.
Вы можете преобразовать файл APK в BAR для использования с устройством BlackBerry, просто загрузив файл APK в онлайн-конвертер Good e-Reader APK в BAR. Подождите, пока преобразование закончится, а затем загрузите файл BAR обратно на компьютер.
В статье будет рассказано о том, как подключить отладчик к Android-приложению и пошагово пройти через вызываемые методы, используя информацию, полученную после декомпиляции приложения.
Автор: Eric Gruber
В статье будет рассказано о том, как подключить отладчик к Android-приложению и пошагово пройти через вызываемые методы, используя информацию, полученную после декомпиляции приложения. Хорошая новость в том, что для отладки не требуются привилегии суперпользователя. Описанные техники могут быть очень кстати во время пентестов мобильных приложений, поскольку мы можем «проникнуть» в код во время работы программы, получить и записать информацию, к которой обычно у нас нет доступа. Например, можно перехватить трафик перед шифрованием и на лету получить ключи, пароли и любую другую ценную информацию. Статья будет полезна пентестерам и разработчикам мобильных приложений, желающих получить более глубокие знания о возможных атаках на платформе Android.
Требования к тестовой среде:
В статье будет использоваться следующая конфигурация: Windows 8, Android Studio и IntelliJ IDEA. Устройство: Nexus 4 с Android версии 4.4.4. Рекомендую все утилиты добавить в переменную окружения PATH, чтобы облегчить и ускорить доступ к этим инструментам.
Настройка устройства
Инструкция ниже поможет вам подготовить устройство для экспериментов.
Активация раздела Developer Options
Рисунок 1: Для того чтобы активировать раздел Developer options, необходимо несколько раз кликнуть на Build number
Разрешение отладки через USB
Чтобы разрешить отладку через USB-порт, зайдите в раздел Settings > Developer options и отметьте флажок напротив USB debugging.
Рисунок 2: Включение опции USB debugging
Подключение устройства и запуск ADB
Устройство должно отобразиться в списке.
Рисунок 3: Список подключенных устройств
Если устройство не отобразилось в списке, то наиболее вероятная причина в некорректно установленных драйверах (в Windows). В зависимости от устройства драйвер можно найти либо в Android SDK, либо на сайте производителя.
Проверка приложения на возможность отладки
Перед отладкой Android-приложений вначале необходимо проверить, есть ли такая возможность. Проверку можно выполнить несколькими способами.
Первый способ – запустить Android Device Monitor, входящий в состав Android SDK (в папке tools). В 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] [location]
Рисунок 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[package name]
Затем устанавливаем новый пакет:
adb install [.apk file]
Также можно удалить и установить пакет одной командой:
adb install -r [.apk file]
Рисунок 12: Установка пересобранного пакета
Проверьте, чтобы переустановленное приложение корректно запускалось на устройстве. Если все работает, переходим обратно в Android Device Monitor, где должно появиться тестовое приложение.
Рисунок 13: Теперь пересобранное приложение можно отлаживать
Настройка среды разработки (IDE)
Теперь к пересобранному приложению можно подцепить отладчик, но вначале нужно создать проект в среде разработки (в статье используется IntelliJ IDEA). Создаем новый проект. В поле Application name указываем произвольное имя. В поле Package name указываем имя, в точности совпадающее с иерархией папок пересобранного пакета.
Рисунок 14: Создание нового проекта в IntelliJ IDEA
Рисунок 15: Иерархия директорий тестового приложения
Снимите флажок «Create Hello World Activity» и завершите создание проекта (все остальные параметры остаются по умолчанию). Новый проект должен выглядеть примерно так:
Рисунок 16: Иерархия папок и файлов нового проекта
После создания проекта нужно добавить исходный код из APK-файла для того, чтобы отладчик «знал» имена символов, методов, переменных и т. д. Хорошая новость в том, что Android-приложения можно декомпилировать практически без потери качества (исходный код будет совпадать с оригиналом). После декомпиляции исходный текст импортируется в среду разработки (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: Подключаем отладчик к процессу
Далее вам будет предложено выбрать процесс, к которому нужно подключиться. Будут отображены только процессы с флагом android:debuggable="true".
Рисунок 26: Перечень процессов для подключения отладчика
После выбора процесса отладчик подсоединится к устройству.
Рисунок 27: Отладчик подключен к процессу, запущенному на устройстве
В текстовое поле я буду вводить число 42 (если помните, на соответствующем методе стоит точка останова).
Рисунок 28: В текстовое поле вводим число 42
После нажатия на кнопку «Enter Code» выполнение приложения прервется на точке останова, поскольку отладчик «осведомлен», какой метод вызывается на устройстве. Скомпилированное Android-приложение содержит отладочную информацию (например, имена переменных), доступную любому отладчику, совместимому с Java Debug Wire Protocol (JDWP). Если в приложении разрешена отладка, отладчик, совместимый с JDWP (в эту категорию попадает большинство отладчиков идущих в составе сред разработки для Java), сможет подсоединиться к виртуальной машине Android-приложения, а затем считывать и выполнять отладочные команды.
Рисунок 29: Сработала точка останова
На скриншоте ниже видно число, которое ранее мы ввели в текстовом поле.
Рисунок 30: Перечень переменных текущего экземпляра класса
Мы можем не только считывать данные в приложении, но и вставлять свои собственные. Это может быть полезно, если мы, например, захотим прервать поток выполнения кода и обойти некоторые участки алгоритма. При помощи отладчика мы можем лучше понять логику работы приложения и проанализировать то, что недоступно обычному пользователю. Например, может оказаться очень полезным просмотр используемых функций шифрования и динамические ключи. Кроме того, иногда при отладке полезно знать, как функции взаимодействуют с файловой системой или базой данных, чтобы понять какая информация сохраняется приложением. Подобные манипуляции доступны на любом Android-устройстве без привилегий суперпользователя.
Читайте также: