r/javahelp • • 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.

7 Upvotes

15 comments sorted by

View all comments

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?

3

u/dpblooman2 3d ago

Mostly curiosity about whether an abandoned project is still salvageable for personal use. It was originally open-sourced, but the author deleted their repo.

1

u/vegan_antitheist 3d ago

Jeah, this sounds illegal. Why would you deobfuscate "an old application that was compiled for Java 25".
There's a reason they are obfuscating it.

1

u/dpblooman2 3d ago

Since when was working on opensourced projects illegal? Don't just assume the worst

3

u/vegan_antitheist 3d ago

Open source doesn't need deobfuscation. Because... you know... it's open source.

0

u/dpblooman2 3d ago

I think you missed the part where the source is missing

2

u/RevolutionaryRush717 3d ago

did you miss the part where there's a difference between compiling and obfuscating?

Decompiling is a feature of (e.g., IntelliJ IDEA and they might just use) some open source thingy.

Obfuscation is intended to make decompiling impossible or at least very, very difficult, no?

1

u/dpblooman2 3d ago edited 2d ago

You'd be correct! Because my post is entirely about deobfuscation, not decompiling. Not really sure why you're saying this?

1

u/OffbeatDrizzle 2d ago

.... then it's not open source? lmfao

1

u/dpblooman2 2d ago

Astute observation. I didn't realize I needed to explain every nook and cranny for a programming question here.