I am developing proprietary software that would be distributed in a form of .exe file. In order to use it, users will have to authenticate with their whitelist credentials (username + password).
The issue I have encountered is that in the industry I am selling on, there are a lot of "hackers" who will try to decompile your executable file, get the source code and distribute it for free to other people.
To combat these reverse-engineering attempts, I have tried to both obfuscate my code and use various compilers, but so far to no success.
What I have tried:
py2execompiler: "hackers" managed to decompile executable in an hour.
pyinstallercompiler: same as with
pyminifierto obfuscate the code: "hackers" managed to deobfuscate the code.
Oxyry Python Obfuscator: same as with
Those who managed to decompile and deobfuscate my program explained that the open-source nature of those 4 tools means that their algorithms are well-known and there are solutions out there made to reverse-engineer programs that use these open-source compilers and obfuscators.
What I didn't try yet:
Pyarmorto obfuscate my code. I've heard it is good, but it costs 50$, so I want to be sure that it is the best obfuscation tool out there before purchasing the license.
Cythonlibrary to create a C-wrapper for my program, making it compiled in C instead of Python. Since C binaries are much harder to read, it will make the program significantly harder to decompile. However, I have never programmed in C, and I want to know if there are better ways to compile my source Python code, without the need to learn C.
Themida/Code Virtualizer. Each tool costs over 150$, so before purchasing them, I want to know if that would be the best way to solve my problem.
What I am not going to try:
- Completely rewrite my whole program in a language other than Python. I am not strong in other languages, plus the program itself consists of over 5,000 lines of code, so I can't just completely rewrite it for the sole purpose of making it harder to decompile.
- Making program open-source: This is a for-profit software, so I am not going to release the proprietary code, thank you for understanding.
- Making the program a web-app: Since my program directly interacts with files on the user's PC, I can't make it web-based, it has to be on the user's PC.
Please also consider that if "hacker" will be able to disable the whitelist system without even accessing the source code, he will be able to distribute it to other users with no limitation. Therefore, I am looking for a way that will not only make it extremely hard to decompile the program, but also make it almost impossible to meddle with bytecode/binaries and turn off certain parts of the program's code.