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数据库表的查询操作
序言 1.MySQL表操作(创建表,查询表结构,更改表字段等), 2.MySQL的数据类型(CHAR.VARCHAR.BLOB,等), 本节比较重要,对数据表数据进行查询操作,其中可能大家不熟悉的就对 ...
- PLSQL导入dmp文件完整步骤(附图)
导入dmp文件分为三大步:创建表空间.创建用户.导入dmp文件 一.创建表空间: 点击new,新建一个sql window 语句为: create tablespace "表空间名" ...
- EntityFrameworkCore 开发实践问题及规范
严重问题 客户端求值 如where条件包含的GetValueOrDefault()不能被翻译成sql语句 不规范代码段例子 public async Task<List<Person> ...
- 基于.NetCore3.1系列 —— 认证授权方案之授权揭秘 (下篇)
一.前言 回顾:基于.NetCore3.1系列 -- 认证授权方案之授权揭秘 (上篇) 在上一篇中,主要讲解了授权在配置方面的源码,从添加授权配置开始,我们引入了需要的授权配置选项,而不同的授权要求构 ...
- 浅析Python垃圾回收机制!
Python垃圾回收机制 目录 Python垃圾回收机制 1. 内存泄露 2. Python什么时候启动垃圾回收机制? 2.1 计数引用 2.2 循环引用 问题:引用计数是0是启动垃圾回收的充要条件吗 ...
- CSS(二)- 选择器 - 一定要搞懂的选择器优先级和权重问题
css的优先级之前一直没怎么注意没当回事,总以为对同一元素靠后的渲染会覆盖前面的渲染,要是覆盖不了那就来个!important嘛.直到我那在学前端基础的后端伙伴拿一个问题问住了我,我才意识到这是重点中 ...
- python 面向对象专题(八):特殊方法 (一)__get__、__set__、__delete__ 描述符(一)
https://www.cnblogs.com/flashBoxer/p/9771797.html 实现了 __get__.__set__ 或 __delete__ 方法的类是描述符.描述符的用法是, ...
- leetcode_1-两数之和_javascript
题目 1.两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,数组中同一个元 ...
- Appium+Python3环境搭建,其实超简单!【软件测试教程】
appium可以说是做app最火的一个自动化框架,它的主要优势是支持android和ios,另外脚本语言也是支持java和Python.略懂Python,所以接下来的教程是appium+python, ...
- Ethical Hacking - NETWORK PENETRATION TESTING(24)
Detecting suspicious activities using Wireshark You can use make the MAC address of the router to st ...