教你如何解密 “ 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类
Nov 25 PHP
php 清除网页病毒的方法
Dec 05 PHP
php的array_multisort()使用方法介绍
May 16 PHP
php适配器模式介绍
Aug 14 PHP
php实现文件下载实例分享
Jun 02 PHP
PHP获取远程图片并保存到本地的方法
May 12 PHP
Thinkphp3.2.3整合phpqrcode生成带logo的二维码
Jul 21 PHP
PHP中Cookie的使用详解(简单易懂)
Apr 28 PHP
phpcms实现验证码替换及phpcms实现全站搜索功能教程详解
Dec 13 PHP
php提取微信账单的有效信息
Oct 01 PHP
Windows平台PHP+IECapt实现网页批量截图并创建缩略图功能详解
Aug 02 PHP
使用 PHP Masked Package 屏蔽敏感数据的实现方法
Oct 15 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
基于文本的访客签到簿
2006/10/09 PHP
php正则去除网页中所有的html,js,css,注释的实现方法
2016/11/03 PHP
PHP实现表单提交时去除斜杠的方法
2016/12/26 PHP
Kindeditor编辑器添加图片上传水印功能(php代码)
2017/08/03 PHP
PHP程序员简单的开展服务治理架构操作详解(二)
2020/05/14 PHP
基于jquery的tab切换 js原理
2010/04/01 Javascript
Javascript图像处理—为矩阵添加常用方法
2012/12/27 Javascript
JS中批量给元素绑定事件过程中的相关问题使用闭包解决
2013/04/15 Javascript
JavaScript 对任意元素,自定义右键菜单的实现方法
2013/05/08 Javascript
js光标定位文本框回车表单提交问题的解决方法
2015/05/11 Javascript
jQuery实现的背景动态变化导航菜单效果
2015/08/24 Javascript
js过滤HTML标签完整实例
2015/11/26 Javascript
jQuery向父辈遍历的简单方法
2016/09/18 Javascript
js模糊查询实例分享
2016/12/26 Javascript
使用base64对图片的二进制进行编码并用ajax进行显示
2017/01/03 Javascript
mui框架移动开发初体验详解
2017/10/11 Javascript
使用webpack3.0配置webpack-dev-server教程
2018/05/29 Javascript
解决angular2在双向数据绑定时[(ngModel)]无法使用的问题
2018/09/13 Javascript
小程序实现五星点评效果
2018/11/03 Javascript
React 源码中的依赖注入方法
2018/11/07 Javascript
javascript中call,apply,callee,caller用法实例分析
2019/07/24 Javascript
node 版本切换的实现
2020/02/02 Javascript
Vant 中的Toast设置全局的延迟时间操作
2020/11/04 Javascript
django一对多模型以及如何在前端实现详解
2019/07/24 Python
深入了解Python在HDA中的应用
2019/09/05 Python
如何在Django中使用聚合的实现示例
2020/03/23 Python
Python Tornado之跨域请求与Options请求方式
2020/03/28 Python
python 三种方法实现对Excel表格的读写
2020/11/19 Python
世界领先的艺术图书出版社:TASCHEN
2018/07/23 全球购物
幼儿园中班区域活动总结
2014/07/09 职场文书
房屋登记授权委托书范本
2014/10/09 职场文书
2014年度个人工作总结范文
2015/03/09 职场文书
2015年保险公司工作总结
2015/04/24 职场文书
先进个人主要事迹范文
2015/11/04 职场文书
关于mysql中时间日期类型和字符串类型的选择
2021/11/27 MySQL
win sever 2022如何占用操作主机角色
2022/06/25 Servers