Я извлек файл Dex с помощью редактора Apk и декомпилировал с помощью Jadex. Теперь я хочу перекомпилировать Jar в Dex с помощью телефона Android. Может ли кто-нибудь мне помочь?
Как перекомпилировать Jar в dex с помощью телефона Android?
Ответы (1)
Я предполагаю, что вы имеете в виду Jadx, а не Jadex.
Jadx имеет команду сохранить декомпилированный проект как проект gradle.
Проект Gradle можно загрузить в студию Android. И теоретически вы можете затем перекомпилировать приложение и получить обратно приложение, которое работает так же, как исходное приложение.
Практически это не работает в 99,9% всех случаев, потому что:
- Jadx не удалось декомпилировать некоторые методы.
- Сгенерированный код содержит мелкие проблемы, которые необходимо исправить вручную
- Очень сложные функции могут быть декомпилированы, но код немного изменился и поэтому работает не совсем так, как исходный байт-код.
В общем, декомпиляция приложения с помощью Jadx — совершенно неправильный подход, если вы хотите его перекомпилировать. На мой взгляд, самый надежный способ декомпилировать и перекомпилировать приложение — использовать apktool. В декомпилированных исходных текстах smali вы можете изменить методы, которые хотите изменить. Для лучшего понимания кода вы также можете декомпилировать соответствующие классы/методы в Jadx.
Для упрощения создания небольших фрагментов вы можете использовать Android Studio: используйте части кода, декомпилированные с помощью Jadx, скопируйте их в проект Android Studio, скомпилируйте его и откройте скомпилированный APK-файл с помощью Jadx. Выберите класс, который содержит код, откройте для него вкладку samli и скопируйте из него код smali. Обычно это проще, чем программировать непосредственно на Smali. См. также этот вопрос: Преобразовать файл .Java в файл .Smali