对mzphp加密的一些分析

大兄弟 2017年08月13日0   848

这种加密是16年才在网上传开的,使用率远不及找源码等老牌加密,不过应该是推出了有些时间的,他是用来宣传他旗下的一款框架的,估计作者不是主打这款加密的。


这个加密比较奇怪,他不是像找源码、phpjm那样从外层加上一层保护壳,而是直接混淆变量和参数,再加几行混淆字符。做到了加密和压缩双全的功效。所以刚被发现的时候,这种加密的解密还是相对头疼的。具体长什么样?看图

75101494772364.png

是不是很懵逼。其实不然,看我对他处理一下。

3d651494772134.png

这样处理一下就能看懂一点端倪了,时间关系,我就不对变量进行修复了。

现在我们可以看到explode函数,这就是解密的关键,加密方把参数,文本,数值等重要的数据都存在了这一串乱码中(经过我处理的不是乱码,可读并可复制),现在我复制explode()那一段代码执行一下。

ebff1494773067.png

出现了非常尴尬的画面。。这个数据是二层压缩的(官方分别有一层和二层加密)。。。但是我想了想,根据他的套路,我们可以直接再构建一次自解密。好的,说干就干。

f5761494773528.png

这就是他的第二层自解密,套路是一样的。好的,刚才我们得到了一个数组,然后根据数组的数据构造上图的php语句。结果如下 

2c601494773885.png

我是用十进制,前面二层解密是16进制的,你也可以用16进制,其实都一样的,编译的时候都是会转成统一编制。

好了,运行就可以得到下图数据,他把可见可读的数据都统一压缩到变量中了,还原的时候就直接看二层解密的那个变量是什么,然后根据后面引用这个变量相应键值的地方替换掉原来的数据。

ebb11494773830.png


总的来说这样加密是一个不错的思路,但是作者只做到了混淆,没做到外壳保护。这样对代码的保护是起不到作用的。很久以前的找源码vip版加密就实现了内部混淆+外部套壳的加密思想,所以说mzphp玩的只是找源码很久以前的套路。不过找源码的内部混淆做不到像mzphp这样完美,还是很容易就还原了。