教你如何解密 “ 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中文乱码的解决方法
Dec 17 PHP
第五章 php数组操作
Dec 30 PHP
深入eAccelerator与memcached的区别详解
Jun 06 PHP
php中的curl使用入门教程和常见用法实例
Apr 10 PHP
PHP判断表单复选框选中状态完整例子
Jun 24 PHP
PHP连接和操作MySQL数据库基础教程
Sep 29 PHP
php之curl实现http与https请求的方法
Oct 21 PHP
基础的WordPress插件制作教程
Nov 24 PHP
变量在 PHP7 内部的实现(一)
Dec 21 PHP
PHP面向对象程序设计之对象生成方法详解
Dec 02 PHP
thinkPHP中验证码的简单实现方法
Dec 05 PHP
Yii2 批量插入、更新数据实例
Mar 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
PHP设计模式 注册表模式(多个类的注册)
2012/02/05 PHP
php实现数组筛选奇数和偶数示例
2014/04/11 PHP
php 伪造ip以及url来路信息方法汇总
2014/11/25 PHP
thinkphp制作404跳转页的简单实现方法
2016/09/22 PHP
查询绑定数据岛的表格中的文本并修改显示方式的js代码
2009/12/15 Javascript
动态调用CSS文件的JS代码
2010/07/29 Javascript
JS清空多文本框、文本域示例代码
2014/02/24 Javascript
js取整数、取余数的方法
2014/05/11 Javascript
理解javascript中的回调函数(callback)
2014/09/02 Javascript
JavaScript判断表单中多选框checkbox选中个数的方法
2015/08/17 Javascript
JS中创建函数的三种方式及区别
2016/03/13 Javascript
js 判断附件后缀的简单实现方法
2016/10/11 Javascript
简单的js计算器实现
2016/10/26 Javascript
浅谈移动端之js touch事件 手势滑动事件
2016/11/07 Javascript
js初始化验证实例详解
2016/11/26 Javascript
vue.js入门(3)——详解组件通信
2016/12/02 Javascript
详解利用 Express 托管静态文件的方法
2017/09/18 Javascript
jquery+css3实现熊猫tv导航代码分享
2018/02/12 jQuery
angular动态表单制作
2018/02/23 Javascript
Vue数据监听方法watch的使用
2018/03/28 Javascript
vue + typescript + 极验登录验证的实现方法
2019/06/27 Javascript
python33 urllib2使用方法细节讲解
2013/12/03 Python
python 将print输出的内容保存到txt文件中
2018/07/17 Python
PyQt5实现类似别踩白块游戏
2019/01/24 Python
python 使用三引号时容易犯的小错误
2020/10/21 Python
UGG英国官方网站:UGG UK
2018/02/08 全球购物
师范大学应届生求职信
2013/11/21 职场文书
法制报告会主持词
2014/04/02 职场文书
供货协议书
2014/04/22 职场文书
高等教育学专业自荐书
2014/06/17 职场文书
小学国庆节活动方案策划书
2014/09/16 职场文书
海南召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
2015年幼儿园元旦游艺活动策划书
2014/12/09 职场文书
新生开学寄语大全
2015/05/28 职场文书
公司周年庆寄语
2019/06/21 职场文书
日本官方排名前10的动漫,名侦探柯南上榜,第一是一部创造历史的动漫
2022/03/18 日漫