教你如何解密 “ 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 相关文章推荐
模拟OICQ的实现思路和核心程序(三)
Oct 09 PHP
Apache2 httpd.conf 中文版
Dec 06 PHP
如何在symfony中导出为CSV文件中的数据
Oct 06 PHP
简单的方法让你的后台登录更加安全(php中加session验证)
Aug 22 PHP
shell脚本作为保证PHP脚本不挂掉的守护进程实例分享
Jul 15 PHP
PHP中time(),date(),mktime()区别介绍
Sep 28 PHP
thinkphp缓存技术详解
Dec 09 PHP
php实现过滤字符串中的中文和数字实例
Jul 29 PHP
php实现的中文分词类完整实例
Feb 06 PHP
Yii框架扩展CGridView增加导出CSV功能的方法
May 24 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式一图文详解
Apr 09 PHP
PHP判断是否是json字符串
Apr 01 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入门学习知识点七 PHP函数的基本应用
2011/07/14 PHP
一个漂亮的php验证码类(分享)
2013/08/06 PHP
简单谈谈PHP中的Reload操作
2016/12/12 PHP
帮助避免错误的Javascript陷阱清单
2009/05/31 Javascript
JQuery与iframe交互实现代码
2009/12/24 Javascript
js实现目录定位正文示例
2013/11/14 Javascript
js计算两个时间之间天数差的实例代码
2013/11/19 Javascript
js和jquery中循环的退出和继续学习记录
2014/09/06 Javascript
本人自用的global.js库源码分享
2015/02/28 Javascript
每天一篇javascript学习小结(面向对象编程)
2015/11/20 Javascript
AngularJS 路由和模板实例及路由地址简化方法(必看)
2016/06/24 Javascript
AngularJs bootstrap搭载前台框架——js控制部分
2016/09/01 Javascript
vue实现消息的无缝滚动效果的示例代码
2017/12/05 Javascript
详解使用vuex进行菜单管理
2017/12/21 Javascript
微信小程序购物车、父子组件传值及calc的注意事项总结
2018/11/14 Javascript
Node.js JSON模块用法实例分析
2019/01/04 Javascript
Node 模块原理与用法详解
2020/05/13 Javascript
JavaScript如何实现防止重复的网络请求的示例
2021/01/28 Javascript
[01:10]3.19DOTA2发布会 三代刀塔人第一代
2014/03/25 DOTA
[32:26]EG vs IG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[52:32]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第三场 11.18
2020/11/18 DOTA
构建Python包的五个简单准则简介
2015/06/15 Python
Python常见加密模块用法分析【MD5,sha,crypt模块】
2017/05/24 Python
Python快速转换numpy数组中Nan和Inf的方法实例说明
2019/02/21 Python
Python 把序列转换为元组的函数tuple方法
2019/06/27 Python
python爬虫爬取笔趣网小说网站过程图解
2019/11/18 Python
Python基于WordCloud制作词云图
2019/11/29 Python
python进行二次方程式计算的实例讲解
2020/12/06 Python
美国电子产品购物网站:BuyDig.com
2020/06/17 全球购物
应用艺术毕业生的自我评价
2013/12/04 职场文书
小学教师读书活动总结
2014/07/08 职场文书
2015年度信用社工作总结
2015/05/04 职场文书
2015年小学实验室工作总结
2015/07/28 职场文书
2019年冬至:天冷暖人心的问候祝福语大全
2019/12/20 职场文书
详解MySQL 联合查询优化机制
2021/05/10 MySQL
dubbo服务整合zipkin详解
2021/07/26 Java/Android