Strong Plugin Obfuscation

Status
This thread has been locked.

Sniper

Software Developer
Supreme
Feedback score
65
Posts
1,312
Reactions
695
Resources
0
I'll cut to the chase.
Pricing:
$2.50 one time obfuscation
$5 unlimited obfuscations

Images:
These are all shown using jd-gui
[Obfuscated] [Not obfuscated]


unknown.png



no hate

Sniper#8762
 
Last edited:
PebbleHost
High performance, consistent uptime and fast support. Minecraft hosting that just works.

Sniper

Software Developer
Supreme
Feedback score
65
Posts
1,312
Reactions
695
Resources
0
reserved
 

GotoFinal

Feedback score
1
Posts
33
Reactions
15
Resources
0
"strong".
Jd GUI crashes now for even normal non obfuscated java 8 (and sometimes even java 7) code, it is just old decompiler made for java 5/6.
And changing all strings to this stuff is not a good idea in some places, as this can decrease performance a lot, and it is still pretty easy to break. Especially if you use reflection-based mode, where it does encrypt string based on line numbers - this can make code just too slow to use on server.

Good obfuscation should make some use of illegal class names, it is then funny how Class.forName(MyClass.class.getName()) throws error as java can't even understand that name.
GpFUb3v.png

Some of them are not empty packages too, just weird unicode names that renders just as space or nothing.
(PS: that 2 separate classes needed to be in more valid package as they were used by reflections, I just had a lot of annotations to control classes/method to obfuscate in given way (or remove debug methods that would simplify decompiling) to simplify code development process)

And that would be still pretty easy to crack, but already much harder, as like trying to obfuscate this again in proguard will fail - so it is not that easy to change that illegal names to something that can be imported into IDE. But if someone would want to decompile that - few days would be probably still enough.

(this is AutoIn plugin available on spigot, no longer maintained, also obfuscation was stronger some time ago, but sadly for cauldron support I needed to make it weaker as forge was not able to load that classes)

Obfuscation is only a time barrier, if plugin is shit then you can even put source code on github and still no one would steal it, if it is something more interesting then if anyone would want to crack it - they will. It is just about "do I want to waste x hours to do this".

And I would not also consider my obfuscation as "Strong" one, so your one is just most basic thing.
Also you left eclipse project files that would make decompiling a bit easier too... and preserved packages so it is even easier to later guess original names of everything, anyone would be able to decompile something like this in about a hour.

Change invocation of every method to invokedynamic instructions, and still apply all other obfuscation methods. Then maybe it will be close to something "Strong":
MmQlz6v.png
 
Last edited:

Drakonn

Feedback score
1
Posts
72
Reactions
36
Resources
0
"strong".
Jd GUI crashes now for even normal non obfuscated java 8 (and sometimes even java 7) code, it is just old decompiler made for java 5/6.
And changing all strings to this stuff is not a good idea in some places, as this can decrease performance a lot, and it is still pretty easy to break. Especially if you use reflection-based mode, where it does encrypt string based on line numbers - this can make code just too slow to use on server.

Good obfuscation should make some use of illegal class names, it is then funny how Class.forName(MyClass.class.getName()) throws error as java can't even understand that name.
GpFUb3v.png

Some of them are not empty packages too, just weird unicode names that renders just as space or nothing.
(PS: that 2 separate classes needed to be in more valid package as they were used by reflections, I just had a lot of annotations to control classes/method to obfuscate in given way (or remove debug methods that would simplify decompiling) to simplify code development process)

And that would be still pretty easy to crack, but already much harder, as like trying to obfuscate this again in proguard will fail - so it is not that easy to change that illegal names to something that can be imported into IDE. But if someone would want to decompile that - few days would be probably still enough.

(this is AutoIn plugin available on spigot, no longer maintained, also obfuscation was stronger some time ago, but sadly for cauldron support I needed to make it weaker as forge was not able to load that classes)

Obfuscation is only a time barrier, if plugin is shit then you can even put source code on github and still no one would steal it, if it is something more interesting then if anyone would want to crack it - they will. It is just about "do I want to waste x hours to do this".

