【问题标题】:Alternate method to reversing than reading smali code?与阅读smali代码相反的替代方法?
【发布时间】:2019-03-15 19:21:45
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: java android smali dex2jar


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 我是否可以至少获得 .class 扩展名中的完整代码,以便我可以打开并查看代码,如果不编辑它?
      猜你喜欢
      • 2013-08-18
      • 2018-01-06
      • 1970-01-01
      • 2014-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-12
      • 1970-01-01
      相关资源
      最近更新 更多