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:
- Use
py2exe
compiler: "hackers" managed to decompile executable in an hour. - Use
pyinstaller
compiler: same as withpy2exe
. - Use
pyminifier
to obfuscate the code: "hackers" managed to deobfuscate the code. - Use
Oxyry Python Obfuscator
: same as withpyminifier
.
Those who managed to decompile and deobfuscate my program explained that the open-source nature of the 4 tools mentioned above 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:
- Using
Pyarmor
to 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. - Using
Cython
library 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.
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 1,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 binaries and turn off certain parts of the program's code.
hard to crack
and after a lot of different techniques that we tried цe came to the conclusion that everything is open source for you if you know assembler. So try to find a line between "Oh it will take a day to hack" and "I'd better pay several dollars for it". – Lail