admin管理员组

文章数量:1639831

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代码。

注意:一般逆向之后的文件,所有的注释都没了,部分语句可能发生格式改变。


有需要解码技术交流的,欢迎联系我,peace.yi@qq

本文标签: 文件加密代码工程matlab