Closed KOLANICH closed 4 years ago
Krakatau is designed to handle obfuscated code, and thus it doesn't trust optional debug metadata.
Glad to hear that it targets obfuscated code. Anyway, sometimes I have to decompile nonobfuscated sources, but just not in Java, just to get the picture what is going on. So it may be useful to have this feature switcheable.
You can use another decompiler for such a case. Fernflower, CFR, Procyon (Luyten) are respecting such debug information.
CFR, Procyon (including Luyten) and JD-GUI fail in decompiling Scala code. CFR fails hard in the sense that decompilation is stopped on an error. Luyten and JD-GUI fail more softly - only some classes are not decompiled. About Fernflower .... I haven't used it, definitely should try. So currently Krakatau is the bsst decompiler for Java I know. It has some drawbacks like it cannot decompile lambdas, but it can decompile the classes on which all other decompilers I used had failed.
https://ci.appveyor.com/api/buildjobs/gtyiueue5u7joyiv/artifacts/compiler%2Fjvm%2Ftarget%2Fwindows%2Fkaitai-struct-compiler.msi (unpack it for example with lessmsi, contains a bunch of jars inside)
io/kaitaistruct/RuntimeConfig$.java
cfr:
krakatau: