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&amp;MYSQL留言板源码
Jul 19 PHP
PHP 变量定义和变量替换的方法
Jul 30 PHP
PHP函数之error_reporting(E_ALL ^ E_NOTICE)详细说明
Jul 01 PHP
php5.3中连接sqlserver2000的两种方法(com与ODBC)
Dec 29 PHP
php数组查找函数总结
Nov 18 PHP
PHP 开发者该知道的 5 个 Composer 小技巧
Feb 03 PHP
ThinkPHP项目分组配置方法分析
Mar 23 PHP
php通过smtp邮件验证登陆的方法
May 11 PHP
php+ajax注册实时验证功能
Jul 20 PHP
PHP单态模式简单用法示例
Nov 16 PHP
php实例化一个类的具体方法
Sep 19 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
常用表单验证类,有了这个,一般的验证就都齐了。
2006/12/06 PHP
PHP面向对象——访问修饰符介绍
2012/11/08 PHP
php+jQuery实现的三级导航栏下拉菜单显示效果
2017/08/10 PHP
PHP开发api接口安全验证操作实例详解
2020/03/26 PHP
yii 框架实现按天,月,年,自定义时间段统计数据的方法分析
2020/04/04 PHP
js中的值类型和引用类型小结 文字说明与实例
2010/12/12 Javascript
jQuery插件AjaxFileUpload实现ajax文件上传
2016/05/05 Javascript
bootstrap与Jquery UI 按钮样式冲突的解决办法
2016/09/23 Javascript
使用JS正则表达式 替换括号,尖括号等
2016/11/29 Javascript
自动适应iframe右边的高度
2016/12/22 Javascript
Bootstrap 3浏览器兼容性问题及解决方案
2017/04/11 Javascript
Bootstrap table使用方法总结
2017/05/10 Javascript
ES6 fetch函数与后台交互实现
2018/11/14 Javascript
JS滚轮控制图片缩放大小和拖动的实例代码
2018/11/20 Javascript
javascript实现点亮灯泡特效示例
2019/10/15 Javascript
JavaScript this关键字指向常用情况解析
2020/09/02 Javascript
[46:53]Secret vs Liquid 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
python 实现将txt文件多行合并为一行并将中间的空格去掉方法
2018/12/20 Python
对Python3之进程池与回调函数的实例详解
2019/01/22 Python
python爬取微信公众号文章的方法
2019/02/26 Python
python3.7 sys模块的具体使用
2019/07/22 Python
django之静态文件 django 2.0 在网页中显示图片的例子
2019/07/28 Python
Python编译成.so文件进行加密后调用的实现
2019/12/23 Python
Python drop方法删除列之inplace参数实例
2020/06/27 Python
keras和tensorflow使用fit_generator 批次训练操作
2020/07/03 Python
Python timeit模块原理及使用方法
2020/10/10 Python
CSS3 实现的火焰动画
2020/12/07 HTML / CSS
印尼披萨外送专家:Domino’s Pizza印尼
2017/12/28 全球购物
父亲的菜园教学反思
2014/02/13 职场文书
竞选体育委员演讲稿
2014/04/26 职场文书
工作收入住址证明
2014/10/28 职场文书
质量保证书
2015/01/17 职场文书
应聘教师自荐信
2015/03/26 职场文书
JavaScript 去重和重复次数统计
2021/03/31 Javascript
python实现ROA算子边缘检测算法
2021/04/05 Python
用Python监控你的朋友都在浏览哪些网站?
2021/05/27 Python