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获取远程图片并把它保存到本地的代码
Apr 07 PHP
php zend解密软件绿色版测试可用
Apr 14 PHP
PHP 文件上传功能实现代码
Jun 24 PHP
zend framework多模块多布局配置
Feb 26 PHP
php写的带缓存数据功能的mysqli类
Sep 06 PHP
PHP之短标签开启设置
Jun 17 PHP
php数组编码转换示例详解
Mar 11 PHP
PHP解码unicode编码的中文字符代码分享
Aug 13 PHP
[原创]php获取数组中键值最大数组项的索引值
Mar 17 PHP
PHP获取音频文件的相关信息
Jun 22 PHP
Yii2框架redis基本应用示例
Jul 13 PHP
PHP 实现链式操作
Mar 09 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_SELF的安全问题
2009/09/05 PHP
PHP操作文件类的函数代码(文件和文件夹创建,复制,移动和删除)
2011/11/10 PHP
Session的工作机制详解和安全性问题(PHP实例讲解)
2014/04/10 PHP
成为好程序员必须避免的5个坏习惯
2014/07/04 PHP
php绘制圆形的方法
2015/01/24 PHP
学习php设计模式 php实现门面模式(Facade)
2015/12/07 PHP
PHP批量去除BOM头内容信息代码
2016/03/11 PHP
来自qq的javascript面试题
2010/07/24 Javascript
自己用jQuery写了一个图片的马赛克消失效果
2014/05/04 Javascript
JavaScript使用DeviceOne开发实战(一) 配置和起步
2015/12/01 Javascript
基于HTML+CSS+JS实现增加删除修改tab导航特效代码
2016/08/05 Javascript
Bootstrap模态框案例解析
2017/03/05 Javascript
Vue中添加过渡效果的方法
2017/03/16 Javascript
微信小程序实现登录页云层漂浮的动画效果
2017/05/05 Javascript
关于redux-saga中take使用方法详解
2018/02/27 Javascript
详解JavaScript中的Object.is()与&quot;===&quot;运算符总结
2020/06/17 Javascript
快速了解Vue父子组件传值以及父调子方法、子调父方法
2020/07/15 Javascript
[57:37]EG vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[46:55]完美世界DOTA2联赛决赛 FTD vs Phoenix 第三场 11.08
2020/11/11 DOTA
Python实现excel转sqlite的方法
2017/07/17 Python
Numpy掩码式数组详解
2018/04/17 Python
Django框架视图介绍与使用详解
2019/07/18 Python
Django将默认的SQLite更换为MySQL的实现
2019/11/18 Python
python使用opencv在Windows下调用摄像头实现解析
2019/11/26 Python
python TCP包注入方式
2020/05/05 Python
使用Keras 实现查看model weights .h5 文件的内容
2020/06/09 Python
英国门把手公司:Door Handle Company
2019/05/12 全球购物
DC Shoes澳大利亚官方网上商店:购买DC鞋子
2019/10/25 全球购物
高中毕业生生活的自我评价
2013/12/08 职场文书
中学生爱国演讲稿
2013/12/31 职场文书
效能风暴心得体会
2014/09/04 职场文书
2014年党的群众路线活动个人整改措施
2014/10/28 职场文书
保安辞职信范文
2015/02/28 职场文书
护士年终工作总结不会写?各科护士模板总结
2020/01/02 职场文书
zabbix配置nginx监控的实现
2022/05/25 Servers
MySQL索引失效场景及解决方案
2022/07/23 MySQL