首页 > 解决方案 > 如何使用 android 手机将 Jar 重新编译为 dex?

问题描述

我已经使用 Apk 编辑器提取了 Dex 文件并使用 Jadex 进行了反编译现在我想使用 android Phone 将 Jar 重新编译为 Dex 有人可以帮助我吗?

标签: androideditdexapktoolrecompile

解决方案


我假设您指的是Jadx而不是 Jadex。

Jadx 有命令将反编译的项目保存为 gradle 项目。

可以将 Gradle 项目加载到 Android Studio 中。从理论上讲,您可以重新编译该应用程序并取回一个与原始应用程序一样工作的应用程序。

实际上,这在 99.9% 的情况下都不起作用,因为:

  1. Jadx 未能反编译某些方法。
  2. 生成的代码包含需要手动更正的小问题
  3. 非常复杂的函数可能是可反编译的,但代码略有变化,因此与原始字节码不完全一样。

一般来说,如果您想重新编译应用程序,使用 Jadx 反编译应用程序是完全错误的方法。在我看来,反编译和重新编译应用程序最可靠的方法是使用apktool。在反编译的 smali 源代码中,您可以修改要更改的方法。为了更好地理解代码,您也可以在 Jadx 中反编译相关的类/方法。

为了简化 smali 代码段的构建,您可以使用 Android Studio:使用通过 Jadx 反编译的代码部分,将其复制到 Android Studio 项目中,对其进行编译并使用 Jadx 打开编译好的 APK 文件。选择包含代码的类,打开它的 samli 选项卡并从中复制 smali 代码。这通常比直接在 Smali 中编程更容易。另请参阅此问题:将 .Java 文件转换为 .Smali 文件


推荐阅读