1

我正在反转一个android应用程序。我想修改和重建它。我使用APK Studio(它几乎是 apktool 的 GUI 版本)来获取 apk 中的文件。现在阅读smali代码非常困难。

我还尝试解压缩它,获取classes.dex,然后获取 jar 文件(使用dex2jar)并在jd-gui中打开它,但是该方法没有获得完整的源代码,是的,一些 java 代码显然丢失了。所以我不能用它来重建它。

因此,我可以使用任何替代方法来重建应用程序而无需通过 smali 代码?

我确切地知道我必须更改哪个类和哪个代码。但我无法在 smali 文件中找到相同的代码。

4

2 回答 2

3

通过dex2jar的两步转换然后反编译 Java 类文件是众所周知的问题。主要原因是 DEX 是基于寄存器的架构,而 Java 是基于堆栈的架构。两个系统之间的转换是复杂且容易出错的。

因此,我更喜欢“一步”反编译(直接 DEX 到 Java 源代码),因为它是由Jadx完成的- 一个 Dex 到 Java 反编译器

Jadx 通常可以反编译大部分方法。然而,对于非常复杂的方法或最初不是从 Java 源代码编译的方法,反编译可能会失败。

于 2019-03-15T11:21:45.450 回答
1

没有办法用 100% 正确的 java 代码反编译项目。这意味着您必须调整/修改大部分反编译源以重新编译它,这对于大型项目来说几乎是不可能的(或非常昂贵的)。最好的方法是修改 smali 代码,它可以很容易地重新编译回来,没有任何麻烦。只需投入 1-2 小时来学习 smali,非常容易。

于 2019-03-15T11:14:42.437 回答