0

我在 MATLAB 中编写了一个程序,并且正在考虑将程序部署到最终用户的三种方法。第一种方法是将 .m 文件转换为 p 代码,然后将其部署给可以在 MATLAB 中使用 p 代码但自己看不到代码的最终用户。第二种方法涉及使用 MATLAB Compiler 和 MATLAB Builder NE 将 .m 文件编译为 C#,然后使用 Visual Studio 混淆代码并创建最终产品。第三种方法涉及使用 MATLAB Compiler 和 MATLAB Builder EX 创建 Excel 插件,并将 Excel 插件部署给最终用户。

我想知道在我正在考虑的这三种部署方法中的每一种中,对某人进行逆向工程或破解并访问代码有多难。我知道创建一个无法破解或逆向工程的程序基本上是不可能的,但是任何部署方法都比其他方法更难破解吗?我知道 p-code 使最终用户可以访问文件的名称,我猜这可能会帮助某人对您的程序进行逆向工程。

提前感谢你的帮助!

4

2 回答 2

1

就从已部署版本对代码进行逆向工程的能力而言,这些方法在实践中几乎没有区别。

Builder for .NET 不会将 MATLAB 转换为 C#。MATLAB Compiler 和 Builder 产品存档和加密您的代码,并创建一个小型包装器(.NET 程序集或 Excel 插件),将其解压缩并针对 MATLAB Compiler Runtime 执行它。在执行过程中,虽然仍然是加密的,但在临时目录中可以看到取消归档的文件,因此文件名的可用方式与 p-coding 相同。

P 编码对您来说是最简单和最便宜的,但需要您的最终用户拥有 MATLAB 和您使用的任何工具箱的副本。使用 Compiler 和/或 Builder 产品部署的产品不需要它们拥有任何东西,但您需要购买这些产品,并且部署过程稍微复杂一些。

于 2012-04-23T20:38:28.270 回答
1

我最终就这个问题打电话给 MathWorks。MathWorks 工程师告诉我,他不允许告诉我加密的类型,因为它是专有信息。

我还询问了 MathWorks 工程师 Compiler and Builder EX 或 Builder NE 使用哪种加密方式。他说这使用 128 位 AES 加密来加密 m 文件,但您的程序中使用的其他类型的文件没有像 .dll 或图片文件那样加密。

然后我问哪个具有更强的加密、p-code 或部署的程序使用 Compiler 和 Builder。他说很难说,因为它们是不同类型的加密,但在使用 Compiler 和 Builder 之前,您实际上可以将您的 .m 文件转换为 p-code,从而使使用 Compiler 和 Builder 部署的保护产品至少与 p-代码。

于 2012-04-24T16:13:54.003 回答