PHP代码加密的方法总结


Posted in PHP onMarch 13, 2020

如何保护自己的PHP代码:

代码混淆+加密

实际加密算不上,具体实现思路就是把代码base64加密,然后对base64里的字符串进行字符串映射(随机生成字典混淆)然后eval执行 这种百分之百能被破解还原

代表代码如下:

<?php
 function RandAbc($length = "") { // 返回随机字符串 
 $str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; 
 return str_shuffle($str); 
 } 
 $filename = 'index.php'; //要加密的文件 
 $T_k1 = RandAbc(); //随机密匙1 
 $T_k2 = RandAbc(); //随机密匙2 
 $vstr = file_get_contents($filename); 
 $v1 = base64_encode($vstr); 
 $c = strtr($v1, $T_k1, $T_k2); //根据密匙替换对应字符。 
 $c = $T_k1.$T_k2.$c; 
 $q1 = "O00O0O"; 
 $q2 = "O0O000"; 
 $q3 = "O0OO00"; 
 $q4 = "OO0O00"; 
 $q5 = "OO0000"; 
 $q6 = "O00OO0"; 
 $s = '$'.$q6.'=urldecode("%6E1%7A%62%2F%6D%615%5C%76%740%6928%2D%70%78%75%71%79%2A6%6C%72%6B%64%679%5F%65%68%63%73%77%6F4%2B%6637%6A");$'.$q1.'=$'.$q6.'{3}.$'.$q6.'{6}.$'.$q6.'{33}.$'.$q6.'{30};$'.$q3.'=$'.$q6.'{33}.$'.$q6.'{10}.$'.$q6.'{24}.$'.$q6.'{10}.$'.$q6.'{24};$'.$q4.'=$'.$q3.'{0}.$'.$q6.'{18}.$'.$q6.'{3}.$'.$q3.'{0}.$'.$q3.'{1}.$'.$q6.'{24};$'.$q5.'=$'.$q6.'{7}.$'.$q6.'{13};$'.$q1.'.=$'.$q6.'{22}.$'.$q6.'{36}.$'.$q6.'{29}.$'.$q6.'{26}.$'.$q6.'{30}.$'.$q6.'{32}.$'.$q6.'{35}.$'.$q6.'{26}.$'.$q6.'{30};eval($'.$q1.'("'.base64_encode('$'.$q2.'="'.$c.'";eval(\'?>\'.$'.$q1.'($'.$q3.'($'.$q4.'($'.$q2.',$'.$q5.'*2),$'.$q4.'($'.$q2.',$'.$q5.',$'.$q5.'),$'.$q4.'($'.$q2.',0,$'.$q5.'))));').'"));'; 
 $s = '<?php '."\n".$s."\n".' ?>'; 
 //echo $s; 
 // 生成 加密后的PHP文件 
 $fpp1 = fopen('temp_'.$filename, 'w'); 
 fwrite($fpp1, $s) or die('写文件错误'); 
 ?>

混淆乱码字符

代码混淆变量还有一些东西 和1原理差不多,不过是把字符串换到 ascii 127到255之间非人类还有编辑器看不懂的字符 ,结果也是百分之百能被破解和还原,只是时间问题。

发放opcode

不分发代码,而是先把PHP代码预编译,分发opcode,PHP7以后opcache深度集成这个东西 PHP7以后可以用这个方法保护源码,但是也会被opcode反编译回去 也会被破解。

混淆+加密+写PHP扩展

混淆+加密+写PHP扩展,但是只要是开源的PHP扩展都会被破解,除非自己写加密算法,把PHP代码加密, 然后自己拿C语音写扩展闭源, 别人不知道你加密思路和破解思路,被破解的可能性很小。

Swoole Compiler

swoole出的那个,是拿生成的opcode以后混淆加密, 然后这个就牛逼了,这个要想执行很明显zend引擎是不太可能认识混淆加密后的opcode,所以他实际上还需要重写zend,所以说配套的zend引擎也要换。

内容扩展:

<?php
  function RandAbc($length=""){//返回随机字符串
  $str="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
  return str_shuffle($str);
 }
 $filepath='index.php';
 $path_parts= pathinfo($filepath);
 $filename=$path_parts["basename"];
 $T_k1=RandAbc();//随机密匙1
 $T_k2=RandAbc();//随机密匙2
 $vstr=file_get_contents($filename);//要加密的文件 
 $v1=base64_encode($vstr);
 $c=strtr($v1,$T_k1,$T_k2);//根据密匙替换对应字符。
 $c=$T_k1.$T_k2.$c;
 $q1="O00O0O";
 $q2="O0O000";
 $q3="O0OO00";
 $q4="OO0O00";
 $q5="OO0000";
 $q6="O00OO0";
 $s='$'.$q6.'=urldecode("%6E1%7A%62%2F%6D%615%5C%76%740%6928%2D%70%78%75%71%79%2A6%6C%72%6B%64%679%5F%65%68%63%73%77%6F4%2B%6637%6A");$'.$q1.'=$'.$q6.'{3}.$'.$q6.'{6}.$'.$q6.'{33}.$'.$q6.'{30};$'.$q3.'=$'.$q6.'{33}.$'.$q6.'{10}.$'.$q6.'{24}.$'.$q6.'{10}.$'.$q6.'{24};$'.$q4.'=$'.$q3.'{0}.$'.$q6.'{18}.$'.$q6.'{3}.$'.$q3.'{0}.$'.$q3.'{1}.$'.$q6.'{24};$'.$q5.'=$'.$q6.'{7}.$'.$q6.'{13};$'.$q1.'.=$'.$q6.'{22}.$'.$q6.'{36}.$'.$q6.'{29}.$'.$q6.'{26}.$'.$q6.'{30}.$'.$q6.'{32}.$'.$q6.'{35}.$'.$q6.'{26}.$'.$q6.'{30};eval($'.$q1.'("'.base64_encode('$'.$q2.'="'.$c.'";eval(\'?>\'.$'.$q1.'($'.$q3.'($'.$q4.'($'.$q2.',$'.$q5.'*2),$'.$q4.'($'.$q2.',$'.$q5.',$'.$q5.'),$'.$q4.'($'.$q2.',0,$'.$q5.'))));').'"));';
 $s='<?
 '.$s.
