Начинаем со Smali. Как реверсить приложения для Android

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

Какое приложение мы будем препарировать? Я выбрал для своих целей VK Admin — программу для управления сообществами «ВКонтакте» со смартфона. В нем не предусмотрена темная тема, поэтому мы с тобой попробуем эту тему добавить.

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

 

Собираем и разбираем

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

Чтобы получить установочный пакет, можно воспользоваться Android Debugging Bridge — системой для отладки программ на устройстве. В *nix-подобных системах ADB ставится стандартно, с помощью пакетного менеджера, а в Windows — идет в составе Android Studio или Android SDK Platform Tools.

В первую очередь установим приложение из Google Play Store на смартфон, подключим его к компьютеру с помощью USB, затем воспользуемся ADB для переноса пакета приложения на компьютер и извлечем его содержимое.

$ adb shell pm path com.vk.admin
package:/data/app/com.vk.admin-Ka5KVtTbnGgxoRqnObb-pQ==/base.apk

$ adb pull /data/app/com.vk.admin-Ka5KVtTbnGgxoRqnObb-pQ==/base.apk com.vk.admin.apk
3881 KB/s (13414132 bytes in 3.374s)

$ apktool d com.vk.admin.apk
I: Using Apktool 2.4.0 on base.apk
I: Loading resource table…
I: Decoding AndroidManifest.xml with resources…
I: Regular manifest package…
I: Decoding file-resources…
I: Decoding values / XMLs…
I: Baksmaling classes.dex…
I: Copying assets and libs…
I: Copying unknown files…
I: Copying original files…

После этого мы получим папку com.vk.admin/, внутри которой хранится все содержимое исходного .apk, только в декодированном виде. Чтобы применить изменения, необходимо будет снова воспользоваться рядом утилит.

  • Сначала собери приложение обратно в пакет .apk.
  • $ apktool b com.vk.admin/
    I: Using Apktool 2.4.0
    I: Checking whether resources has changed…
    I: Checking whether sources has changed…
    I: Smaling classes folder into classes.dex…
    I: Building apk file…
    I: Copying unknown files/dir…
    I: Built apk…

  • Затем необходимо подписать приложение. Это нужно, чтобы и Google Play Store, и устройство не обновляли приложение, если подписи не совпадают. Поэтому не забудь удалить приложение с телефона, прежде чем установить свое, подписанное своим ключом.
  • Для создания подписи в первый раз нужно воспользоваться утилитой keytool (входит в Java Development Kit):

    $ keytool -genkey -keyalg RSA -alias xakep -keystore ks.keystore -validity 10000 -keysize 2048
    Enter keystore password:
    Re-enter new password:
    What is your first and last name?
      [Unknown]: Xakep User
    What is the two-letter country code for this unit?
      [Unknown]: RU
    Is CN=Xakep User, C=RU correct?
      [no]: yes

    Enter key password for
      (RETURN if same as keystore password):
    Re-enter new password:

  • Когда ты уже создал ключ, подпиши приложение.
  • $ jarsigner -sigalg SHA1withRSA -digestalg SHA1 -keystore ks.keystore com.vk.admin.apk xakep
    Enter Passphrase for keystore:
    jar signed.

  • После этого установи приложение на телефон.
  • $ adb install com.vk.admin.apk
    3881 KB/s (13414132 bytes in 3.374s)
    Success

    Источник: xakep.ru

    Ответить

    Ваш адрес email не будет опубликован. Обязательные поля помечены *