教你如何解密 “ 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 相关文章推荐
生成缩略图
Oct 09 PHP
第4章 数据处理-php正则表达式-郑阿奇(续)
Jul 04 PHP
PHP 代码规范小结
Mar 08 PHP
解析如何用php screw加密php源代码
Jun 20 PHP
关于PHPDocument 代码注释规范的总结
Jun 25 PHP
PHP中使用strpos函数实现屏蔽敏感关键字功能
Aug 21 PHP
详解WordPress中用于合成数组的wp_parse_args()函数
Dec 18 PHP
PHP实现仿百度文库,豆丁在线文档效果(word,excel,ppt转flash)
Mar 10 PHP
php使用正则表达式获取字符串中的URL
Dec 29 PHP
php 解决扫描二维码下载跳转问题
Jan 13 PHP
thinkPHP5.0框架引入Traits功能实例分析
Mar 18 PHP
详解PHP防止直接访问.php 文件的实现方法
Jul 28 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
动漫定律:眯眯眼都是怪物!这些角色狠话不多~
2020/03/03 日漫
PHP安装GeoIP扩展根据IP获取地理位置及计算距离的方法
2016/07/01 PHP
PHP实现的多维数组排序算法分析
2018/02/10 PHP
php-fpm服务启动脚本的方法
2018/04/27 PHP
滚动经典最新话题[prototype框架]下编写
2006/10/03 Javascript
IE与firefox下Dhtml的一些区别小结
2009/12/02 Javascript
javascript中函数作为参数调用的方法
2015/02/09 Javascript
输入框点击时边框变色效果的实现方法
2016/12/26 Javascript
JavaScript中双向数据绑定详解
2017/05/03 Javascript
原生js实现移动端触摸轮播的示例代码
2017/12/22 Javascript
浅谈vue项目用到的mock数据接口的两种方式
2019/10/09 Javascript
Vue 中如何将函数作为 props 传递给组件的实现代码
2020/05/12 Javascript
jQuery zTree如何改变指定节点文本样式
2020/10/16 jQuery
微信小程序实现锚点跳转
2020/11/23 Javascript
jQuery使用hide()、toggle()函数实现相机品牌展示隐藏功能
2021/01/29 jQuery
[38:39]完美世界DOTA2联赛循环赛 IO vs GXR BO2第二场 11.04
2020/11/05 DOTA
[45:16]完美世界DOTA2联赛PWL S3 Magma vs Phoenix 第一场 12.12
2020/12/16 DOTA
用python读写excel的方法
2014/11/18 Python
Python是编译运行的验证方法
2015/01/30 Python
简单介绍Python2.x版本中的cmp()方法的使用
2015/05/20 Python
Python操作Word批量生成文章的方法
2015/07/28 Python
使用 PyTorch 实现 MLP 并在 MNIST 数据集上验证方式
2020/01/08 Python
python中resample函数实现重采样和降采样代码
2020/02/25 Python
python -v 报错问题的解决方法
2020/09/15 Python
html5 Canvas画图教程(6)—canvas里画曲线之arcTo方法
2013/01/09 HTML / CSS
美国精品地毯网站:Boutique Rugs
2020/03/04 全球购物
西班牙Polo衫品牌:Polo Club
2020/08/09 全球购物
什么是唯一索引
2015/07/05 面试题
会计毕业生自荐书
2014/06/12 职场文书
体育节口号
2014/06/19 职场文书
大学生就业协议书范本(适用于公司企业)
2014/10/07 职场文书
滞留工资返还协议书
2014/10/19 职场文书
消防宣传标语大全
2015/08/03 职场文书
2016感恩父亲节主题广播稿
2015/12/18 职场文书
七年级之家长会发言稿范文
2019/09/04 职场文书
vue实现锚点定位功能
2021/06/29 Vue.js