Декомпилируйте APK, измените его и затем перекомпилируйте
Мне нужно изменить существующий APK, изменить источники и затем перекомпилировать его.
- Я могу декомпилировать его с помощью dex2jar или apktool, он отлично работает
- Из файла jar я могу получить java-источники (используя jd-gui)
- Затем я могу изменить java файлы
Но теперь я хотел бы знать, как перекомпилировать java файлы и поместить их обратно в файл jar! (часть jar должна быть простой, основная проблема заключается в том, как перекомпилировать java файлы для Android)
Я знаю, что другое решение - использовать apktool, а затем изменять файлы smali, но, похоже, это очень сложно, когда мы хотим добавить много кода!
Мое приложение является базовым безвредным HelloWorld.
Ответы
Ответ 1
Благодаря Chris Jester-Young мне удалось заставить его работать!
Я думаю, что мне это удалось, это будет работать только на действительно простых проектах:
- С Dex2jar я получил Jar.
- С jd-gui я конвертирую свою Jar обратно в файлы Java.
-
С apktool я получил манифест android и файлы ressources
-
В Eclipse я создаю новый проект с теми же настройками, что и старый (проверка всей информации в файле манифеста)
- Когда проект создается, я заменяю все ресурсы и манифест теми, которые я получил с помощью apktool
- Я вставляю java файлы, извлеченные из Jar в src foled (соблюдая пакеты)
- Я изменяю эти файлы тем, что мне нужно
- Все компилируется!
/!\убедитесь, что вы удалили старый apk с устройства, будет ошибка, указав, что подпись apk не такая же, как и старая!
Ответ 2
Я знаю, что на этот вопрос ответит еще, я хотел бы передать информацию.
Существует онлайн-декомпилятор для андроидных apks
- Загрузка apk с локальной машины
- Подождите несколько минут.
- Загрузить исходный код в формате zip
Я не знаю, насколько это достоверно.
@darkheir Ответ - это ручной способ декомпиляции apk. Это помогает нам понять различные этапы создания Apk.
Еще один онлайн-компилятор Apk @Andrew Rukin: http://www.javadecompilers.com/apk
Еще стоит. Hats Off для создателей.
Ответ 3
-
Сначала загрузите инструмент dex2jar из следующей ссылки http://code.google.com/p/dex2jar/downloads/list
-
Извлеките созданный файл dex2jar
-
Теперь вы выбираете свой файл apk и изменяете его расширение .apk на .zip после изменения расширения, похоже, на zip файл, затем извлеките этот zip файл, который вы нашли classes.dex
file
-
Теперь выберите файл classes.dex и поместите его в папку dex2jar
-
Теперь откройте окно cmd и введите путь к папке dex2jar
-
Теперь введите команду dex2jar.bat classes.dex
и нажмите Enter
-
Теперь откройте папку dex2jar
, которую вы нашли classes_dex2jar.jar
file
-
Затем вы загружаете инструмент декомпилятора java из следующей ссылки
http://java.decompiler.free.fr/?q=jdgui
-
Последний шаг Откройте файл classes_dex2jar.jar
в инструменте java decompiler, теперь вы можете увидеть код apk
Ответ 4
Я знаю, что на этот вопрос был дан ответ, и я не пытаюсь дать лучший ответ здесь. Я просто расскажу о своем опыте в этой теме.
Как только я потерял свой код, и у меня был только файл apk
. Я декомпилировал его с помощью инструмента ниже, и он сделал мой день.
Эти инструменты ДОЛЖНЫ использоваться в такой ситуации, в противном случае это неэтично и даже иногда является незаконным (кража других усилий). Поэтому, пожалуйста, используйте его с умом.
Это мои любимые инструменты для этого:
javadecompilers.com
и чтобы получить apk из google play, вы можете отправить его или проверить на этих сайтах:
В день публикации этого ответа я тестировал все ссылки, и он работал идеально для меня.
ПРИМЕЧАНИЕ. Apk Декомпиляция не эффективна в случае кода, защищенного кодом. Потому что Proguard сжимает и обфускает код и переименовывает классы в бессмысленные имена, которые затрудняют понимание кода.
Bonus:
Основное руководство по использованию Proguard:
Ответ 5
dex2jar с jd-gui предоставит все исходные файлы java, но они не совсем то же самое. Они почти эквивалентны .class файлы (не 100%).
Поэтому, если вы хотите изменить код для файла apk:
-
декомпилировать с помощью apktool
-
apktool создаст файл smali (Assembly version of dex) для каждого java файла с тем же именем.
-
smali понятен человеку, вносить изменения в соответствующий файл,
перекомпилируйте, используя тот же apktool (apktool b Nw.apk <Folder Containing Modified Files>
)
Ответ 6
Используйте luckypatcher и удалите проверку лицензии, чем вам не нужно подписывать apk. Используйте winrar для изменения вашего измененного исходного кода без декомпиляции apk.
Ответ 7
Это способ:
-
Использование apktool
для декодирования:
$ apktool d -f {apkfile} -o {output folder}
-
Далее, используя JADX (на github.com/skylot/jadx)
$ jadx -d {output folder} {apkfile}
2 инструмент извлекает и декомпилятор в ту же папку вывода.
Простой способ: использование декомпилятора APK в Интернете
Ответ 8
Необходимо изменить расширение файла с .apk
на .zip
. Затем извлеките файлы, измените их и затем сжимайте до .zip
и не забудьте переименовать расширение обратно на .apk
.
Для этого нам даже не нужно использовать какой-либо компьютер. Я предпочитаю ES файл-проводник, который также помогает просматривать и редактировать исходный код.