PHP代码保护浅析

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/feibabeibei_beibei/article/details/100632230

今日无聊,正好一个网友问到这块,就随手写一篇水文,简单总结一下,这里简单的来总结一下PHP代码保护的现状和思路:

一、背景:

保护PHP就是保护知识产权之类的,包括一些重要的接口等等。

二、目前常用的方案:

对于PHP这类的动态语言的保护,感觉跟前面总结的js保护上差不多,无非就是:

  1. 加密;(强度最弱,没办法,这种动态解释语言的特性导致)动态调试或者hook来解决,当然瞪眼发也可以。
  2. 混淆;(就是一些局部的混淆,包括对于变量和代码中字符串的修改,强一点的会进行逻辑混淆);通过开源的php ast来进行反混淆处理。
  3. 虚拟机保护,老生常谈的问题,至于虚拟机的加强看跟本地层怎么很好的结合,以及Handler怎么更好的设计;比如魔方,逆向嘛,52有个大佬Ganlv研究的很透彻,可以去拜读;
  4. 还有就是引入编译,编译为字节码文件,进行解释执行,字节码跟解释之间有着对应关系,这时候就可以进行修改映射规则的修改;比如Zend Guard

目前反应Swoole Compiler强度是最强的,同时性能影响还不大,十分好奇对这个扩展加密比较感兴趣,当然我不会分析,一没有样本,二没有时间。

扫描二维码关注公众号,回复: 7658150 查看本文章

如果有样本可能会分析一下吧。

看到官网的说明如下:

(上面这张图来自郭新华曾经分享了Swoole Compile的加密过程,可以搜索得到他们的PPT:https://myslide.cn/slides/9137?vertical=1

我们知道像PHP这种动态语言一定运行在一个解释器上。

Zend bytecode解释器,这里可能做的是将Zend bytecode to LLVM ir,然后借助于llvm中很多很好的优化pass进行优化处理,同时也可以混淆处理。

网上有相关的开源参考:

https://github.com/jabez-php/llvm

类似于这种解释语言的bytecode其实都是可以转为llvm的ir的。

三、总结:

Swoole Compiler是把php编译为字节码或者更低层级的文件,然后提供客户一个扩展工具进行解释;对于Swoole Compiler来说可能对Zend虚拟机中的解释部分魔改的东西比较多,再加上其他的一些安全措施,可能带来的效果会比较强大,估计现在后多已有的破解套路都会失效,同时本身Swoole 就是传说中PHP 中的 Node.js,肯定在性能做了好大的优化,所以弥补了虚拟化保护中性能损失。

    由于之前完全没有接触过php这一块,都是在已有知识上YY的,仅仅作为参考。

参考:

https://www.anquanke.com/post/id/176767

猜你喜欢

转载自blog.csdn.net/feibabeibei_beibei/article/details/100632230