【问题标题】:How to protect MATLAB compiled application from distribution?如何保护 MATLAB 编译的应用程序不被分发?
【发布时间】:2012-10-24 06:56:34
【问题描述】:

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

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

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

【问题讨论】:

  • 是否可以选择使用 Matlab Builder NE 或 Matlab Builder JA 翻译代码?您可以在生成的文件中加入一些商业副本制作工具。

标签: matlab protection piracy-prevention piracy piracy-protection


【解决方案1】:

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

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

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

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

【讨论】:

  • 我想知道在编译之前将脚本转换为 p-code 是否有帮助。
  • @bdecaf 对不起,我犯了一个错误。 m 文件在明文中不可见,因此无需将它们转换为 p 代码。我想说的是,简单地部署 MATLAB 代码并不能提供一个强大的许可和限制再分发解决方案。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2016-10-29
    • 1970-01-01
    • 1970-01-01
    • 2011-01-16
    • 2018-05-11
    • 2012-05-09
    • 2015-09-18
    • 1970-01-01
    • 2012-06-17
    相关资源
    最近更新 更多