PHP代码混淆与加密——php screw plus
php是一个开源的、广受欢迎的语言,php应用常常是以代码明文的发式发布,但是有时候对于发布的代码我们想要进行保护,需要对php代码进行混淆与加密,让增加破解者的逆向难度,从而达到保护自己成果的目的。
在市面上流行的加密方案非常多,比如:
Zend Guard:遗憾的是不支持PHP7
IonCube PHP Encoder:优于Zend Guar。但是收费。
Swoole Compiler:这一款工具进行了很深入的编译优化,相关牛B。很可惜,也收费,还很贵。
PHP Screw Plus:基于扩展来加解密,采用AES256算法,还可阻止执行未经许可的php文件。性能、防破解各项指标非常均衡,更重要的是免费。
今天,我们重点介绍的就是PHP Screw Plus这一款工具。因为名字实在有点长,以下简称Screw。
在开始介绍之前,假设大家对Linux操作、PHP扩展编译已经了解。因为Screw只能运行在Linux平台上,所以我们都会在CentOS 7.5上进行操作演示。(PHP谁还跑在Windows上呢-_-)
1、下载代码:点击链接传送
这里,我们将下载的zip压缩包放在/www/setup/splot-php-screw-plus-master.zip
解压后,我们会得到/www/setup/php-screw-plus,进入这个目录。
2、编译扩展(这一步是编译扩展的套路操作,如果不清楚,可以给我私信)
phpize
./configure --with-php-config=php-config的路径
make
make install
修改php.ini
重启php可以看到phpinfo里成功加载了扩展php_screw_plus

备注,因为代码的加密是基于密钥的,所以在编译之前可以修改源码包下的php_screw_plus.h里的CAKEY对默认密钥进行修改,保存之后再进行编译,如下图:

3、编译加密工具
执行完第2步后,把扩展编译完成了,但是加密代码的工作还没有编译出来。这时候我们发现/www/setup/php-screw-plus目录下多了一个tools目录。进入tools目录执行make,可以编译出screw,这个就是加密php的工具:

4、实验
1) 假设站点根目录为/www/wwwroot/default。进入这个目录,新建index.php,内容如下:

2) 执行以下面令,加密这个文件:
/www/setup/php-screw-plus/tools/screw index.php
3) 加密后的代码如下:

是不是认不出来了:)
4) 从浏览器访问index.php,我们可以看到:

