教你如何解密 “ PHP 神盾解密工具 ”


Posted in PHP onJune 20, 2014

其实对神盾解密并没有那么感兴趣,只是看到了作者把工具又加密了,感觉不爽。研究了一下,其实解密没那么复杂。

利用php_apd扩展很轻松地就这把这搞定了。只有四句代码。

<?php
rename_function('gzuncompress','new_gzuncompress');
override_function('gzuncompress', '$arg', 'print(new_gzuncompress($arg)); return new_gzuncompress($arg);');
 
require_once 'decryption.php';
decryption('decryption.php');

该工具的核心代码:decryption.php

<?php
function decryption($fileName) {
  /**
   * 解码函数
   * @param string $str 待解码字符串
   * @param string $flg 是否解析后解码
   * @return string   已解码字符串
   */
  function decode($str, $flg = '') {
    if($flg === '') {
      $ret = $str;
    } else {
      $ret = 'ۯ'; $i = 0; $l = strlen($str);
      while($i++ < $l) {
        $c = ord($str[$i-1]);
        $ret .= $c<245 ? ( $c>136 ? chr($c/2) : $str[$i-1] ) : "";
      }
    }
    return base64_decode($ret);
  }
   
  $err = '解码遇到错误,请联系教主处理该文件!';
  $str = file_get_contents($fileName);
  $path = pathinfo($fileName);
  $dirname = $path['dirname']; // 文件所在目录
  $baseName = $path['filename']; // 文件名
   
   
  if (preg_match('|IN_DECODE_(\w{32})|s', $str, $arr)) {
    // 防止解密自己,其实方法都已经告诉你了,自己动手解码才快乐
    $arr[1] === '761b5f52db6dff7ce91344e99dcedab7' && die("err: [-1] - 请勿试图用本工具解密本工具!");
  } else {
    die("err: [-1] - 没有发现神盾特征,你确定这是神盾加密?");
  }
   
  // 匹配代码主题部分
  // '';@\$[\x00-\xff]+\(\\'([\x00-\xff]+?)\\'\.\(
  preg_match('|\'\';@\$[\x00-\xff]+\(\\\\\'([\x00-\xff]+?)\\\\\'\.\(|s', $str, $arr) || die("err: [0] - ".$err);
  $code = $arr[1];
 
  // 匹配中间加密部分
  preg_match('|\(\'([\x00-\xff]+)\',\'|s', $code, $arr) || die("err: [1] - ".$err);
  $key = base64_decode(decode($arr[1], "decode"));
 
  $code = preg_replace('|\'\.[\x00-\xff]+\'\)\)\.\'|s', $key, $code);
 
  // 匹配尾部被加密代码
  preg_match('|=\'(x[\x00-\xff]+)\'\)\);|s', $str, $arr) || die("err: [2] - ".$err);
  $core = $arr[1];
 
  // 匹配验证key
  preg_match('|[\w+/=]{59}=|s', $arr[1], $arr) || die("err: [3] - ".$err);
  $key = $arr[0];
 
  $core = str_replace($key, '', $core); // 去除key
  $suffix = gzuncompress($core); // 得到 base64 的末尾部分
 
  // 解码
  $code = gzuncompress(base64_decode($code . $suffix));
 
  // 匹配干净的代码
  if (preg_match('|<!--<\?php endif;\?>(<\?php[\r\n]{1,2}[\x00-\xff]+\?>)<\?php \$GLOBALS\[|s', $code, $arr)) {
    $code = $arr[1];
  }
 
  // 写到文件
  $source = $dirname . DIRECTORY_SEPARATOR . $baseName . "_source.php";
  file_put_contents($source, $code);
  die("解密成功,已经保存为: " . $source);
}
PHP 相关文章推荐
模板引擎Smarty深入浅出介绍
Dec 06 PHP
php图片加水印原理(超简单的实例代码)
Jan 18 PHP
PHP关于IE下的iframe跨域导致session丢失问题解决方法
Oct 10 PHP
php表单请求获得数据求和示例
May 15 PHP
Codeigniter生成Excel文档的简单方法
Jun 12 PHP
php使用标签替换的方式生成静态页面
May 21 PHP
php基本函数汇总
Jul 09 PHP
PHP中使用curl伪造IP的简单方法
Aug 07 PHP
使用xampp搭建运行php虚拟主机的详细步骤
Oct 21 PHP
php上传图片类及用法示例
May 11 PHP
php实现基于openssl的加密解密方法
Sep 30 PHP
PHP编程实现的TCP服务端和客户端功能示例
Apr 13 PHP
ThinkPHP3.1查询语言详解
Jun 19 #PHP
ThinkPHP3.1数据CURD操作快速入门
Jun 19 #PHP
ThinkPHP3.1.3版本新特性概述
Jun 19 #PHP
ThinkPHP访问不存在的模块跳转到404页面的方法
Jun 19 #PHP
解密ThinkPHP3.1.2版本之模块和操作映射
Jun 19 #PHP
解密ThinkPHP3.1.2版本之模板继承
Jun 19 #PHP
解密ThinkPHP3.1.2版本之独立分组功能应用
Jun 19 #PHP
You might like
php设计模式 Chain Of Responsibility (职责链模式)
2011/06/26 PHP
ThinkPHP CURD方法之where方法详解
2014/06/18 PHP
destoon二次开发模板及调用语法汇总
2014/06/21 PHP
Laravel 4 初级教程之安装及入门
2014/10/30 PHP
php绘图之加载外部图片的方法
2015/01/24 PHP
php的命名空间与自动加载实现方法
2019/08/25 PHP
基于jQuery的为attr添加id title等效果的实现代码
2011/04/20 Javascript
jQuery 自定义函数写法分享
2012/03/30 Javascript
window.onresize 多次触发的解决方法
2013/11/08 Javascript
jQuery插件StickUp实现网页导航置顶
2015/04/12 Javascript
JavaScript实现动态删除列表框值的方法
2015/08/12 Javascript
浅谈jquery设置和获得checkbox选中的问题
2016/08/19 Javascript
Linux CentOS系统下安装node.js与express的方法
2017/04/01 Javascript
将 vue 生成的 js 上传到七牛的实例
2017/07/28 Javascript
JavaScript 通过Ajax 动态加载CheckBox复选框
2017/08/31 Javascript
微信小程序实现图片上传
2019/05/23 Javascript
[01:02:25]2014 DOTA2华西杯精英邀请赛5 24 NewBee VS VG
2014/05/25 DOTA
python实现实时监控文件的方法
2016/08/26 Python
Python实现SSH远程登陆,并执行命令的方法(分享)
2017/05/08 Python
用python实现对比两张图片的不同
2018/02/05 Python
详解Python传入参数的几种方法
2019/05/16 Python
Python中的十大图像处理工具(小结)
2019/06/10 Python
使用python获取邮箱邮件的设置方法
2019/09/20 Python
基于python的BP神经网络及异或实现过程解析
2019/09/30 Python
Python3爬虫中Ajax的用法
2020/07/10 Python
Scrapy爬虫文件批量运行的实现
2020/09/30 Python
python自动打开浏览器下载zip并提取内容写入excel
2021/01/04 Python
澳大利亚香水在线:Price Rite Mart
2017/12/28 全球购物
美国购买韩国护肤和美容产品网站:Althea Korea
2020/11/16 全球购物
德国便宜的宠物店:Brekz.de
2020/10/23 全球购物
给市场的环保建议书
2014/05/14 职场文书
“四风”问题整改措施和努力方向
2014/09/20 职场文书
申报优秀教师材料
2014/12/16 职场文书
2015年全国科普日活动总结
2015/03/23 职场文书
如何写观后感
2015/06/19 职场文书
一文读懂go中semaphore(信号量)源码
2021/04/03 Golang