Начинаем со 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…

$ 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

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *