decompile and protector

Hi
what is the best decompiler for exe and apk(unity export)
and best protector for exe and apk against decompilers
thanks

Does anyone have an opinion?

What do you need this for? Cheat /edit protection? People who are dedicated to cheating will find a way.

To identify ways to penetrate and protect my game against

Protect your game against who, Ze Germans?!

https://www.youtube.com/watch?v=6QxWHzWfdbA

If you’re concerned about the user ‘hacking your save files,’ or ‘cheating in your game,’ just don’t be. There’s nothing you can do about it. Nothing is secure, it is not your computer, it is the user’s computer. If it must be secure, store it on your own server and have the user connect to download it.

Anything else is a waste of your time and the only person you’re going to inconvenience is yourself when you’re debugging the game and you have savegame errors. Work on your game instead.

Remember, it only takes one 12-year-old in Finland to write a script to read/write your game files and everybody else can now use that script. Read about Cheat Engine to see more ways you cannot possibly control this.

The good news is that most likely nobody will care enough about your game to bother, so you’re safe.

And as far as stealing your code or assets, don’t bother trying to stop that either:

https://discussions.unity.com/t/854519/7

1 Like

I want to make it difficult to decompile the exe and apk files

We get that. The question is why? What good do you hope to come from that?
Difficult does not mean impossible.
No matter what you do to your game, if you deliver it to the user computer, they have access to it. Unless it’s encrypted, they can read it. And you want them to be able to read it, since otherwise they could not use the software. No matter what you do, there will always be a way to reverse engineer any kind of protection you build into your game.
In the end you are only going to hurt yourself, by slowing down debugging, maintenance, and development in general, as well as indirectly hurting the quality of your game since that time might have been put into something actually useful.

If you are afraid of people stealing assets or code… there is not a whole lot you can do about that in the grand sheme of things. However, intellectual property is protected, and there are licenses and whatnot, so at least if somebody re-used your stuff you could sue them.

If this is about preventing cheats / edits, then literally the only thing you can do is to make everything important happen server-sided. Now the only way for people to cheat or edit their stuff would be to get access to your server, which is a lot easier to protect. However, depending on the game you’d need to protect… pretty much everything. So this in turn leads to a huge performance demand for your server. The types of games that do this are usually MMORPGs. Or competitive games as a cheat prevention feature, to some extend.

Really ask yourself:

  • What are you afraid of people doing?
  • Who are the people you are afraid of doing so?
  • What kind of minority are you dealing with (usually a tiny fraction of players, say 1-5%)?
  • What harm do these people cause you or your game in doing so?
  • What kind of protection do you need, if at all possible, to prevent this undesired behaviour?
  • Is the cost of implementing a solution to this problem worth more than the problem causes in terms of damage?

The answer to that last question is usually a huge bold No. The answers to the questions before it tell you why.
And unless you get more specific about what it is you do, or what it is you want to prevent, we cant help either way.

Awesome. Good luck. I’ll be working on making games. :slight_smile:

Is it that time of the month again? Someone wants to protect a Unity project? LOL. yawn

1 Like

Yes, hard does not mean impossible
But our game is not so important that the whole world will try to steal it
My goal is a few local small competitors in our country and no more will be stolen from our game.
so i want a program for encrypting exe and apk or making one file from my project or things like this for make it difficult (Of course the best known programs in this way)

There is a point in protecting something even if it doesn’t become impossible. The whole point is increasing the amount of effort it takes to break it. Which in return does it’s job of deterring many people who either get frustrated or don’t know what the next step is.

Some posts here really sound like a defeated mindset. “nothing is secure” and so “don’t bother, just give up”.

It’s a time-value thing.
Some people here make it sound like it’ll consume days or weeks while you work on your game, at best, it’ll take a few minutes, maybe a few hours, once.

Hell, you can just tick il2cpp and most of your users, after they decompile it to .dlls, wouldn’t know how to proceed. Usually for them they can just edit the .dll, save, done.

Author: First thing you can do is enable il2cpp if it supports your platform. You get performance improvements and one step users will have to overcome, no matter how easy it is.

To decompile unity dlls (your game code), people usually use dnSpy.
And for assets, there’s some programs out there you can search for. Not sure how you’d protect those though, never really looked into it.

You can also convert your C# code to gibberish (only for the build), to add a step of annoyance to anyone trying to read and understand your code, this comes with the issue of possibly making it harder to understand where bugs are. You can make your own tool, use one online, or buy an asset for that (in the unity store).

These are easy things to do, that time little to no time and yet prevent a ton of users from fiddling with your code.

This isn’t meant to make it impossible, anyone with just a little amount of knowledge on the subject can get through it, but the majority of normal users don’t have that.
All they know is changing a .dll and saving it, if something goes wrong in that step, they just give up.

1 Like

I feel like you do not read the replies. How do you intend to encrypt something, if you then have to deliver it to the user computer including the decryption key, since otherwise they wouldnt be able to run it at all?
So that’s pointless.

If you are looking for common decompiling tools… just google. APK is a file format. Decompiling it is so common that one of your first search results should be an online decompiler where you can upload the file. So it’s basically on the same level as editing PDFs.
If you insist on any kind of protection, you need to compile the important parts of game code into a C library or something. Those can also be decompiled into assembler code, but it’s much harder to reconstruct original code. But at this point it got little to do with Unity anymore.

Most users wont even be able to decompile the apk, or put in the (tiny) effort to look it up. Or have their phone rooted to be able to use some helper apps. And with ‘most’, we are likely talking about at least 95% of people, if not more. Of those who know what they do, those who want to take the extra step will.
But sure. If ticking the il2cpp checkbox is all OP needs, it does not hurt ticking it. The thing is, after all these posts we still have no idea what it is OP wants to protect. He never once mentioned, even after being asked several times, whether he wants to protect assets, code, savegames, or whatever else. This may not even be about code, or preventing edits, it may be about their 3D models. In which case, there are tools to read them at driver level. Nothing you can do about that. So without OP finally saying what exactly his or her goal is, everything else we do here is guesswork, or throwing random solutions around. And 12 posts into a discussion, it’s indeed frustrating to have no idea what is even asked.

1 Like

I have read your entire article, but I do not mean to make it impossible, it means to make it difficult for our small organizational competitors, not the whole world.
The goal is the codes, I thought you realized
I just want in a few small competing organizations, people who are not even professionals, not to be able to simply steal the codes and sell them to a higher organization that is the customer and …
The goal is to make it harder and harder for the thief to regret the value gained

Okay, just this one more time:

  • you’re wasting your time
  • your competition is always more clever and better at it than you, they figure out
  • work on your games, not on its protection → deliver better games for your paying customers, don’t waste your time on non-paying criminals

This has been discussed on these forums a million times.

2 Likes

Well, i asked or implied in every post, soo… :stuck_out_tongue:

For starters you could build using IL2CPP as suggested by PutridEx, if that’s viable for your project. Next level would be to write your code directly in C++ and compile it into a library which you then access through your Unity code.
But either way, people who want to, will get your code.

More important than this questionable protection is that it’s not legal for them to steal your code.
The code is your intellectual property. They cant just copy and use it. If you have an indicator (for example them having the same bug as your game), you can sue them. That is the most powerful protection you are going to get, and it’s absolutely free.

In the end it’s your decision, but consider that there is a reason pretty much everybody here thinks it’s a waste of time. Rather spend your time on writing good code, a good game, good mechanics that work well. Then your game will be successfull, and people trying to copy it will do just that: copy it. Why do they have to copy it? Because the original works well. But at that point your game is already released and theirs would still be in development. So you are a landslide ahead in marketing and getting customers, and unless they revolutionize your game idea (in which case, fair game), why would people switch to something copied from the game they already enjoy?
Last but not least, while technically every ‘non-trivial’ piece of code is protected as intellectual property, for most things there is already free code lying around the internet. A game is usually nothing more than applying existing ideas in an ideally non existing format. So the code itself is usually not that important compared to the arrangement of features. Of course there are exceptions, as you may not want people to copy a custom made algorithm… but those really are the exceptions in game development.

I guess i said all i have to say, so i wish you the best of luck on your journey.

1 Like

Yes, I can understand what you are saying and there is thinking about these issues for everyone, so they are not new
But as I said, our subject is different
Our customers are not directly people
It is an order and sale within the organization and it is possible for certain people who are related to us to steal and sell it secretly.
Also, in general, apart from discussing the importance of code, the importance of time and cost of construction is discussed, so it is something more than a puzzle of existing code.

I am mostly looking for programs that take the output file and, by adding complexity, prevent easy analysis and return of code and reuse at a low cost.