【问题标题】:Android how to read obfuscated Java code after getting through reverse engineeringAndroid通过逆向工程后如何读取混淆的Java代码
【发布时间】:2012-08-22 04:49:06
【问题描述】:

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

  • int 资源值可以通过与逆向工程生成的 R 文件匹配来更改 ids。
  • if/else 条件大多转换为 while(true) 和一些 continues 和 breaks。
  • 内部类大多分解为单独的文件

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

【问题讨论】:

    标签: java android obfuscation deobfuscation


    【解决方案1】:

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

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

    解除警戒

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

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

    其他工具包括jadxprocyonfernflowershow-javasmali/baksmali


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

    【讨论】:

      【解决方案2】:

      这应该会有所帮助: DeObfuscator

      【讨论】:

      • 我试过这个软件我选择文件,当按下去混淆它不会生成任何新的类文件,所以我假设当我打开这个类文件以查看 JD 中的 java 源时,更改被重新写入同一个类文件-GUI 它显示与以前相同的源代码,而不是单行更改
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-09-01
        • 2011-09-09
        • 2013-01-25
        • 1970-01-01
        • 2010-12-12
        • 2011-01-08
        • 1970-01-01
        相关资源
        最近更新 更多