Вот и добрался я до Android приложений. Это первая статья, в которой будем знакомится с инструментарием для вскрытия и упаковки apk файлов.
Для начала нам нужно распаковать файл apk (он же архив) инструментом apktool:
В данной директории получили файлы с кодом smali – это байт-код виртуальной машины Dalvik.
Его мы будем редактировать. Но для привычного удобства чтения кода, сделаем конвертацию smali кода в java код. Для начала нужно конвертировать наш apk файл в jar файл при помощи утилиты dex2jar:
Далее нужно декомпилировать полученный jar файл. Для этого можно воспользоваться одной из нескольких инструментов. Графические: jd-gui, jadx-gui, с ними все интуитивно понятно.
Важное приемущество jadx-gui, это то что он умеет сразу декомпелировать apk файл в удобочитаемый java код.
Так что все предыдущие шаги можно было пропустить, но тогда статья была бы не совсем полной, так как мое мнение, что консольные утилиты нужно знать. Или же можно использовать консольную утилиту FernFlower:
Для начала нужно создать ключ с паролем:
Затем создадим саму подпись, ипользуя созданный нами ключ.
Ну и наконец добавим подпись к нашему новому apk файлу:
На этом все, можно запускать наше исправленное приложение на Android.
В следующей статье рассмотрим пример изменения кода в приложении.
На закуску - даю мой батник для персборки приложения с подписью.
Для начала нам нужно распаковать файл apk (он же архив) инструментом apktool:
apktool d d:\crack\revtest.apkПолучаем примерно такое содержимое директории:
В данной директории получили файлы с кодом smali – это байт-код виртуальной машины Dalvik.
Его мы будем редактировать. Но для привычного удобства чтения кода, сделаем конвертацию smali кода в java код. Для начала нужно конвертировать наш apk файл в jar файл при помощи утилиты dex2jar:
d2j-dex2jar.bat -f d:\crack\revtest.apk -o d:\crack\revtest.jar
где:
- -f принудительная перезапись
- -o выходной файл .jar
Так что все предыдущие шаги можно было пропустить, но тогда статья была бы не совсем полной, так как мое мнение, что консольные утилиты нужно знать. Или же можно использовать консольную утилиту FernFlower:
java -jar fernflower.jar d:\crack\revtest.jar d:\crack\revtest_decompiled\В данном случае на выходе так же получим файл jar, но уже с читабельным java кодом. Этот jar файл нужно просто разархивировать. Далее открываем файлы с помощью любимого текстового редактора, например Notepad++ или Vim. После проделанных всех нужных нам правок в коде, нам нужно будем пересобрать все файлы в apk обратно. Но для того что бы наш Android адекватно воспринял наше перепакованное приложение, ему нужна подпись. Упаковываем отредактированные файлы командой:
apktool.bat b -f d:\crack\revtest -o d:\crack\revtest_new.apk
где:
- b - сборка
- -f - пропустить обнаружение изменений и собрать все файлы
- -o - выходной файл apk
keytool -genkey -v -keystore d:\crack\revtest.keystore -alias test -keyalg rsa -keysize 2048 -validity 20000 -storepass S3CrEtP@SsW0rD
где:
- -genkey (genkeypair) - создает пару ключей
- -v - подробный вывод
- -keystore - имя хранилища ключей
- -alias - псевдоним имени ключа
- -keyalg - название алгоритма
- -keysize - размер ключа
- -validity - срок действия ключей в днях
- -keypass - пароль хранилища ключей
jarsigner -verbose -sigalg sha1withrsa -digestalg sha1 -keystore d:\crack\revtest.keystore d:\crack\revtest_new.apk revtest_new -storepass S3CrEtP@SsW0rD
где:
- -verbose - подробный вывод
- -sigalg - название алгоритма подписи
- -digestalg - алгоритм криптографического хеширования
- -keystore - расположение хранилища ключей
- -storepass - пароль для целостности хранилища ключей
zipalign -v 4 d:\crack\revtest_new.apk d:\crack\revtest_align.apk
где:
- -v - подробный вывод
- 4 - обеспечивает 32-битное выравнивание
@echo off if "%~1"=="" goto help call apktool.bat b -f %~1 -o %~1.apk if not exist %~dp1debug.keystore keytool -genkey -v -keystore %~dp1debug.keystore -alias test -keyalg rsa -keysize 2048 -validity 20000 -storepass h3xf0x jarsigner -verbose -sigalg sha1withrsa -digestalg sha1 -keystore %~dp1debug.keystore %~1.apk test -storepass h3xf0x del %~1align.apk zipalign -v 4 %~1.apk %~1align.apk echo Complete! goto end :help echo Example: rebuild.bat [path to dir] :end
Комментариев нет:
Отправить комментарий