Декомпилируйте 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 файл-проводник, который также помогает просматривать и редактировать исходный код.