Сборка декомпилированного приложения обратно в APK
Если Вы читали первую часть статьи о том, как декомпилировать приложения для Android, то Вы знаете, что остановился я на том, как собрать все файлы, которые получились при разборке приложения, обратно в APK.
Лирическое отступление
К сборке рекомендуется папка с файлами, полученная в результате декомпиляции с помощью apktool. Файлы кода, которые представляют из себя набор инструкций для виртуальной машины Dalvik, собираются обратно в архив классов без каких-либо проблем. В то время как преобразование из Dalvik в Java и обратно может привести к проблемам несовместимости. Как следствие, программа будет работать некорректно. Поэтому для успешной модификации программ, а не только ради исследования, Вам необходимо изучить инструкции Dalvik.
Сборка
Собрать такие файлы обратно в APK достаточно просто. Для этого необходимо запустить apktool с соответствующим флагом сборки и передать ему путь к папке с декомпилированным приложением внутри. Например, если у нас есть папка app, которая размещена в том же каталоге, что и apktool, то команда будет выглядеть так:
java -jar apktool.jar b app
После сборки готовый APK файл будет лежать в каталоге app/build. Далее необходимо подписать APK. Делается это для того, чтобы приложение работало на устройствах, где запрещена отладка. То есть, запуск неподписанных приложений на таких устройствах запрещен. Подробнее, о цифровых сертификатах и процедуре подписывания файлов можно прочитать здесь.
Подписать файл очень просто: для этого есть специальная утилита под названием signapk. Ее необходимо запустить, передав в качестве аргументов сначала сертификаты, затем путь к приложению, и, наконец, путь для подписанного приложения (результат, куда сохранять). Выглядит это примерно так:
java -jar signapk.jar testkey.x509.pem testkey.pk8 *.apk apk_signed.apk
Где же взять такой сертификат, спросите Вы? Сертификаты можно найти в Интернет. Либо сгенерировать самому. Подробную инструкцию о настройке и генерации всех необходимых файлов можно найти, например, здесь.
Заключение
Как видите, декомпиляция и сборка APK файлов достаточно простой процесс, который вдобавок можно автоматизировать, облегчая работу исследователю. Сама виртуальная машина Dalvik также проста в освоении и открыта, что, с одной стороны, снижает порог вхождения для разработчиков, с другой – является основной причиной столько большого процента пиратства именно на платформе Android. Отчасти поэтому разработчики, например, игр в основном не заинтересованы в выпуске интересных игр с сюжетом. Намного выгоднее при нынешнем отношении пользователей клепать поразительно похожие друг на друга фермы с донатом. Поэтому, покупаем приложения, поддерживаем разработчиков и в итоге получаем интересный контент. А вот донатить совершенно не нужно!
Всем спасибо, до новых встреч.