6

在使用 dex2jar 和 JD-GUI 等工具后,我从 APK 中获得了 Java 类。众所周知,Java 字节码可以转换回 Java 类,因此大多数情况下它会通过一些工具进行优化和混淆(例如在 Android 的情况下使用 ProGuard),以使其免受其他人的影响。所以我得到的是混淆代码,我想让它没有错误、可读、可理解,以便我可以为自己的目的进一步修改它(仅供我个人使用,我无意侵犯任何版权)。因此,任何帮助,即建议、工具、帮助材料,以使这种混淆代码更接近开发人员编写的代码或使其无错误且易于理解,将对我有很大帮助。目前,我的重点是逆转 ProGuard 使用的混淆技术,例如当我尝试对自己的项目进行逆向工程时发现:

  • int通过匹配R逆向工程生成的文件,可以使用 id 更改资源值。
  • /条件大多转换为and 一些s 和ifs 。elsewhile(true)continuebreak
  • 内部类大多分解为单独的文件

因此,对于上述方式的任何其他技术和帮助材料,可以描述如何正确扭转它们将非常有帮助。

4

3 回答 3

12

没有一个神奇的工具可以将混淆的代码重构为可构建的项目。最有可能的是,您将无法将 APK 反编译和反混淆,使其成为干净且可维护的代码。这是一件好事。

有些工具比 dex2jar 和 jd-gui 更好。其中之一是apk-deguard,它声称可以逆转混淆过程。从他们的关于页面:

解除警戒

DeGuard ( http://www.apk-deguard.com ) 是一种新颖的 Android APK 统计反混淆系统,由苏黎世联邦理工学院软件可靠性实验室开发,该实验室开发了广泛使用的 JSNice 系统。与 JSNice 类似,DeGuard 基于从数千个开源程序中学习到的强大概率图形模型。使用这些模型,DeGuard 可以恢复 Android APK 中的重要信息,包括方法和类名以及第三方库。DeGuard 可以揭示处理 Android 恶意软件中敏感数据的字符串解码器和类。

您应该使用Google 拥有的Enjarify而不是 dex2jar。另外,apktool可以很好地反编译 APK 的资源,这不是 dex2jar 和 enjarify 处理的。

其他工具包括jadxprocyonfernflowershow-javasmali/baksmali


您将需要一个好的 IDE 来进行重构。JEB看起来是一个很好的重构工具。这是 Android 安全研究人员主要使用的付费工具。

于 2017-02-09T21:06:46.920 回答
3

这应该会有所帮助: DeObfuscator

于 2012-08-27T17:12:19.817 回答
0

逆向工程是一项艰巨的任务(我会说微妙的艺术),主要是碰运气,尤其是对于混淆代码,你可以做的是专注于一些特殊的功能,这似乎很明显,从那里开始,重命名和重构类,一个好的 IDE 也可能对你有很大帮助(我个人推荐:NetBeans)。

于 2012-08-27T17:32:45.737 回答