可通过pcode对MATLAB脚本文件进行加密处理,用于分享给第三方时,保护自己核心算法文件的所有权。
加密后的文件不改变程序功能,只是将程序设置为可使用但不可查看(包括加密者本人)。
代码一旦加密便不能被反编译。因此用户一定要注意备份源文件。
加密后的文件只能在MATLAB环境下使用。
注:执行中p文件优先于同名的m文件。
1 加密方法
MATLAB中对pcode的使用作了相关说明:
>> help pcode pcode - 创建对代码内容进行了模糊处理的可执行文件 此 MATLAB 函数 对搜索路径中 .m 文件或文件夹中的代码进行模糊处理,并生成扩展名为 .p 的 P 代码文件。例如,如果 item 是名为 mytest.m 的 .m 文件,则生成的文件是 mytest.p。如果 item 是一个文件夹,则该文件夹中的所有脚本或函数文件都经过模糊处理并保 存在当前文件夹中。在执行中 P 代码文件优先于对应的 .m 文件,即使已对 .m 文件进行了修改 也是如此。 pcode(item) pcode(item,"-R2022a") pcode(item,"-R2007b") pcode(item1,item2,...,itemN) pcode(___,"-inplace") 输入参数 item - 要模糊处理的 .m 文件或文件夹 字符向量 | 字符串标量 item1,item2,...,itemN - 要模糊处理的 .m 文件或文件夹的列表 字符向量 | 字符串标量 另请参阅 which 已在 R2006a 之前的 MATLAB 中引入 pcode 的文档
- 操作
2.1 加密 .m文件
将下列函数保存为times.m文件:
function [f] = times(a,b) f = a * b ; end
此时对文件进行加密:
>> pcode times >>
加密后文件夹里出现p文件:
此时即使删去.m文件,p文件也能单独运行。
甚至更改p文件的名字,也能运行
>> times3(2,3) ans = 6
2.2 加密文件夹
pcode除了加密文件,还可以加密文件夹。
如图,在code文件夹里放置两个m文件:
将MATLAB工作目录设置为要加密文件夹的上一层:
如下加密:
>> pcode code >>
加密之后,在加密文件夹同级目录下出现加密后的所有文件:
2.3 加密其它文件
如加密.mat文件:
>> pcode matlab >>
2.4 加密GUI
GUI也是一种.m文件,直接对GUI的名字加密即可。加密方式同m文件。
加密之后用户只能运行GUI,但不能查看GUI后端代码。
2.5 其它加密方法
p文件被破解是可能的。使用 MATLAB Compiler 将源代码文件生成独立应用程序(.exe)会更安全。且能脱离MATLAB环境运行,但文件大小呈千倍放大。后续会介绍。