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代码混淆网站. 如果你觉得有用, 可以购买离线版本.同时需要注意的是, 这个混淆其实还是被很多人怀疑的, 因为即使混淆了, ...
随机推荐
- MySQL 快速删除大量数据(千万级别)的几种实践方案
笔者最近工作中遇见一个性能瓶颈问题,MySQL表,每天大概新增776万条记录,存储周期为7天,超过7天的数据需要在新增记录前老化.连续运行9天以后,删除一天的数据大概需要3个半小时(环境:128G, ...
- 选课系统<基于面向过程\对象>
2020-04-15 00:09:28 程序目录: import os BASE_PATH=os.path.dirname(os.path.dirname(__file__)) DB_PATH=os. ...
- SaaS 系统架构,Spring Boot 动态数据源实现!
这段时候在准备从零开始做一套SaaS系统,之前的经验都是开发单数据库系统并没有接触过SaaS系统,所以接到这个任务的时候也有也些头疼,不过办法部比困难多,难得的机会. 在网上找了很多关于SaaS的资料 ...
- requests接口自动化4-登录后才能访问的get请求,需共享cookie
登录后才能访问的get请求,需共享cookie fiddler里请求响应结果: 代码: import requests import json #form表单形式的post请求,用data传参,Con ...
- scala 数据结构(二):数组
1 数组-定长数组(声明泛型) 第一种方式定义数组 这里的数组等同于Java中的数组,中括号的类型就是数组的类型 val arr1 = new Array[Int](10) //赋值,集合元素采用小括 ...
- web 部署专题(三):压力测试(一)工具 siege
1.介绍 Siege是一个压力测试和评测工具,设计用于WEB开发这评估应用在压力下的承受能力:可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访 ...
- Django框架11 /form组件、modelForm组件
Django框架11 /form组件.modelForm组件 目录 Django框架11 /form组件.modelForm组件 1. form组件介绍 2. form常用字段与插件 3. form所 ...
- MapReduce计算框架的核心编程思想
@ 目录 概念 MapReduce中常用的组件 概念 Job(作业) : 一个MapReduce程序称为一个Job. MRAppMaster(MR任务的主节点): 一个Job在运行时,会先启动一个进程 ...
- VMWare WorkStation中MacOS虛擬機無法啓動的問題
關於MacOS虛擬機,在有VMWare重裝,升級以及MacOS更新時,都可能會造成破解補丁失效,因此儅Mac虛擬機無法啓動時,可以嘗試以下操作: 重新運行unlocker208中的win-instal ...
- bzoj3383[Usaco2004 Open]Cave Cows 4 洞穴里的牛之四*
bzoj3383[Usaco2004 Open]Cave Cows 4 洞穴里的牛之四 题意: 平面直角坐标系有n个点,从(0,0)出发,从一个点上可以跳到所有与它横纵坐标距离都≤2的点上,求最少步数 ...