78模板网分享cms建站教程,提供网站模板、网站插件、办公模板等模板教程免费学习,找模板教程就上78模板网!

PHP goto解密核心算法

有个朋友做了一个跨境商城小程序, 让我给加几个功能, 一个是收集用户的身份认证信息,一个是商品编辑与跨境商品关联.

就这么两个小的功能, 其实是很简单的,就是前台一个表单,后台数据库存一下就好了.

但是实际比预想的麻烦, 因为他用的是微擎的框架, 结果核心代码全是经过了goto加密的,说到这了,就讲一下php的加密问题.

php这种语言作为一种脚本语言, 代码保护一直以来是个问题, 见过好几个版本的加密, 其中最复杂的算是php官方的zend加密吧.

其他的都是自己创造的. 没有发现几个好的.

比如下面这种:eval base64加密的

这种算是代码压缩后,eval加密,
这种解密非常简单, 就是把里面的代码base64解密,然后就出来了,没什么难度

这个解密的理论支撑是算法基础里面的, 有序无环拓扑排序问题其实实际上这个是有环的

这里面有几个技术点

1.unicode解密

里面x73x2e这种的全是unicode加密的,

2.goto干扰问题

例如: goto a; goto b; 这种的 后面的goto b就是干扰项

return $a; goto c; 后面这个goto c也是不可能走到的

exit $e; goto d; 这种后面也是不可能走到的

3.goto限制条件解析

像 foreach, switch,try 这种都是一个封闭的解析范围,里面的 goto都是独立的封闭空间

要提前单独解析

4.分支干扰

里面的goto条件作了一些干扰,进行了翻转

比如: if(a) 这种, 实际看到的if(!a),这种是非正常写法的,要进行翻转

5.for循环的检测, for循环也是转换成了goto

6.if分支的解析

if 有好多分支 ,if, else, elseif ,if直接跳出,这些

7.代码的提取技术

要提取label

要提取出 function

提取出 foreach ,foreach里面还有嵌套的

8.代码格式化问题

如何对代码进行格式化,这也是个复杂点, 要对代码了解的非常清楚

以上是一些要点, 经过完善已经全部实现

最终实现了, 上传文件立马返回解密后的文件,是标准化的,无语法错误, 容易阅读的,

中间优化过程经历了好多困难;这个东西看起来简单,实际上做完美还是不容易;

先写到这吧, 之后会吧一些技术难点详细的跟大家分享.

本文链接:http://78moban.cn/post/8149.html

版权声明:站内所有文章皆来自网络转载,只供模板演示使用,并无任何其它意义!

联系技术
文章删除 友链合作 技术交流群
1050177837
公众号
公众号
公众号
返回顶部