使用Matlab pcode的风险

网上有很多人说有见过Matlab pcode的decompiler,但我至今没有找到可以直接下载使用的工具,其实pcode是把.m预解析了一下,并且用AES来加密。但尽管如此,使用Matlab pcode有很大的被破解的风险。Matlab允许对pcode进行单步跟踪,我们可以step in到任何.p调用过的.m文件。即如果我们写了一个用内置solve函数解一元二次方程组的程序并编译为.p文件,那我们就会直接step in到Matlab的内置solve函数里,直接看到了我们在解的方程的表达式,从而暴露了我们的目的。

如果我们几乎没有调用过Matlab内置的函数,把所有使用到的.m文件都编译为.p文件,这样便无法得知函数之间的调用关系。但是依然可以通过单步跟踪来观察变量数值的变化,来猜测程序的目的,尤其是对于那些对程序本身功能就很熟悉的人。有一个解决办法,把所有.m的代码都放在一行里,并且在把需要的结果数据传输出去之后,clear一下,这样编译成.p之后进行debug,就看不到任何数据和变量名了。


如何编译生成.p:

>> pcode filename

如何设置断点:

>> dbstop in filename at line

运行filename进入debug模式:K>>

再之后可以用F11来step in,用F10来step out,最后可以用dbquit命令来退出debug模式。

你可能感兴趣的:(Matlab)