Instead of restoring the assembly instructions, this set of tools restores the source code, which is usually a more human-friendly option:
- JADX: DEX to Java decompiler. It provides both a command-lines and a GUI tool to obtain close to the original source code in the Java language. In addition, it provides basic deobfuscation functionality:
Figure 10. Decompiled Android sample in JADX
- AndroChef: This commercial decompiler supports both Java and Android files and provides a handy GUI to go through the results.
- JEB decompiler: Another powerful commercial disassembling and decompiling solution, this supports both Dalvik and machine code.
- dex2jar: While not exactly a decompiler, this tool allows engineers to convert DEX files to JARs. After that, it becomes possible to use multiple Java decompilers to obtain Java source code, which has already been discussed in Chapter 8, Reversing Bytecode Languages: .NET, Java, and More.
- Ghidra: In addition to native executables, this powerful...