P代码机制介绍
p意思是预解析(preparsed version)。即将.m文件里的代码预解析一遍,生成p文件。当再次调用时,实际上调用的就是.p文件。当MATLAB将某文件转换为p代码文件时,该文件将进行模糊处理而非加密。虽然.p文件中的内容难以理解,但不应将其视为安全的。
m代码到p代码的转换是通过调用pcode函数实现。
pcode(fun)
对 fun.m 中的代码进行模糊处理并生成名为 fun.p 的文件,即所谓的p文件。如果fun是一个文件夹,则该文件夹中的所有脚本或函数文件都在p文件中进行模糊处理。MATLAB 在当前文件夹中创建p文件。原始的 .m 文件或文件夹可以位于搜索路径上的任何位置。
pcode(fun1,...,funN)
从列出的文件创建p文件。如果输入了任意个文件夹,则 MATLAB 为各文件夹所包含的每个 .m 文件创建一个p文件。
pcode(fun,'-inplace')
在脚本或函数文件所在的同一个文件夹中创建p文件。
MATLAB代码加密的原因
大多数的MATLAB用户都在进行复杂算法的设计,或者非常个性化的GUI软件开发,这一过程通常非常费时费力,甚至需要严格保密。如果我们想让其他人用上自己开发的代码(所实现的功能),又不想让对方知道源代码,就需要对代码进行加密。
MATLAB的加密方式探讨与应对策略
p code文件使用AES加密进行代码的加密,因此使用的密钥只有Mathworks知道,当然也只有Mathworks可以将其转换回。值得深思的是,由于matlab本身可以读取这些文件,因此现有的MATLAB软件中应该包含了解密算法和密钥,我们可以从中可以进行反向工程。
其实加密技术和破解技术就是矛与盾的关系,在实际当中弄是相互依存的,本人对此也研究过一段时间,也有一些技术上的突破,基本上能够实现还原m代码。
注意:一般逆向之后的文件,所有的注释都没了,部分语句可能发生格式改变。
Matlab 作为数学应用软件,几乎每个数学专业的必修课!因为matlab真的是太强大了,尤其是矩阵运算啥的,C++很多时候还跟不上!
但是自己知识产权还是要保护起来的。所以我们经常会使用P-code进行加密。
但是好多同学热衷于把mathworks的加密的p代码还原,其实那些开源的如果能仔细看就不错了. 当然,窥测隐私是一种癖好,也满足了特殊好奇心,大家乐此不疲的心情是可以理解的.比如我们的徐鹏就是一个大佬。非常优秀的留学美国的中国大陆的90后小伙子.
这个在线工具的迄今为止的三个阶段:
1.向作者的邮箱发邮件获取授权码使用;
2.后来干脆取消了授权码;
3.现在,封了
这些都是显然的问题,不知道你们问来问去干啥? 编程序还不懂英文? 不认识的查查字典; 不要这么简单明了的问题还跑来问.
我最初是不想要authorization code的; 所以只是发博客介绍了下(第一个阶段); 没想到好奇的人很多,然后Peng Xu就干脆解放了这个工具,大家自由使用; 终于捅到mathworks去了, 推测是mathworks某个中国员工做的吧.
好了,收封口费,然后这个共享工具不能用了.就是这样吧.
整件事情告诉我们, matlab现在用的p code加密方式是半透明的;对高手来说,并没有加密的效果,顶多过滤了注释;源代码仍然可见. 然后, 华人的智慧真的是很厉害的,只有你想不到的,没有做不到的–这才是中国这些年来崛起如此迅速的原因之一.
不过问题不大,凡事都是有办法的,可以私信博主