我在MATLAB中编写了一个程序,我正在考虑将程序部署到最终用户的三种方法。第一种方法涉及将.m文件转换为p代码,然后将其部署到可以在MATLAB中使用p代码但不能自己查看代码的最终用户。第二种方法涉及使用MATLAB编译器和MATLAB Builder NE将.m文件编译为C#,然后使用Visual Studio对代码进行模糊处理并创建最终产品。第三种方法涉及使用MATLAB Compiler和MATLAB Builder EX创建Excel加载项,并将Excel加载项部署到最终用户。
我想知道有人在我正在考虑的这三种部署方法中对每种方法进行逆向工程或破解并获得对代码的访问权限是多么困难。我知道创建一个无法破解或逆向工程的程序基本上是不可能的,但是任何部署方法都比其他方法更难破解吗?我知道p代码可以让最终用户访问文件的名称,我猜这可能会帮助某人对您的程序进行逆向工程。
预先感谢您的协助!
答案 0 :(得分:1)
就从部署版本反向设计代码的能力而言,这些方法在实践中几乎没有差别。
Builder for .NET不会将MATLAB转换为C#。 MATLAB编译器和Builder产品存档并加密您的代码,并创建一个小包装器(.NET程序集或Excel加载项),它将其解压缩并根据MATLAB编译器运行时执行它。在执行期间,虽然仍然是加密的,但是解压缩的文件在临时目录中是可见的,因此文件名的可用方式与p编码相同。
P编码对您来说最简单,最便宜,但需要您的最终用户拥有MATLAB的副本以及您使用的任何工具箱。使用Compiler和/或Builder产品部署的产品不需要它们,但是您需要购买这些产品,部署过程稍微复杂一些。
答案 1 :(得分:1)
我最后向MathWorks致电了这个问题。 MathWorks工程师告诉我,他不允许告诉我加密的类型,因为它是专有信息。
我还问过MathWorks工程师对Compiler和Builder EX或Builder NE使用了什么样的加密。他说这使用128位AES加密来加密m文件,但程序中使用的其他类型的文件不像.dll或图片文件那样加密。
然后我问哪个加密,p代码或部署的程序使用了Compiler和Builder。他说很难说,因为它们是不同类型的加密,但在使用Compiler和Builder之前,您实际上可以将.m文件转换为p代码,从而使使用Compiler和Builder部署的保护产品至少与p-一样强大。代码。