2012-08-27 30 views
4

在使用诸如dex2jar和JD-GUI之类的工具之后,我从APK获取了Java类。正如大家都知道的那样,Java字节码可以转换回Java类,所以大多数情况下它都是通过一些工具(如ProGuard用于Android的情况下)进行优化和混淆处理,以使其可以与其他人保密。所以我得到的是混淆的代码,我想使它无错误,可读性强,易于理解,这样我就可以进一步修改它(仅供我个人使用,我并不意味着违反任何版权)。因此,任何帮助,即建议,工具和帮助材料使这些混淆代码更接近开发人员编写的代码或使其无误并且易于理解将帮助我很多。目前,我的重点是要扭转使用ProGuard的喜欢,当我试图在我自己的项目的逆向工程混淆技术,结果发现:Android如何在通过逆向工程后读取混淆的Java代码

  • int资源值可以用ID来改变通过它与产生R文件匹配逆向工程。
  • if/else条件大多转换为while(true)和一些continue s和break s。
  • 内部类主要是分手到单独的文件

因此,任何其他技术和辅料用于上述方式可以描述如何正确地扭转他们的将是非常有益的。

回答

6

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

有些工具比dex2jar和jd-gui更好。其中之一是apk-deguard,它声称颠倒混淆的过程。从他们对页面:

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安全研究人员主要使用的付费工具。

2

这应有助于: DeObfuscator

+0

我试过这个软件,我选择文件,当按deobfuscate它并没有生成任何新的类文件,所以我认为改变被重写到相同的类文件,当我打开这个类文件在JD-GUI中查看Java源代码时,它显示相同的源代码以前不是单行更改 –

1

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