教你如何解密 “ 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 相关文章推荐
用PHP和MySQL保存和输出图片
Oct 09 PHP
社区(php&amp;&amp;mysql)六
Oct 09 PHP
PHP 获取MSN好友列表的代码(2009-05-14测试通过)
Sep 09 PHP
基于MySQL体系结构的分析
May 02 PHP
PHP删除HTMl标签的三种解决方法
Jun 30 PHP
codeigniter上传图片不能正确识别图片类型问题解决方法
Jul 25 PHP
php简单操作mysql数据库的类
Apr 16 PHP
WordPress开发中用于标题显示的相关函数使用解析
Jan 07 PHP
laravel5创建service provider和facade的方法详解
Jul 26 PHP
php文件上传、下载和删除示例
Aug 28 PHP
PHP使用finfo_file()函数检测上传图片类型的实现方法
Apr 18 PHP
PHP+mysql防止SQL注入的方法小结
Apr 27 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中的一个中文字符串截取函数
2007/02/14 PHP
php调用mysql数据 dbclass类
2011/05/07 PHP
Zend Framework基本页面布局分析
2016/03/19 PHP
php+Ajax无刷新验证用户名操作实例详解
2019/03/04 PHP
php根据地址获取百度地图经纬度的实例方法
2019/09/03 PHP
PHP的JSON封装、转变及输出操作示例
2019/09/27 PHP
动态改变textbox的宽高的js
2006/10/26 Javascript
菜鸟学习JavaScript小实验之函数引用
2010/11/17 Javascript
jquery插件jquery倒计时插件分享
2013/12/27 Javascript
jquery实现倒计时代码分享
2014/06/13 Javascript
node.js中的buffer.copy方法使用说明
2014/12/14 Javascript
详解js中Number()、parseInt()和parseFloat()的区别
2016/12/20 Javascript
js实现手机拍照上传功能
2017/01/17 Javascript
Extjs表单输入框异步校验的插件实现方法
2017/03/20 Javascript
vue component组件使用方法详解
2017/07/14 Javascript
Vue计算属性的使用
2017/08/04 Javascript
JS面试题大坑之隐式类型转换实例代码
2018/10/14 Javascript
关于layui 弹出层一闪而过就消失的解决方法
2019/09/09 Javascript
JavaScript 严格模式(use strict)用法实例分析
2020/03/04 Javascript
Python中os.path用法分析
2015/01/15 Python
Python列表list内建函数用法实例分析【insert、remove、index、pop等】
2017/07/24 Python
一文总结学习Python的14张思维导图
2017/10/17 Python
Python 实现网页自动截图的示例讲解
2018/05/17 Python
Python3.6中Twisted模块安装的问题与解决
2019/04/15 Python
PyQtGraph在pyqt中的应用及安装过程
2019/08/04 Python
使用Python制作缩放自如的圣诞老人(圣诞树)
2019/12/25 Python
python实现遍历文件夹图片并重命名
2020/03/23 Python
HTML5触摸事件演化tap事件介绍
2016/03/25 HTML / CSS
opencv实现图像几何变换
2021/03/24 Python
应届生个人求职信模板
2013/11/26 职场文书
司机辞职报告范文
2014/01/20 职场文书
自主招生英文自荐信
2015/03/25 职场文书
2015年农村党员公开承诺事项
2015/04/28 职场文书
2015年小学远程教育工作总结
2015/07/28 职场文书
学生会工作感言
2015/08/07 职场文书
数据结构课程设计心得体会
2016/01/15 职场文书