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

标签 python c compilation exe obfuscation

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

我遇到的问题是,在我销售的行业中,有很多“黑客”会尝试反编译您的可执行文件,获取源代码并免费分发给其他人。

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

我尝试过的:

  • 使用 py2exe 编译器:“黑客”设法在一小时内反编译了可执行文件。
  • 使用 pyinstaller 编译器:与 py2exe 相同。
  • 使用 pyminifier 混淆代码:“黑客”设法对代码进行反混淆处理。
  • 使用 Oxyry Python 混淆器:与 pyminifier 相同。

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

我还没有尝试过的:

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

我不会尝试的:

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

另请考虑,如果“黑客”无需访问源代码即可禁用白名单系统,他将能够不受限制地将其分发给其他用户。因此,我正在寻找一种方法,不仅可以使反编译程序变得极其困难,而且几乎不可能干预二进制文件并关闭程序代码的某些部分。

最佳答案

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

我在一个逆向工程论坛上得到了帮助,所以支持那些人!

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

我已经在几个 CS 毕业生身上测试过,他们无法破解或反混淆程序,所以这对我来说已经足够了。

附言那些说“不可能”或“你的商业模式不对”的人,除非你有逆向工程经验,否则请不要分享你的意见,谢谢:)

关于python - 保护在 Python 上运行的 .exe 程序源代码的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59117900/

相关文章:

compilation - JIT 编译器是否有可能在幕后利用 GPU 进行某些操作?

c++ - Oracle 7 ProC++ 预编译代码

python - 根据列表的长度传递给 python 方法

python - 使用循环连接 .wav 文件

java - 在 Java 上加载一个 dll 库

c - 不在其运行时库中拆分参数的 Windows C 编译器?

Python:内存问题:基于标准的组合

python - 将字典插入到在 Python 中使用 JSON 创建的 SQL 数据库中

c - 一些组装说明

c++ - 链接 boost - 对 `boost::serialization::singleton_module::get_lock()' 的 undefined reference