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 相关文章推荐
十天学会php之第九天
Oct 09 PHP
用php+javascript实现二级级联菜单的制作
May 06 PHP
在php中判断一个请求是ajax请求还是普通请求的方法
Jun 28 PHP
php源代码安装常见错误与解决办法分享
May 28 PHP
php5.4以下版本json不支持不转义内容中文的解决方法
Jan 13 PHP
php获取汉字拼音首字母的方法
Oct 21 PHP
php实现的xml操作类
Jan 15 PHP
php文档工具PHP Documentor安装与使用方法
Jan 25 PHP
php获取网站根目录物理路径的几种方法(推荐)
Mar 04 PHP
PHP中OpenSSL加密问题整理
Dec 14 PHP
PHP如何根据文件头检测文件类型实例代码
Oct 14 PHP
PHP创建XML的方法示例【基于DOMDocument类及SimpleXMLElement类】
Sep 10 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 强制下载文件代码
2010/10/24 PHP
php断点续传之如何分割合并文件
2014/03/22 PHP
PHP中使用smarty生成静态文件的例子
2014/04/24 PHP
Yii框架实现记录日志到自定义文件的方法
2017/05/23 PHP
php libevent 功能与使用方法详解
2020/03/04 PHP
用javascript实现给出的盒子的序列是否可连为一矩型
2007/08/30 Javascript
Javascript 同时提交多个Web表单的方法
2009/02/19 Javascript
文本框(input)获取焦点(onfocus)时样式改变的示例代码
2014/01/10 Javascript
js实现图片拖动改变顺序附图
2014/05/13 Javascript
Bootstrap实现下拉菜单效果
2016/04/29 Javascript
AngularJS 支付倒计时功能实现思路
2017/06/05 Javascript
node.js 利用流实现读写同步,边读边写的方法
2017/09/11 Javascript
react redux入门示例
2018/04/19 Javascript
vue微信分享出来的链接点开是首页问题的解决方法
2018/11/28 Javascript
vue单文件组件无法获取$refs的问题
2020/06/24 Javascript
js模拟实现百度搜索
2020/06/28 Javascript
[01:01:52]完美世界DOTA2联赛PWL S2 GXR vs Magma 第二场 11.25
2020/11/26 DOTA
[02:22]完美世界DOTA2联赛PWL S3 集锦第一期
2020/12/15 DOTA
EM算法的python实现的方法步骤
2018/01/02 Python
Python读取图片为16进制表示简单代码
2018/01/19 Python
Python中循环引用(import)失败的解决方法
2018/04/22 Python
PyCharm导入python项目并配置虚拟环境的教程详解
2019/10/13 Python
神经网络训练采用gpu设置的方式
2021/03/03 Python
从当地商店送来的杂货:Instacart
2018/08/19 全球购物
香港最大的洋酒零售连锁店:屈臣氏酒窖(Watson’s Wine)
2018/12/10 全球购物
澳大利亚100%丝绸多彩度假装商店:TheSwankStore
2019/09/04 全球购物
法国包包和行李箱销售网站:Bagage24.fr
2020/03/24 全球购物
八皇后问题,输出了所有情况,不过有些结果只是旋转了90度
2016/08/15 面试题
会计电算化个人自我评价
2013/11/17 职场文书
预备党员入党思想汇报
2014/01/04 职场文书
优秀大学生的自我评价
2014/01/16 职场文书
大学生旷课检讨书
2014/01/22 职场文书
标准自荐信范文
2014/01/29 职场文书
水电工岗位职责
2014/02/12 职场文书
社团活动总结书
2014/06/27 职场文书
可可西里观后感
2015/06/08 职场文书