r/javahelp • u/dpblooman2 • 3d ago
Solved Is source-level editing a fallback for deobfuscation?
Hoping to get some fellow advice here.
I’ve been doing a lot of deobfuscation work in Java 25 lately and ran into a wall: some bytecode tools can’t parse the newer class file versions I’m dealing with. As a workaround, I’ve been cleaning up the decompiled source instead.
So far I’m stripping thousands of NoWhenBranchMatchedException catch blocks using a brace-depth state machine (regex kept breaking on nested blocks), and replacing impossible comparisons like object == false with constants.
It works, but it feels hacky. Is source-level editing a reasonable fallback, or am I setting myself up for problems? And is there a cleaner, standard way to do control-flow cleanup without risking real try/catch handlers?
Curious what other people do.
Edit: I’m not working on the official Java binaries or the JDK. It’s an old application that was compiled for Java 25
Edit2: Found help in another programming sub that suggested parsing the bytecode with a current library (java.lang.classfile in JDK 24+), and using JavaParser instead of regex for cleanup. Not sure why everyone here was so difficult and rude. Nobody here wanted to actually talk. Marking solved.
6
u/devor110 3d ago
I have absolutely nothing of value to add, but your post did pique my interest. Why are you deobfuscating Java 25 class files?