Avatar ·

如何将DEX文件反编译回Java源代码?

大家好!我是Android开发和逆向工程的新手。我遇到了一个问题:我有一个APK文件(普通的Android应用),想看看内部逻辑是如何实现的。我知道Java字节码(JVM)会被编译成Android的DEX(Dalvik Executable)。但如何从DEX中获取可读的Java代码呢? 我尝试过将APK作为ZIP压缩包打开并找到classes.dex,但它是二进制文件,无法直接阅读。我还尝试使用dex2jar工具将DEX转换为JAR,然后在反编译器中打开JAR(例如JD-GUI)。在某些情况下这能成功,但代码经常被混淆(变量名变成a、b、c),或者直接崩溃。 以下是我反编译后看到的一个示例: ```java public class a { public static String a(String str) { int i = 0; for (int i2 = 0; i2 < str.length(); i2++) { i = (i + str.charAt(i2)) * 17; } return Integer.toHexString(i); } } ```