simpledeobf icon indicating copy to clipboard operation
simpledeobf copied to clipboard

Obfuscated 'SourceFile-Attribute' in deobfuscated Inner Classes

Open EmanuelMairoll opened this issue 7 years ago • 4 comments

When deobfuscating a Jar (tested with 1.8.9.jar and stable_20 mappings), despite being named correctly in the code, the "InnerClass-Name" Attribute of the Outer Class Files, as well as the SourceFile-Attribute of Inner Class Files do not change. This actually "confuses" FernFlower decompiling the Inner Classes back to obfuscated names, which makes it pretty much unusable with IntelliJ.

This is a example, namely the C03PacketPlayer and its inner classes, examined with 'Java Class Editor' by tanmaykm: http://classeditor.sourceforge.net image

image

EmanuelMairoll avatar Dec 07 '17 14:12 EmanuelMairoll

It seems like you are trying to deobfuscate the Minecraft jar itself. This is not the intended use case, ForgeGradle will do that for you. Simpledeobf is meant to deobfuscate other mods, which generally do not have inner classes with obfuscated names.

That being said, this is a possible blind spot, and it looks like it's a (intentional) limitation of the ASM library that I use for the remapping, see here.

I've pushed a commit that will also remap inner class names, but I can't replicate your setup. Can you checkout the master branch, and try deobfuscating with that to see if it solves your problem?

octarine-noise avatar Dec 15 '17 16:12 octarine-noise

Despite being such a tiny fix it now seems to works flawlessly. I already managed to fix it myself using another Application pretty much "fixing" the output jar. If you are interested, I did not upload it on a GitHub-Repo: RICAF.txt Thank you anyways, at least deobfuscating the Minecraft jar itself is now also a feature you can list in your README 🙂

EmanuelMairoll avatar Dec 15 '17 17:12 EmanuelMairoll

Wait... I don't really know what is happening there, but... image

EmanuelMairoll avatar Dec 15 '17 18:12 EmanuelMairoll

Ummm... yeah, looks like it's not quite as simple as that. Names are definitely mixed up, CrashReportCategory and EnumChatFormatting should not be subclasses of C03PacketPlayer.

I'll take a deeper look at what's going on when I have some time.

octarine-noise avatar Dec 15 '17 18:12 octarine-noise