Распаковка apk android studio

Реверс-инжиниринг

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

Программы под Android распространяются в архивах. Эти архивы имеют расширение «.apk». Такие файлы не шифруются и являются по сути файлами «zip». Можете переименовать apk-файл в zip, чтобы убедиться в этом.

Вам необходимо поковыряться в APK-файле и получить какие-то данные. Можно потренироваться на кошках. Возьмём свою программу «Hello Kitty», найдём его apk-файл в папке проекта app\build\outputs\apk и переместим в отдельную папку для опытов.

Распаковав архив, вы можете увидеть структуру приложения и встретить знакомые файлы. И даже извлечь некоторые файлы для просмотра. К примеру, в папке res/drawable-hdpi-v4 я нашёл свою картинку pinkhellokitty.png. Казалось бы, вот оно — счастье. Но погодите радоваться. Если с изображениями проблем нет, то с чтением XML-файл вас ждёт облом. Какие-то строки вам видны, но в целом текст совершенно нечитаем. Поэтому сначала пойдём другим путём.

Так как пользовательские приложения для Android выполняются в java-машине, то APK-файлы наследуют все характерные черты JAR-файлов.

Содержимое архива обычно выглядит примерно так:

Каталог META-INF содержит:

CERT.RSA — сертификат приложения
CERT.SF — контрольные суммы файлов ресурсов (картинок, звуков и т.д.)
MANIFEST.MF — служебная информация, описывающая сам apk-файл

Каталог res содержит ресурсы — значки в нескольких разрешениях, описание размещения элементов на форме в xml-файле.

AndroidManifest.xml — служебная информация о приложении. В этом файле содержатся и так называемые «permission» — разрешения, которые требуются для работы приложения (например, доступ к сети или доступ к телефонной книге).

classes.dex — исполняемый код приложения. Именно этот файл интересует нас в первую очередь.

resources.arsc — таблица ресурсов. В этом файле собраны xml-описания всех ресурсов.

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

Теперь рассмотрим популярные утилиты, используемые для изучения программ.

Apktool

Для начала скачиваем утилиту Apktool, который представляет собой jar-файл с номером версии. Для удобства переименовываем его в короткий вид apktool.jar, так как будем работать в командной строке. Подопытный файл разместите в той же папке с утилитой.

Запускаем в окне командной строки утилиту с флагом d:

Появится отдельная папка, имя которой будет совпадать с именем вашего файла. Зайдите в неё и исследуйте файлы. Вы заметите, что XML-файлы теперь доступны для чтения в нормальном виде. Таким образом, мы можем открыть файл activity_main.xml и узнать разметку своей активности.

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

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

Моя тестовая программа была слишком проста. В других примерах могут быть дополнительные папки, например, assets, которая может содержать файлы, картинки и т.д. Там могут находиться html-файлы с сценариями на Javascript, которые ведут на вредные страницы.

В папке smali находятся уже файлы классов с тем же расширением smali. Код выглядит как в ассемблере и при желании можно понять листинг, но очень неудобно. Оставив файлы пока в покое.

Первую часть задачи мы выполнили.

dex2jar

Вторая утилита dex2jar, позволяет преобразовать файлы dex в jar. Скачиваем последнюю версию и распаковываем архив утилиты. Утилита содержит множество файлов для различных ситуаций. Можете поизучать их на досуге.

Запускаем команду d2j-dex2jar.bat app-debug.apk и получаем на выходе файл app-debug-dex2jar.jar. Это стандартный тип файлов для Java, но для нас пока не слишком полезный. Тем не менее мы выполнили второй шаг и получили промежуточный файл.

JD-GUI

Утилита, которая поможет нам прочитать jar-файл, называется JD-GUI. На странице разработчика можно найти ссылки на плагины к средам разработки и даже онлайн-версию.

Скачиваем последнюю версию и распаковываем архив. Там всего два файла — исполняемый exe-файл и readme.txt

Читайте также:  Антикрашер для самп андроид

Запускаем программу и перетаскиваем на него jar-файл. И весь код на ладони.

Обратите внимание, что код немного будет отличаться. Например, код в студии:

Сравните с кодом в утилите.

Иными словами, вместо констант из класса R подставляются их реальные значения. Вам придётся попотеть, чтобы сопоставить данные. Но вы справитесь, я в вас верю.

Burp Suite

Burp Suite позволит вам просматривать HTTP-траффик на эмуляторе. Скачайте последнюю версию.

Далее следует настроить прокси и другие параметры.

Разбор вредоносной программы

В качестве примера возьмем программу suspicious.apk, который детектируется разными антивирусами как вредоносная программа.

Чтобы лучше понять, что именно искать, нужно проанализировать файл «AndroidManifest.xml» — посмотреть, какие именно разрешения требуются анализируемому приложению. Данный файл бинарный, а не обычный текстовый xml. Для того, чтобы его прочитать нужно воспользоваться консольной утилитой «aapt» из комплекта Android SDK. Она находится в каталоге «platform-tools». Так как графического интерфейса нет, то команду нужно вводить в консоли. Например, для Windows:

Разумеется, вы должны подставить свои пути. В Linux команда будет такой же с очевидными отличиями (не будет букв дисков и расширения «exe» у утилиты). Для большего удобства вывод можно перенаправить в файл:

В файле нужно найти секцию «Android manifest» и искать перечисление разрешений. В анализируемом файле это выглядит так:

Из этой информации становится понятно, что программа может получать состояние телефона (сюда включаются, например «телефон в режиме вызова», «телефон в режиме принятия данных»). Это разрешение нужно и для получения номера телефона, на котором запущена программа, работать с сетью и мониторить приход СМС. На этих аспектах и нужно сосредоточить внимание при дальнейшем анализе.

Для того, чтобы получить доступ к коду нужно выполнить два шага — преобразовать apk-файл в jar-файл и декомпилировать полученный байткод в более понятный для человека вид.

Воспользуемся конвертером «dex2jar»:

Сконвертированный файл будет находится в том же каталоге, что и оригинальный файл. К его имени будет добавлено «.dex2jar.jar», то есть в данном примере это будет «suspicious.apk.dex2jar.jar».

Этот файл можно открыть декомпилятором. Иерархия пакета в окне декомпилятора выглядит так:

На этом подготовительные шаги заканчиваются — дальнейший успех зависит только от вашего знания Java и умения пользоваться поисковиком.

К счастью, экземпляр выбранный для примера имеет довольно скромные размеры — финальный jar всего 7,01 KB.

В программе всего шесть классов. Исключим те, которые не представляют интереса. Это класс R, в котором только перечислены идентификаторы всех ресурсов. Так же из рассмотрения можно исключить класс Config, в котором содержится конфигурация сборки.

Рассмотрим подробнее оставшиеся три класса.

Activation

Этот класс срабатывает по событию onCreate(), то есть сразу после старта приложения.

TelephonyManager localTelephonyManager = (TelephonyManager)getSystemService(«phone»); — создает localTelephonyManager, в которую помещает данные об устройстве.

str1 = localTelephonyManager.getDeviceId(); — выбирает из полученных данных идентификационный номер устройства и помещает его в строку str1

Дальше идет цикл, который делит DeviceId на кусочки по четыре цифры, вставляя между ними дефис «-«, то есть из XXXXXXXXXXXXXXXX получается XXXX-XXXX-XXXX-XXXX. Полученную строку цифр и дефисов передают в TextView с идентификатором 2131034112.

SmsReciever

Этот класс срабатывает при приходе СМС-сообщения, событие onReceive().

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

MainService

Этот класс довольно велик, поэтому не стану приводить его целиком. Сразу после вызова запускает субкласс «SmsBlockerThread», который блокирует уведомление о поступившем СМС, чтобы пользователь не был оповещен о новом входящем СМС.

Затем входящее СМС обрабатывается таким образом:

String str1 = localSmsMessage.getOriginatingAddress(); — номер телефона-получателя (то есть номер телефона, на котором установлен троянец) помещается в переменную str1.

String str2 = localSmsMessage.getMessageBody(); — тело сообщения помещается в переменную str2

Затем создаются связанные пары localBasicNameValuePair1 и localBasicNameValuePair2 в которые помещаются значения

Эти пары сохраняют в массив localArrayList, в который позже добавляют пару localBasicNameValuePair3, представляющую собой устройства>

При этом, как видите, DeviceId получается заново, а не используется то, что было получено в классе Activation. Заканчивается тем, что вызывается метод postRequest() из последнего класса ServerSession:

В качестве параметра передается тот самый массив пар, в котором номер телефона, содержимое СМС и идентификатор устройства.

ServerSession

Этот класс имеет два метода: initUrl(), который возвращает часть ссылки «(http://softthrifty.com/security.jsp)»:

и большой метод postRequest(), который вызывался из класса MainService. Несмотря на размер, задача postRequest() проста — отправить на сервер по ссылке, возвращаемой методом initUrl(), данные, добавив пары из массива, собранного в MainService. То есть всего лишь обратиться по ссылке:

Читайте также:  Asus tf201 как обновить андроид

Итак, данный троянец перехватывает СМС и отправляет на сервер запрос, в котором передает номер зараженного телефона, содержимое СМС и идентификатор зараженного телефона. Такое поведение может быть признаком банковского троянца, атакующего двухфакторную авторизацию. Для успешной атаки требуется выполнение таких условий:

1) злоумышленник должен заразить компьютер жертвы, чтобы перехватить данные для он-лайн банкинга;
2) злоумышленник должен заразить телефон жертвы для перехвата СМС с кодом подтверждения от банка;
3) злоумышленник должен каким-то образом связать пользователя зараженного компьютера и зараженного телефона, чтобы знать, от каких учетных данных он-лайн банкинга данный код подтверждения;

В силу своих размеров и очевидности производимой деятельности такой образец хорошо подходит для демонстрации базовых приемов разбора вредоносных программ под Андроид.

Источник

Как открывать файлы формата APK на компьютере или смартфоне

Вы скачали файл APK и не знаете, как открыть его на своём компьютере? Или вы хотите установить файл APK на свой компьютер, но не можете этого сделать, потому что операционная система не распознает его? Это нормально: файлы APK, по сути, являются установочными пакетами приложений для Android, и, если вы попытаетесь открыть их в системе, отличной от разработанной Google для смартфонов и планшетов, вы не сможете просмотреть их содержимое. если вы не используете специальные решения. Какие? Я объясню вам это в ближайшее время.

Если вы хотите узнать, как открыть APK-файлы на ПК, вам просто нужно потратить несколько минут свободного времени и прочитать инструкции, которые я собираюсь вам дать. Фактически, в сегодняшнем руководстве я покажу вам, как выполнить эту процедуру для Windows и macOS, и рекомендую различные решения. Расскажу вам об официальном программном обеспечении Google Android Studio, которое позволяет разрабатывать приложения для Android и детально просматривать их содержимое. С другой стороны, если ваша цель состоит в том, чтобы установить приложение для Android на ваш ПК, то это можно осуществить через эмулятор Android, о чём я расскажу во второй части руководства. Если вы намерены только извлечь содержимое файла APK на компьютер, не волнуйтесь, я покажу вам некоторые решения, которые могут подойти для этого случая.

Открыть APK файл на ПК с Android Studio

Файл APK представляет собой архив, содержащий файлы, необходимые для установки приложения на Android. В связи с этим для разработки приложений можно использовать бесплатное программное обеспечение Android Studio, разработанное Google. Эта программа позволяет декомпилировать файл APK и просматривать его содержимое.

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

На следующем экране установите флажок в поле «Я прочитал и согласен с вышеуказанными условиями» и нажмите кнопку Скачать Android Studio для … . При этом будет загружен файл .exe для Windows или .dmg для macOS.

После загрузки файла, если вы используете 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 на свой компьютер, перейдите по ссылке, которую я предоставил ранее, нажмите кнопку Скачать BlueStacks . После получения установочного файла программы (в формате .exe в Windows или в формате .dmg в 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, установленных для приложений от несертифицированных разработчиков.

Источник

Оцените статью