温馨提示:本文翻译自stackoverflow.com,查看原文请点击:c - Best way to protect source code of .exe program running on Python?
c compilation obfuscation python exe

c - 保护在Python上运行的.exe程序源代码的最佳方法?

发布于 2020-04-29 16:09:15

我正在开发专有软件,该软件将以.exe文件的形式分发。为了使用它,用户将必须使用其白名单凭据(用户名+密码)进行身份验证。

我遇到的问题是,在我所从事的行业中,有很多“黑客”将想反编译可执行文件,获取源代码并将其免费分发给其他人。

为了对抗这些逆向工程的尝试,我想混淆代码并使用各种编译器,但到目前为止没有成功。

我尝试过的

  • 使用py2exe编译器:“黑客”设法在一小时内反编译可执行文件。
  • 使用pyinstaller编译器:与相同py2exe
  • 使用pyminifier混淆代码:“黑客”成功地反混淆代码。
  • 用途Oxyry Python Obfuscator:与相同pyminifier

那些设法对我的程序进行反编译和反混淆的人解释说,上述4种工具的开源性质意味着它们的算法是众所周知的,并且有解决方案可以对使用这些开源编译器和混淆器。

我还没有尝试的内容:

  • 使用Pyarmor混淆我的代码。我听说它很好,但是它要花50美元,所以我想确保它是购买许可证之前最好的混淆工具。
  • 使用Cython库为我的程序创建一个C包装器,使其使用C而不是Python进行编译。由于C二进制文件很难阅读,因此会使程序更难于反编译。但是,我从来没有用C编程过,我想知道是否有更好的方法来编译我的源Python代码,而无需学习C。

我不会尝试的是:

  • 用Python以外的语言完全重写我的整个程序。我不擅长其他语言,而且该程序本身包含1000余行代码,因此我不能仅仅为了使其更难于反编译而完全重写它。
  • 使程序开源:这是一个营利性软件,因此,我不会发布专有代码,感谢您的理解。
  • 使该程序成为Web应用程序:由于我的程序直接与用户PC上的文件交互,因此我无法使其基于Web,因此它必须位于用户PC上。

还请考虑,如果“黑客”甚至能够在不访问源代码的情况下禁用白名单系统,那么他将能够无限制地将其分发给其他用户。因此,我正在寻找一种方法,该方法不仅将使反编译程序变得极为困难,而且几乎不可能与二进制文件混为一谈并关闭程序代码的某些部分。

查看更多

提问者
TimesAndPlaces
被浏览
50
TimesAndPlaces 2020-02-11 12:23

由于该线程中的人员没有提供令人满意的答案,因此我将解释为保护程序安全所做的事情。正如我之前提到的,我的目标不是创建一个“无法破解”的程序,而只是一个足以阻止业余爱好者安全的程序。

我在一个逆向工程论坛上获得了帮助,因此为那些人提供了支持!

首先,我使用Nuitka将.py文件转换为基于C的独立可执行文件。然后,我通过VMProtect传递了一个生成的.exe文件来混淆二进制文件。

我已经对一些CS毕业生进行了测试,他们无法破解或模糊化该程序,所以这对我来说已经足够了。

PS那些说“这是不可能的”或“您的业务模式是错误的”的人,除非您有反向工程经验,否则请不要发表您的看法,谢谢:)