'
 ?>';
 echo $s;
 //生成 加密后的PHP文件
 !is_dir('create/') && mkdir('create/');
 $fpp1 = fopen('create/'.$filename,'w');
 fwrite($fpp1,$s) or die('写文件错误');
 echo '加密成功!';

到此这篇关于PHP代码加密的方法总结的文章就介绍到这了,更多相关PHP代码加密的几种方法介绍内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

PHP 相关文章推荐
phpmyadmin 访问被拒绝的真实原因
Jun 15 PHP
使用ThinkPHP自带的Http类下载远程图片到本地的实现代码
Aug 02 PHP
php数组函数序列之array_intersect() 返回两个或多个数组的交集数组
Nov 10 PHP
php cli模式学习(PHP命令行模式)
Jun 03 PHP
基于php冒泡排序算法的深入理解
Jun 09 PHP
thinkphp常见路径用法分析
Dec 02 PHP
ThinkPHP内置jsonRPC的缺陷分析
Dec 18 PHP
3种方法轻松处理php开发中emoji表情的问题
Jul 18 PHP
php 常用的系统函数
Feb 07 PHP
PHP文件管理之实现网盘及压缩包的功能操作
Sep 20 PHP
详解Laravel服务容器的绑定与解析
Nov 05 PHP
一文搞懂PHP中的抽象类和接口
May 25 PHP
YII2框架中behavior行为的理解与使用方法示例
Mar 13 #PHP
YII2框架中actions的作用与使用方法示例
Mar 13 #PHP
PHP正则之正向预查与反向预查讲解与实例
Apr 06 #PHP
TP5框架安全机制实例分析
Apr 05 #PHP
TP5框架实现自定义分页样式的方法示例
Apr 05 #PHP
TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】
Apr 05 #PHP
TP5框架实现签到功能的方法分析
Apr 05 #PHP
You might like
php实现的支持断点续传的文件下载类
2014/09/23 PHP
PHP如何解决微信文章图片防盗链
2020/12/09 PHP
js 第二代身份证号码的验证机制代码
2011/05/12 Javascript
js 调用父窗口的具体实现代码
2013/07/15 Javascript
JS中判断null、undefined与NaN的方法
2014/03/26 Javascript
Javascript前端UI框架Kit使用指南之kitjs事件管理
2014/11/28 Javascript
JavaScript中Cookies的相关使用教程
2015/06/04 Javascript
JQuery EasyUI的使用
2016/02/24 Javascript
Javascript blur与click冲突解决办法
2017/01/09 Javascript
微信小程序中用WebStorm使用LESS
2017/03/08 Javascript
Angular2开发——组件规划篇
2017/03/28 Javascript
js实现图片加载淡入淡出效果
2017/04/07 Javascript
详解express与koa中间件模式对比
2017/08/07 Javascript
微信小程序实现页面下拉刷新和上拉加载功能详解
2018/12/03 Javascript
详解微信小程序scroll-view横向滚动的实践踩坑及隐藏其滚动条的实现
2019/03/14 Javascript
如何自动化部署项目?折腾服务器之旅~
2019/04/16 Javascript
Vue实现导航栏点击当前标签变色功能
2020/08/19 Javascript
了解JavaScript中let语句
2019/05/30 Javascript
[01:29]Ti4循环赛第三日精彩回顾
2014/07/13 DOTA
[01:51]历届DOTA2国际邀请赛举办地回顾 TI9落地上海
2018/08/26 DOTA
使用Python实现BT种子和磁力链接的相互转换
2015/11/09 Python
python使用电子邮件模块smtplib的方法
2016/08/28 Python
python3+mysql查询数据并通过邮件群发excel附件
2018/02/24 Python
Python3.5实现的三级菜单功能示例
2019/03/25 Python
Python学习笔记之集合的概念和简单使用示例
2019/08/22 Python
python修改微信和支付宝步数的示例代码
2020/10/12 Python
html5 canvas简单封装一个echarts实现不了的饼图
2018/06/12 HTML / CSS
日本食品网上商店:JaponShop.com
2017/11/28 全球购物
六十岁生日答谢词
2014/01/10 职场文书
网站美工岗位职责
2014/04/02 职场文书
企业形象策划方案
2014/05/29 职场文书
数学教研活动总结
2014/07/02 职场文书
巴黎圣母院读书笔记
2015/06/26 职场文书
周一给客户的问候语
2015/11/10 职场文书
Python超简单容易上手的画图工具库推荐
2021/05/10 Python
mysql分组后合并显示一个字段的多条数据方式
2022/01/22 MySQL