教你如何解密 “ 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支持页面回退的两种方法[转]
Feb 14 PHP
php daodb插入、更新与删除数据
Mar 19 PHP
PHP函数常用用法小结
Feb 08 PHP
检查url链接是否已经有参数的php代码 添加 ? 或 &amp;
Feb 09 PHP
PHPWind与Discuz截取字符函数substrs与cutstr性能比较
Dec 05 PHP
几种有用的变型 PHP中循环语句的用法介绍
Jan 30 PHP
php获取文件夹路径内的图片以及分页显示示例
Mar 11 PHP
PHP中静态变量的使用方法实例分析
Dec 01 PHP
yii2中LinkPager增加总页数和总记录数的实例
Aug 28 PHP
php闭包中使用use声明变量的作用域实例分析
Aug 09 PHP
Laravel 验证码认证学习记录小结
Dec 20 PHP
解决PHP Opcache 缓存刷新、代码重载出现无法更新代码的问题
Aug 24 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
phpMyAdmin下载、安装和使用入门教程
2007/05/31 PHP
php 文件缓存函数
2011/10/08 PHP
自己开发Dojo的建议框架
2008/09/24 Javascript
javascript中局部变量和全局变量的区别详解
2015/02/27 Javascript
深入理解JavaScript系列(36):设计模式之中介者模式详解
2015/03/04 Javascript
JavaScript中reduce()方法的使用详解
2015/06/09 Javascript
jQuery动态添加
2016/04/07 Javascript
js入门之Function函数的使用方法【新手必看】
2016/11/22 Javascript
利用yarn代替npm管理前端项目模块依赖的方法详解
2017/09/04 Javascript
JavaScript编程设计模式之构造器模式实例分析
2017/10/25 Javascript
vue如何安装使用Quill富文本编辑器
2018/09/21 Javascript
实例讲解JS中pop使用方法
2019/01/27 Javascript
jquery+css实现Tab栏切换的代码实例
2019/05/14 jQuery
javascript导出csv文件(excel)的方法示例
2019/08/25 Javascript
vue vant Area组件使用详解
2019/12/09 Javascript
JavaScript进阶(二)词法作用域与作用域链实例分析
2020/05/09 Javascript
浅析JavaScript中的事件委托机制跟深浅拷贝
2021/01/20 Javascript
[02:52]DOTA2新手基础教程 米波
2014/01/21 DOTA
[38:39]KG vs Mineski 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
pycharm 使用心得(五)断点调试
2014/06/06 Python
跟老齐学Python之折腾一下目录
2014/10/24 Python
python/sympy求解矩阵方程的方法
2018/11/08 Python
Python判断有效的数独算法示例
2019/02/23 Python
tensorflow 实现数据类型转换
2020/02/17 Python
Python垃圾回收机制三种实现方法
2020/04/27 Python
计算Python Numpy向量之间的欧氏距离实例
2020/05/22 Python
如何用Python编写一个电子考勤系统
2021/02/08 Python
美国购车网站:TrueCar
2016/10/19 全球购物
美国折扣宠物药房:Total Pet Supply
2018/05/27 全球购物
环保建议书300字
2014/05/14 职场文书
个人房屋转让协议书范本
2014/10/26 职场文书
试用期工作表现自我评价
2015/03/06 职场文书
初中英语教学随笔
2015/08/15 职场文书
大学生安全教育心得体会
2016/01/15 职场文书
Ajax常用封装库——Axios的使用
2021/05/08 Javascript
JavaScript正则表达式实现注册信息校验功能
2022/05/30 Java/Android