我正在开发专有软件,该软件将以.exe文件的形式分发。为了使用它,用户将必须使用其白名单凭据(用户名+密码)进行身份验证。
我遇到的问题是,在我所从事的行业中,有很多“黑客”将想反编译可执行文件,获取源代码并将其免费分发给其他人。
为了对抗这些逆向工程的尝试,我想混淆代码并使用各种编译器,但到目前为止没有成功。
我尝试过的
py2exe
编译器:“黑客”设法在一小时内反编译可执行文件。pyinstaller
编译器:与相同py2exe
。pyminifier
混淆代码:“黑客”成功地反混淆代码。Oxyry Python Obfuscator
:与相同pyminifier
。那些设法对我的程序进行反编译和反混淆的人解释说,上述4种工具的开源性质意味着它们的算法是众所周知的,并且有解决方案可以对使用这些开源编译器和混淆器。
我还没有尝试的内容:
Pyarmor
混淆我的代码。我听说它很好,但是它要花50美元,所以我想确保它是购买许可证之前最好的混淆工具。Cython
库为我的程序创建一个C包装器,使其使用C而不是Python进行编译。由于C二进制文件很难阅读,因此会使程序更难于反编译。但是,我从来没有用C编程过,我想知道是否有更好的方法来编译我的源Python代码,而无需学习C。我不会尝试的是:
还请考虑,如果“黑客”甚至能够在不访问源代码的情况下禁用白名单系统,那么他将能够无限制地将其分发给其他用户。因此,我正在寻找一种方法,该方法不仅将使反编译程序变得极为困难,而且几乎不可能与二进制文件混为一谈并关闭程序代码的某些部分。
由于该线程中的人员没有提供令人满意的答案,因此我将解释为保护程序安全所做的事情。正如我之前提到的,我的目标不是创建一个“无法破解”的程序,而只是一个足以阻止业余爱好者安全的程序。
我在一个逆向工程论坛上获得了帮助,因此为那些人提供了支持!
首先,我使用Nuitka将.py文件转换为基于C的独立可执行文件。然后,我通过VMProtect传递了一个生成的.exe文件来混淆二进制文件。
我已经对一些CS毕业生进行了测试,他们无法破解或模糊化该程序,所以这对我来说已经足够了。
PS那些说“这是不可能的”或“您的业务模式是错误的”的人,除非您有反向工程经验,否则请不要发表您的看法,谢谢:)