【问题标题】:How Recompile Jar to dex using android phone?如何使用 android 手机将 Jar 重新编译为 dex?
【发布时间】:2020-01-27 18:46:00
【问题描述】:
我已使用 Apk 编辑器提取 Dex 文件并使用 Jadex 反编译现在我想使用 android Phone 将 Jar 重新编译为 Dex
谁能帮帮我?
【问题讨论】:
标签:
android
edit
dex
apktool
recompile
【解决方案1】:
我假设您指的是 Jadx 而不是 Jadex。
Jadx 有命令将反编译的项目保存为 gradle 项目。
可以将 Gradle 项目加载到 Android Studio 中。理论上,您可以重新编译该应用程序并获得一个与原始应用程序相同的应用程序。
实际上这在 99.9% 的情况下都不起作用,因为:
- Jadx 未能反编译某些方法。
- 生成的代码包含需要手动更正的小问题
- 非常复杂的函数可能是可反编译的,但代码略有变化,因此与原始字节码不完全一样。
一般来说,如果您想重新编译应用程序,使用 Jadx 反编译应用程序是完全错误的方法。
在我看来,反编译和重新编译应用程序最可靠的方法是使用apktool。在反编译的 smali 源代码中,您可以修改要更改的方法。
为了更好地理解代码,您也可以在 Jadx 中反编译相关的类/方法。
为了简化 smali sn-ps 的构建,您可以使用 Android Studio:使用通过 Jadx 反编译的代码部分,将其复制到 Android Studio 项目中,编译并使用 Jadx 打开编译好的 APK 文件。选择包含代码的类,打开它的 samli 选项卡并从中复制 smali 代码。这通常比直接在 Smali 中编程更容易。另见这个问题:Convert .Java file to .Smali file