繁体   English   中英

Android如何在完成逆向工程后阅读混淆的Java代码

[英]Android how to read obfuscated Java code after getting through reverse engineering

在使用dex2jar和JD-GUI等工具后,我从APK获得了Java类。 因为每个人都知道Java字节代码可以转换回Java类,因此大多数情况下它通过一些工具进行优化和混淆(比如在Android的情况下使用ProGuard),以使其与其他人保持安全。 所以我得到的是混淆代码,我想让它没有错误,可读,易懂,以便我可以为了我自己的目的进一步修改它(仅供我个人使用,我并不是要侵犯任何版权)。 所以任何帮助,即建议,工具,帮助材料使这个混淆的代码更接近开发人员写的或使其无错误和可理解将帮助我很多。 目前我的重点是逆转ProGuard使用的混淆技术,就像我在自己的项目上尝试逆向工程一样,发现:

  • 通过使用逆向工程生成的R文件进行匹配,可以使用id更改int资源值。
  • if / else条件主要转换为while(true) ,有些则continue s和break s。
  • 内部类主要分解为单独的文件

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

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

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

DeGuard

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

您应该使用Enjarify ,这是由谷歌所拥有,而不是dex2jar。 此外, apktool适用于反编译APK的资源,这不是由dex2jar和enjarify处理的。

其他工具包括jadxprocyonfernflowershow-javasmali / baksmali


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

这应该有所帮助: DeObfuscator

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM