В этой статье я расскажу как модифицировать установочные файлы для платформы Android (файлы с расширением apk).
Фактически apk представляет из себя zip-архив, который легко распаковывается обычным архиватором. Но если стоит задача распаковать его по полной, то лучше воспользоваться инструментом apktool, которому в свою очередь нужен JDK.
Итак, качаем и устанавливаем:
- JDK (Java SE Development Kit)
- apktool - достаточно просто распаковать этот архив, например в корень диска C:
Для распаковки apk-файла (в моем примере это D:\test\my_app.apk) в командной строке выполняем:
C:\ApkTools\apktool-d.cmd D:\test\my_app.apk
В результате в каталоге, где лежал наш apk появится папка my_app в которой будет находиться содержимое нашего apk.
После внесения необходимых изменений необходимо собрать новый apk.
Если же вы хотите получить доступ к исходному коду, вам необходим самый важный файл – classes.dex. Но он тоже зашифрован. Для того, что бы получить доступ к его содержимому, необходимо воспользоваться программой Dex2Jar и JD-GUI.
После того как вы скачали эти две программы, распакуйте их. Скопируйте файл classes.dex в папку с Dex2Jar и выберите в свойствах classes.dex «открыть с помощью… – Dex2Jar», файл будет перепакован в .jar, который можно уже открыть для редактирования в JD-GUI.
Упаковка apk
- Выполняем сборку нового apk-файла.
В командной строке запускаем:
C:\ApkTools\apktool-b.cmd D:\test\my_app - После сборки в
D:\test\my_app должна появиться папка build\apk. В ней есть всё, что упаковывается в apk, кроме папки
D:\test\my_app\assets.
Итак, копируем в build\apk папку assets - Далее выделяем все файлы/папки, жмем на любом правой кнопкой, в появившемся меню выбираем WinRAR - Добавить в архив...
На вкладке Общие - формат архива: ZIP
На вкладке файлы - поле "Файлы, добавляемые в архив без сжатия" вставить:
*.arsc *.png *.ogg
У полученного ZIP - архива меняем расширение на apk. - Подписываем полученный
apk:
C:\ApkTools\Sign.cmd my_app.apk
Sign.cmd внутри архива apk создаст папку META-INF, в которой будут храниться сертификат, контрольные суммы и подписи всех файлов
Удачных модов. И направляйте свою энергию в правильное русло, ну вы поняли о чем я :)
P.S.: Если положить apk непосредственно в C:\ApkTools\, то отпадет нужда прописывать полные пути в командной строке.
Спасибо, друг, помог =)
ОтветитьУдалитьХерня! Скачал всё, установил яву, закинул в сраный apktool переименованную в d.apk прогу и нихрена:
ОтветитьУдалитьProcessing...
Exception in thread "main" brut.androlib.AndrolibException: brut.directory.Direc
toryException: java.io.FileNotFoundException: D:\test\d.apk (═х єфрхЄё эрщЄш єъ
рчрээ√щ Їрщы)
at brut.androlib.ApkDecoder.hasSources(Unknown Source)
at brut.androlib.ApkDecoder.decode(Unknown Source)
at brut.apktool.Main.cmdDecode(Unknown Source)
at brut.apktool.Main.main(Unknown Source)
Caused by: brut.directory.DirectoryException: java.io.FileNotFoundException: D:\
test\d.apk (═х єфрхЄё эрщЄш єърчрээ√щ Їрщы)
at brut.directory.ZipRODirectory.(Unknown Source)
at brut.directory.ZipRODirectory.(Unknown Source)
at brut.androlib.res.util.ExtFile.getDirectory(Unknown Source)
... 4 more
Caused by: java.io.FileNotFoundException: D:\test\d.apk (═х єфрхЄё эрщЄш єърчрэ
э√щ Їрщы)
at java.util.zip.ZipFile.open(Native Method)
at java.util.zip.ZipFile.(Unknown Source)
at java.util.zip.ZipFile.(Unknown Source)
... 7 more
!!!Aborted!!!
Хуйня ваша прога! Я тупо заменил расширение файла с .apk на .zip и зипером разархивировал всё без проблем! Затем перекодировал classes.dex прогой dex2jar.bat в classes_dex2jar.jar и снова хуйня! Ваша гонимая прога кроме как читать этот файл нихера больше не может - хуем его править?
Если руки кривые и голова не шарит то нечего гнать!!! я сам пользуюсь этими прогоми и все нормуль!! Хотя честно говоря первый раз у м4ня тоже ни чего не получилось.
УдалитьК чему этот грубый коммент? В ответ на него я должен кинуться разбираться почему у тебя не получилось?
ОтветитьУдалитьЯ написал как делал сам и у меня все сработало. Если можешь объяснить как делают нормальные пацаны - welcome.
Ты просто слепой или дурак???
ОтветитьУдалитьFileNotFoundException: D:\test\d.apk-ЭТО ОЗНАЧАЕТ что нет такого файла!!!
аха - я просто слепой дурак, который этот файл переименовал, закинул в указанную папку и теперь прога, которую я носом ткнул в этот файл доказывает мне, что такого файла в дире нет )))) жжош денис - тебе в камеди выступать
ОтветитьУдалитьизвини за грубость - видать настроение было не пушистое, а прога реально не пашет - у меня с ней так и не вышло... обычно бывает так - начинаешь с одной фиговиной работать, но в процессе она оказываецца шлак и ты находишь кучу другого софта, с помощью которого всё получаецца, но в какой последовательности и что именно ты применял и к чему забываецца, ты довольный собой и своим творением, выкладываешь то, что у тебя было изначально забыв упомянуть все приключения в "пути" и у остальных тоже естественно ничего не получаецца и они, мягко говоря, "выходят из себя"
ОтветитьУдалитьПроверьте совпадает ли регистр имени файла
ОтветитьУдалитьD:\TEST\D.APK и D:\test\d.apk - разные файлы
Это прикол многих java-утилит
Мужики, будьте терпимей! Хреновая статья - да и хрен с ней. Есть где написано лучше - не стесняемся кидаем пруфлинки в комменты )))
так что надо делать
ОтветитьУдалить?
Єто просто жесть - сделал всё как тут написано - создало оно мне папку з названием аплика, НО - она пуста. Что ж за прикол такой ?
ОтветитьУдалитьспасибо автору прога реально работает я вот сижу и переделываю игру прикольно спасибо большое
ОтветитьУдалить"файл будет перепакован в .jar, который можно уже открыть для редактирования в JD-GUI"
ОтветитьУдалитьничего не выйдет. Это не редактор а декомпилятор. Максимум что можно сделать, сохранить все классы в яве и то кривой яве. Открой эти классы для редактирования к примеру в JBuilder и там будет столько ошибок, просто ужжжжжоооссс! :) И все на этом. Компильнуть обратно никак :)
Процесс запустился и не остановился:
ОтветитьУдалитьhttp://hkar.ru/exzB
Dex2Jar с этим проблемка не хочет создовать jar подскажите почему так
ОтветитьУдалить