慕村9548890
为了稍作澄清,在这里您可能会选择两条主要的路径,这取决于您想要完成的任务:将Dalvik字节码(Dex)反编译成可读的Java源。你可以很容易地用右2jar和JD-gui,正如弗雷德提到的。生成的源代码对于读取和理解应用程序的功能很有用,但可能不会产生100%可用的代码。换句话说,您可以读取源代码,但不能真正修改和重新打包它。请注意,如果源代码已与proGuard混淆,则生成的源代码将更难解开。另一个主要的选择是将字节码解压缩到斯马利一种专为这个目的而设计的汇编语言。我发现最简单的方法就是APKTool..一旦安装了apktools,就可以将其指向apk文件,并为应用程序中包含的每个类返回一个smali文件。您可以通过从新的Java源生成smali来读取和修改smali,甚至可以完全替换类(为此,可以用javac将.java源代码编译为.class文件,然后使用Android的dx编译器将.class文件转换为.dex文件,然后使用baksmali(smali反汇编程序)将.dex转换为.smali文件,如这个问题..这里可能有条捷径)。完成之后,您可以轻松地将apk打包回apktools。请注意,apktools没有对结果的apk签名,因此您需要处理这个问题。就像其他Android应用程序一样.如果你走斯马利路线,你可能想试试APK演播室,该IDE自动执行上述一些步骤,以帮助您对apk进行反编译和重新编译,并将其安装在设备上。简而言之,您的选择很大程度上是将代码反编译成Java(Java更易读,但可能是不可逆转的),或者将其分解为smali,这是比较难读的,但对于修改和重新打包经过修改的应用程序则要灵活得多。你所选择的方法将取决于你想要达到的目标。最后,建议胆量也很重要。它是一个重定向工具,可以将.dex和.apk文件转换为java.class文件,以便使用典型的java静态分析工具对它们进行分析。