Ok I’m kinda in a predicament right now.
I have a java program that I have split into a core/outside sections.
I collated my core into a java library that the outside code (which will be publicly released) can reference.
However, I do not want the contents of this java library to be decompilable.
So I went to find a good java obfuscator.
What complicates my situation is the fact that my java library isn’t exactly modular – it references/changes state of outside code (yes it’s terrible but whatever)
I’ve tried demos of all premium obfuscators (ZKM, allatori, etc) and free ones, but they either
- have very weak control flow obfuscation which is what I need
- halt because of references to java library’s/dependencies that are not in the jar itself but are still referenced.
Any advice?
If there are no obfuscators that have control flow obfuscation which meet your standards, then you will have to write your own obfuscator or submit a request to an existing vendor to improve their product.
Run both the external and internal parts of the program through the obfuscator, together at the same time. But write exclude rules for all of the external code. You should also write exclude rules for the public API of your internal code. If you don’t have a public API layer on your internal code, then you are going to have a hard time, because your external code will have to refer to your internal code by obfuscated names, which will make for very unmaintainable and hard to read external source code.