到这里,我们就大功告成了。在Laravel框架下,这个扩展没有任何问题,亲测有效,所以大家放心使用吧。因为这是一个开源工程,所以大家也可以在gitee上提交自己的push。
如果我们想对加密后的文件进行解密,只需要运行/www/setup/php-screw-plus/tools/screw index.php -d
即加密代码多了一个-d选项,之后就可以还原出明文。注意,如果是在另外的环境下进行解密,那扩展工具的key一定要一致,否则是解密不出来的。
好了,这个工具介绍到此结束。除了这个工具,这个世界上不缺大神,php-beast也是很值得一试的。github上有完整的说明,就不一一列举了,大家点击传送门吧:)
PHP代码混淆与加密——php screw plus的更多相关文章
- 小试.NET代码保护软件(代码混淆、加密)
有着微软人性化的开发工具VISUAL STUDIO和MSDN详尽的帮助,.NET 的开发效率的确高. 但是由于.NET同JAVA一样都采用中间语言.虚拟机/SDK等诸多特质,而且高等语言的类库编码规范 ...
- Python 代码混淆和加密技术
动机 Python进行商业开发时, 需要有一定的安全意识, 为了不被轻易的逆向. 混淆和加密就有所必要了. 混淆 为了增加代码阅读的难度, 源代码的混淆非常必要, 一个在线的Python代码混淆网站. ...
- Python代码混淆和加密技术
Python进行商业开发时, 需要有一定的安全意识, 为了不被轻易的逆向. 混淆和加密就有所必要了. 为了增加代码阅读的难度, 源代码的混淆非常必要, 一个在线的Python代码混淆网站. http: ...
- 免费的java代码混淆,程序加密
java代码可以反编译,特别是放在客户端的程序很用被剽窃,盗用.保护程序一般都有以下几个方法: 1.将class文件加密,这个是最安全的,但也费事儿,因为要重写classloader来解密class文 ...
- NET程序的代码混淆、加壳与脱壳
通常我们通过代码混淆.加密的形式达到软件保护的目的.在Web开发里我们接触过的可能就是JS代码加密了,可以通过对JS代码进行混淆.加密从而实现对核心JS代码的保护.如果没有接触过的可以在这里简单了解一 ...
- Android 代码混淆、第三方平台加固加密、渠道分发 完整教程(图文)
第一步:代码混淆(注意引入的第三方jar) 在新版本的ADT创建项目时,混码的文件不再是proguard.cfg,而是project.properties和proguard-project.txt. ...
- .Net 程序代码混淆加密工具 ILProtector
我的项目中某一部分信息比较敏感,但是.Net程序反编译之后连注释都看得到.需要把exe保护起来,如:代码混淆之后再加壳. Bing到一款.Net混淆工具 ILProtector 作为资深工具党, ...
- 推荐一个C#代码混淆器 .NET Reactor【转】
C#的代码辛苦写出来之后,一个反射工具,就可以完全显露出来. 当然,在做项目时,这个功能还不错.因为我就曾在一个项目上使用C#,没有进行任何混淆.结果在项目二年多之后,需要做一些调整,自己保存的源代码 ...
- Python程序的混淆和加密
混淆 为了增加代码阅读的难度, 源代码的混淆非常必要, 一个在线的Python代码混淆网站. 如果你觉得有用, 可以购买离线版本.同时需要注意的是, 这个混淆其实还是被很多人怀疑的, 因为即使混淆了, ...
随机推荐
- HTTP响应头拆分/CRLF注入详解
转自:https://blog.csdn.net/gstormspire/article/details/8183598 https://blog.csdn.net/cqf539/article/de ...
- linux环境下安装 openOffice4并启动服务
一.背景故事 openOffice是用来做office文档在线预览功能,把office文档转换成pdf交给前端显示. 之前系统开发过程一直没有将springboot服务怼上服务器,所以只安装了wind ...
- day18 装饰器(下)+迭代器+生成器
目录 一.有参装饰器 1 前提 2 如何使用有参装饰器 3 有参装饰器模板 4 修正装饰器 二.迭代器 1 什么是迭代器 2 为什么要有迭代器 3 如何用迭代器 3.1 可迭代对象 3.2 可迭代对象 ...
- TP5中的缓存使用
Thinkphp 5.0采用了 think\Cache 类来提供缓存支持 缓存支持采用驱动方式,所以缓存在使用之前,需要进行连接操作,也就是缓存初始化操作. 支持的缓存类型包括file.memcach ...
- Zookeeper是什么&怎么用
1.Zookeeper概述 Zookeeper 是一个开源的分布式协调服务框架 ,主要用来解决分布式集群中应用系统的一致性问题和数据管理问题 2:Zookeeper的特点 Zookeeper 本质上是 ...
- 自定义Mybatis自动生成代码规则
前言 大家都清楚mybatis-generate-core 这个工程提供了获取表信息到生成model.dao.xml这三层代码的一个实现,但是这往往有一个痛点,比如需求来了,某个表需要增加字段,肯定需 ...
- 数据可视化实例(十): 相关图(matplotlib,pandas)
相关图 https://datawhalechina.github.io/pms50/#/chapter8/chapter8 导入所需要的库 import numpy as np # 导入numpy库 ...
- 一文读懂Java中的动态代理
从代理模式说起 回顾前文: 设计模式系列之代理模式(Proxy Pattern) 要读懂动态代理,应从代理模式说起.而实现代理模式,常见有下面两种实现: (1) 代理类关联目标对象,实现目标对象实现的 ...
- (1)为什么要使用webpack?
1.在网页中有哪些常见的静态资源? Js: .js .jsx .coffee .ts Css: .css .less .sass .scss Images: .jpg .png .gif .bmp . ...
- 细说websocket快速重连机制
文|马莹莹 网易智慧企业web前端开发工程师 引言 在一个完善的即时通讯应用中,websocket是极其关键的一环,它为web应用的客户端和服务端提供了一种全双工的通信机制,但由于它本身以及其底层依赖 ...