使用PHP_Screw加密PHP

18 篇文章 0 订阅

摘要

  • PHP文件通常以文本格式存贮在服务器端, 很容易被别人读到源代码, 为了对源代码进行保护, 可以采用对源代码进行加密的方式
  • PHP_Screw是一款免费的针对PHP源码进行加密的PHP的扩展,可以自定义加密种子文件,加密后的文件效率还不会下降,目前还没有被破解。
  • 最新版本是php_screw_1.5 http://nchc.dl.sourceforge.net/project/php-screw/php-screw/1.5/php_screw-1.5.tar.gz

安装步骤

  • 下载源码
wget http://nchc.dl.sourceforge.net/project/php-screw/php-screw/1.5/php_screw-1.5.tar.gz
  • 解压缩
tar zxvf php_screw_1.5.tar.gz
  • 通过README.en文件可以看到该版本软件包要求PHP5.x 环境,并要求zlib支持(通过执行脚本来检查)。如果你使用的是PHP4.X版本,请下载php_screw_1.3版本
  • 进入源码目录
cd php_screw_1.5
  • 修改php_screw.h文件
# 编辑
vim php_screw.h

# 默认
define PM9SCREW “tPM9SCREWt”
define PM9SCREW_LEN 10

# 修改为 'tLAURENCEt' 可以自定义
define PM9SCREW “tLAURENCEt”
define PM9SCREW_LEN 9

说明: php_screw.h文件,如果不改这个文件,你加密的文件内容开头就会有 PM9SCREW ,你复制到google搜索下就知道是用screw模块加密的,虽然目前网上没发现解密算法,但以后就不一定,这么做就是为了隐藏加密算法,可以让别人不 知道你是用的什么算法加的密。改成COOL后10也要改成6.因为LAURENCE后字符长度是9发字符,如果你不对应加密后解密解析不了。

  • 修改my_screw.h文件
#编辑
vim my_screw.h

# 默认
short pm9screw_mycryptkey[] = {
11152, 368, 192, 1281, 62
};
# 自定义修改
short pm9screw_mycryptkey[] = {
12852, 968, 192, 1281, 62, 269
};

说明: 自定义加密种子文件,这个可能是该程序的亮点,用你喜欢的文本编辑器打开源码目录下的my_screw.h,修改文件里面的数组文件,可以用数字添 加该数组的长度。数组越长,加密越可靠。而且该数组的长度不会影响加密以及你的PHP程序执行的速度.测试发现不要大于5位数,大了就会解密解析有问题。

  • 执行phpize命令
phpize
Configuring for:
PHP Api Version: 20041225
Zend Module Api No: 20060613
Zend Extension Api No: 220060519

phpize 命令执行成功后,源码文件夹下出现configure文件
如果出现如下提示:phpize command not found,解决办法是安装php-devel
说明: 如果还是提示:phpize command not found,可能是由于你的php没有安装在标准目录下,请到php安装目录的bin文件夹下寻找,确定是否有该文件。然后回到 php_scre_1.5目录下,执行

  • 配置
./configure

如果php安装在非标准目录,需要查看在phpize目录下是否有php-config文件,然后执行该目录如下

 ./configure –with-php-config=/full/path/to/php-config
  • 安装
make
make install

上面命令执行成功后会输出:Installing shared extensions: /usr/lib64/php/modules/(这个目录是/etc/***/php.ini文件中extension_dir指定的目录),php_screw.so文件就在这里,当然编译目录的modules下也有

注意: 执行make命令提示错误,请参考本文下面: make 命令后出现的问题及解决办法

  • PHP添加php_screw扩展
# 编辑php.ini文件
vi /etc/***/php.ini
# 添加
extension=php_screw.so
# 保存 退出

重启 apache,查看phpinfo()里面应该有php_screw的相关信息
在这里插入图片描述

  • 生成加密程序 ,执行如下命令
# 进入tools目录
cd tools
# 编译
make

成功后会出现一个名为screw的程序,使用如下命令,就可以在任何目录下对文件进行加密

cp screw /usr/bin

make 命令后出现的问题及解决办法

  • 问题1:/root/php_screw-1.5/php_screw.c: In function ‘pm9screw_compile_file’:
    解决办法:需要修改php_screw.c文件 (有三个地方需要调整)
org_compile_file(file_handle, type);
# 修改为
org_compile_file(file_handle, type TSRMLS_CC);
  • 问题2:‘zend_compiler_globals’ 没有名为 ‘extended_info’ 的成员make: *** [php_screw.lo] 错误 1
    解决办法: 需要修改php_screw.c文件 (有两个地方需要调整)
把CG(extended_info) = 1;
# 修改为
CG(compiler_options) |= ZEND_COMPILE_EXTENDED_INFO;

测试

  • 例如:加密phpinfo.php文件
screw phpinfo.php

我们加密后,现在目录下的phpinfo.php文件就是我们已经加密的了。而源文件被改名为phpinfo.php.screw

  • 我们访问以下phpinfo.php文件,是正常访问的,而且执行效率和未加密之前差不多
    在这里插入图片描述
  • 注意:
    php_screw_1.5有一个缺点就是screw 加密工具一次只能执行一个文件,如果你切换到你的php源码目录执行
    #screw *
    不会有任何文件被加密,如果要加密上百个文件,那正是灾难
  • 解决办法:
# 加密所有的.php文件
find /data/php/source -name “*.php” -print|xargs -n1 screw 
# 删除所有的.php源文件的备份文件
find /data/php/source -name “*.screw” -print|xargs -n1 rm 
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
js 把字符串转jsonArray "[{fd_zj_materialCode_dataModelName=, fd_zj_materialCode_dataFdId=, fd_zj_machine_series_code=18, fd_zj_screw=46/B, fd_zj_crm_flag=同步成功, fd_zj_quantity=1.0, fd_zj_delivery_date_record=[{id=16eeff527815c214b0af8404e9e9e1cf, time=Wed Feb 08 17:00:15 CST 2023, name=蓝凌, data=2023-02-13}], fd_zj_materialCode_dataSourceId=, fd_zj_materialCode=2260933346643275, fd_zj_demand_desc_record=[{id=16eeff527815c214b0af8404e9e9e1cf, time=Wed Feb 08 17:00:15 CST 2023, name=蓝凌, data=1、配镀铬混炼B螺杆 2、加装 抽芯一组 3、加装吹风一组}], fd_zj_materialCode_selectedDatas=, fd_zj_crm_flag_record=[{id=16eeff527815c214b0af8404e9e9e1cf, time=Wed Feb 08 17:00:15 CST 2023, name=蓝凌, data=}], fd_zj_remark=, fd_zj_machine_series_desc_record=[{id=16eeff527815c214b0af8404e9e9e1cf, time=Wed Feb 08 17:00:15 CST 2023, name=蓝凌, data=JM168-MK6.6/A注塑机}], fd_zj_materialCode_text=2F800-000000000, fd_zj_quantity_record=[{id=16eeff527815c214b0af8404e9e9e1cf, time=Wed Feb 08 17:00:15 CST 2023, name=蓝凌, data=1.0}], fd_zj_machine_series_desc=JM168-MK6.6/A注塑机, fd_zj_factory_source_record=[{id=16eeff527815c214b0af8404e9e9e1cf, time=Wed Feb 08 17:00:15 CST 2023, name=蓝凌, data=null}, {id=16eeff527815c214b0af8404e9e9e1cf, time=Wed Feb 08 17:02:22 CST 2023, name=蓝凌, data=震德机}], fd_zj_remark_record=[{id=16eeff527815c214b0af8404e9e9e1cf, time=Wed Feb 08 17:00:15 CST 2023, name=蓝凌, data=}], fd_zj_screw_record=[{id=16eeff527815c214b0af8404e9e9e1cf, time=Wed Feb 08 17:00:15 CST 2023, name=蓝凌, data=46/B}], fd_zj_factory_source=3.0, fd_zj_delivery_date=Mon Feb 13 00:00:00 CST 2023, fd_zj_assess=null, fd_zj_demand_desc=1、配镀铬混炼B螺杆 2、加装 抽芯一组 3、加装吹风一组, fdId=18630410f7c0108ea5df44646d5acea6, fd_zj_machine_series_code_record=[{id=16eeff527815c214b0af8404e9e9e1cf, time=Wed Feb 08 17:00:15 CST 2023, name=蓝凌, data=18}]}]"
05-31
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dadeity

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值