7

我如何保护 MATLAB 编译的 .exe 免受:

  • 逆向工程
  • 未经授权的分发?

我应该使用哪些打包程序、保护工具等?

4

2 回答 2

5

我以前也遇到过这个问题。以下是一些想法:

  • MATLAB 编译的二进制文件实际上是 ZIP 档案,在运行时解压缩(可能到用户可访问的临时文件夹或主文件夹)。
  • 文件本身使用 AES 加密,这并不理想,因为理论上可以恢复密钥。
  • 上述情况使得exe使用基于用户的密钥对最终文件进行额外加密以限制重新分发是毫无意义的,因为解压缩的文件将在运行时可用。从这个意义上说,它等同于仅mcc用于保护。
  • 另外一个问题:分发中的 MEX 文件未加密。您可以从 MCR_CACHE 中获取 mex 文件并直接使用它。Java 类也是如此。
  • 因此,除了加密可执行文件本身之外,您还需要一个解决方案来加密/解密由 MATLAB 可执行文件执行的磁盘写入/读取
  • 显然,您需要能够指定要加密的磁盘访问 - 您希望用户能够提供输入数据并读取他的输出
  • 理想情况下,该解决方案还将二进制文件的加密副本保存在内存中,并且仅在需要时解密它们,即在执行/访问一段代码/数据时
  • 此外,解决方案应检测到代码是从调试器执行的,并在这种情况下关闭程序
  • 对加密过程进行逆向工程以提取密钥应该很困难。使用纯软件解决方案总是有可能(并且比使用硬件解决方案更容易)获得密钥。

我们最终使用了一个涉及 USB 加密狗的解决方案。它即时执行加密/解密,或多或少地解决了上述复杂性。它适用于客户端/服务器设置,即,您可以在服务器上安装 USB 加密狗,客户端与服务器联系以检查许可证并运行代码。但是,当时仅在 Windows 上支持完全加密。我不确定我是否应该在 SO 上提及公司名称(我与它没有任何关联,但无论如何)。我可以私下告诉你我们使用了什么,或者你可以谷歌一下——这个市场上有替代品。

编辑我在原来的陈述中犯了一个错误。存档确实被解压缩到 MCR_CACHE 目录,但文件是加密的。但是,这仍然不能阻止编译程序的重新分发。虽然这些脚本不以明文形式提供,但从这个意义上说,您的知识产权是安全的。可以在此处找到有关 MATLAB 部署工具可以保护和不保护的内容的更详细描述,以及有关该方案安全性的简短声明。

于 2012-10-24T08:46:15.787 回答
0

有一个名为 Taurus 的商业实用程序,可用于复制保护 Matlab 应用程序,包括 pcoded 和编译格式。Taurus 托管了许多桌面应用程序中的典型复制保护方案。请参阅http://www.algorithmprotection.com/index.php/component/content/article/34-products/46-taurus

于 2013-05-02T10:59:44.750 回答