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的更多相关文章

  1. 小试.NET代码保护软件(代码混淆、加密)

    有着微软人性化的开发工具VISUAL STUDIO和MSDN详尽的帮助,.NET 的开发效率的确高. 但是由于.NET同JAVA一样都采用中间语言.虚拟机/SDK等诸多特质,而且高等语言的类库编码规范 ...

  2. Python 代码混淆和加密技术

    动机 Python进行商业开发时, 需要有一定的安全意识, 为了不被轻易的逆向. 混淆和加密就有所必要了. 混淆 为了增加代码阅读的难度, 源代码的混淆非常必要, 一个在线的Python代码混淆网站. ...

  3. Python代码混淆和加密技术

    Python进行商业开发时, 需要有一定的安全意识, 为了不被轻易的逆向. 混淆和加密就有所必要了. 为了增加代码阅读的难度, 源代码的混淆非常必要, 一个在线的Python代码混淆网站. http: ...

  4. 免费的java代码混淆,程序加密

    java代码可以反编译,特别是放在客户端的程序很用被剽窃,盗用.保护程序一般都有以下几个方法: 1.将class文件加密,这个是最安全的,但也费事儿,因为要重写classloader来解密class文 ...

  5. NET程序的代码混淆、加壳与脱壳

    通常我们通过代码混淆.加密的形式达到软件保护的目的.在Web开发里我们接触过的可能就是JS代码加密了,可以通过对JS代码进行混淆.加密从而实现对核心JS代码的保护.如果没有接触过的可以在这里简单了解一 ...

  6. Android 代码混淆、第三方平台加固加密、渠道分发 完整教程(图文)

    第一步:代码混淆(注意引入的第三方jar) 在新版本的ADT创建项目时,混码的文件不再是proguard.cfg,而是project.properties和proguard-project.txt. ...

  7. .Net 程序代码混淆加密工具 ILProtector

    我的项目中某一部分信息比较敏感,但是.Net程序反编译之后连注释都看得到.需要把exe保护起来,如:代码混淆之后再加壳. Bing到一款.Net混淆工具  ILProtector   作为资深工具党, ...

  8. 推荐一个C#代码混淆器 .NET Reactor【转】

    C#的代码辛苦写出来之后,一个反射工具,就可以完全显露出来. 当然,在做项目时,这个功能还不错.因为我就曾在一个项目上使用C#,没有进行任何混淆.结果在项目二年多之后,需要做一些调整,自己保存的源代码 ...

  9. Python程序的混淆和加密

    混淆 为了增加代码阅读的难度, 源代码的混淆非常必要, 一个在线的Python代码混淆网站. 如果你觉得有用, 可以购买离线版本.同时需要注意的是, 这个混淆其实还是被很多人怀疑的, 因为即使混淆了, ...

随机推荐

  1. 阿里云服务器ecs配置之安装jdk(转)

    一.安装环境 操作系统:Centos 7.4 JDK版本:1.8 工具:Xshell5.Xftp5 二.安装步骤 第一步:下载安装包 (官网)链接: 下载适合自己系统的jdk版本,如图:我下载的是64 ...

  2. day49 数据库终章

    目录 一.pymysql补充 二.数据库补充 1 视图(了解) 2 触发器(了解) 3 事务 4 存储过程(了解) 5 函数 6 流程控制 7 索引 8 b+树 9 聚集索引(primary key) ...

  3. day36 作业

    客户端 import struct import json from socket import * client=socket(AF_INET,SOCK_STREAM) # client.conne ...

  4. (转自MDN)CSS基础一定要看的包含块(containing block)

    之前在写<个人常用的水平居中方法>这篇文章的时候,百分比问题涉及到了包含块(containing block)这个概念. 今天刷面试题的时候,又看到了containing block这个词 ...

  5. 【初学】Spring源码笔记之零:阅读源码

    笔记要求 了解Java语言 了解Spring Framework的基础 会使用Maven 关于本笔记 起因 本职数据分析,为公司内部人员开发数据处理系统,使用了Python/Django+Bootst ...

  6. flask 源码专题(十一):LocalStack和Local对象实现栈的管理

    目录 04 LocalStack和Local对象实现栈的管理 1.源码入口 1. flask源码关于local的实现 2. flask源码关于localstack的实现 3. 总结 04 LocalS ...

  7. 用matplotlib画简单折线图示例

    例1 import numpy as np import matplotlib.pyplot as plt from scipy import stats rx1 = np.array([54.52, ...

  8. Mysql数据库搭建集群---实现主从复制,读写分离

    参考博客:https://blog.csdn.net/xlgen157387/article/details/51331244 A.  准备:多台服务器,且都可以互相随意访问root用户,都可以随意进 ...

  9. 定时器三----js定时器

    方法一:        var t;        //初始化定时器    $(function(){        init_fun_timer1();            });         ...

  10. 基于python的自动化测试框架搭建

    滴~ 今日打卡!   好多天没来打卡了.博主最近一直在把碎片化知识转化为知识体系的过程中挣扎.Python语言.selenium.unittest框架.HTMLTestRunner框架都有所了解,也写 ...