4

I don't want my class to be decompiled.

I have gone through some of the articles and found a patent site Zelix KlassMaster

Is there any free tools available in the market which works in the similar way..

8 Answers 8

5

As far as I know there are no free tools with the same set of functions.

In my opinion the mix between ProGuard and Stringer Java Obfuscator is the best and also most cheap way to protect Java and Android applications.

N.B. I'm CEO at Licel LLC. Developer of Stringer Java Obfuscator.

Sign up to request clarification or add additional context in comments.

1 Comment

If you are affiliated with Stringer it is imported to mention that. stackoverflow.com/faq#promotion
4

Proguard is the best available free and open source obfuscator. Obfuscators jumble your class, field and method names so that it becomes difficult to make sense out of the decompiled code.

Zelix Klassmaster is a commercial obfuscator and is one of the best in the commercial space. Also, it has some additional feature to encrypt the string constants to that the strings arent visible when decompiled. There are also some other commercial tools like yguard, DashO-pro, Allatori and Smokescreen etc.

4 Comments

That said, it's impossible to completely prevent decompilation. Obfuscation is the best you can do.
True. Also, obfuscation in itself is not very simple to achieve specially in large projects with multiple modules with interdependencies. But, sure this is way.
From what I've seen, Zelix is hardly the best among commercial obfuscators. But then again, they're a waste of time and money anyway.
@Antimony I have a couple of questions: (1) Why is Zelix hardly the best? (2) Why are obfuscators a waste of time and money?
1

You can obfuscate your code, so that when it de compiles it isn't easy to read (for programmer)

Comments

1

You can't specifically stop it being decompiled. After all, a decompiler only has to be able to read the byte code to turn it into source code, and reading the byte code is also what the JVM has to do. So if you were to come up with some way to prevent programs from reading the byte code, the JVM wouldn't be able to run your class.

As others have pointed out, obfuscation is the way to go if you REALLY need to do this, but I would question whether you really do need to. It's also worth pointing out that if you do use obfuscation, finding bugs will be much harder because stack traces will also be obfuscated.

Comments

1

Obfuscation is certainly a way to protect your code. Also, there are other tools which encrypt your classes and provide a custom classloader which can decrypt and load your class at runtime. This is not a very foolproof way but yes there are tools doing that.

Comments

0

You can't prevent a java class from beeing decompiled. However, you can make the life of someone who will try to understand your code very very hard. This is the task of a so called obfuscator, like KlassMaster.

Please see this list for Open Source obfuscators.

Please see also one of my questions: https://stackoverflow.com/questions/1872170/how-to-protect-intellectual-property-in-java-app

Comments

0

Unfortunately in Java like in JavaScript getting to the source code is easy. Understanding it is another thing. If you try hard enough and send date through dozens of functions each doing a small part and passing it along then obfuscating it and maybe add some fake functions you might just give enough head eke to those with ill intentions enough of a head eke that they will quit before succeeding.

Comments

0

I'm using Zelix Klassmaster for my app Visual Watermark for about two years now. No new program "cracks" were released since then. So, it seems a good option for protecting Java apps.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.