And I would not also consider my obfuscation as "Strong" one, so your one is just most basic thing.
Also you left eclipse project files that would make decompiling a bit easier too... and preserved packages so it is even easier to later guess original names of everything, anyone would be able to decompile something like this in about a hour.

Change invocation of every method to invokedynamic instructions, and still apply all other obfuscation methods. Then maybe it will be close to something "Strong":
MmQlz6v.png
Or just you know open source... people cant leak stuff if its already out there and other devs can improve upon or fork your code there is so many reasons why open source is better so just use it.
 

Sniper

Software Developer
Supreme
Feedback score
65
Posts
1,312
Reactions
695
Resources
0
W
"strong".
Jd GUI crashes now for even normal non obfuscated java 8 (and sometimes even java 7) code, it is just old decompiler made for java 5/6.
And changing all strings to this stuff is not a good idea in some places, as this can decrease performance a lot, and it is still pretty easy to break. Especially if you use reflection-based mode, where it does encrypt string based on line numbers - this can make code just too slow to use on server.

Good obfuscation should make some use of illegal class names, it is then funny how Class.forName(MyClass.class.getName()) throws error as java can't even understand that name.
GpFUb3v.png

Some of them are not empty packages too, just weird unicode names that renders just as space or nothing.
(PS: that 2 separate classes needed to be in more valid package as they were used by reflections, I just had a lot of annotations to control classes/method to obfuscate in given way (or remove debug methods that would simplify decompiling) to simplify code development process)

And that would be still pretty easy to crack, but already much harder, as like trying to obfuscate this again in proguard will fail - so it is not that easy to change that illegal names to something that can be imported into IDE. But if someone would want to decompile that - few days would be probably still enough.

(this is AutoIn plugin available on spigot, no longer maintained, also obfuscation was stronger some time ago, but sadly for cauldron support I needed to make it weaker as forge was not able to load that classes)

Obfuscation is only a time barrier, if plugin is shit then you can even put source code on github and still no one would steal it, if it is something more interesting then if anyone would want to crack it - they will. It is just about "do I want to waste x hours to do this".

And I would not also consider my obfuscation as "Strong" one, so your one is just most basic thing.
Also you left eclipse project files that would make decompiling a bit easier too... and preserved packages so it is even easier to later guess original names of everything, anyone would be able to decompile something like this in about a hour.

Change invocation of every method to invokedynamic instructions, and still apply all other obfuscation methods. Then maybe it will be close to something "Strong":
MmQlz6v.png
Wow that is very resoursful. I'll change some settings here on my obfuscator to make it stronger.
 

Lockett

Supreme
Feedback score
9
Posts
434
Reactions
158
Resources
0
Or just you know open source... people cant leak stuff if its already out there and other devs can improve upon or fork your code there is so many reasons why open source is better so just use it.
There are also so many reasons it's bad. Like for proprietary projects.
 

Drakonn

Feedback score
1
Posts
72
Reactions
36
Resources
0
There are also so many reasons it's bad. Like for proprietary projects.
why bump this old thread? Anyway, for "proprietary projects" (the correct term is proprietary software but whatever) 99.95% of them are already on sites like that spigot leak site (sure your know what one im talking about) and obfuscating them isn't gonna stop people from re-uploading them... server owners can probably get a good 70-80% of there plugins from these sites and the rest custom but apart from the 10 year old kids most of them don't, they pay for them as they know supporting the developer by buying the plugin means they will continue to update it and provide support. It took me ages to figure out how to pull a plugin from git and compile it myself and im sure 99.999% of people don't know how to so if server owners can get better support continued updates and not waste there time by paying a few bucks they are still going to. The few people who would be scummy enough to compile it aren't either they are just going to go find a reupload of it somewhere.

If the software is completely private and just for 1 persons use and not posted for sale anywhere then sure don't open source it (there's also no need to obfuscate it though), but if your posting stuff for sale on mcm or spigot it should be open source. Helps better the community and hugely increases the buyers trust in you and your software. It also helps your buyer out and might even change there mind on weather they buy it or not if they know that can edit it to there needs if they want to or update it to newer versions of mc in the event the dev becomes inactive.
 
Last edited:
Status
This thread has been locked.
Top