教你如何解密 “ 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 相关文章推荐
第十四节 命名空间 [14]
Oct 09 PHP
php无限极分类实现的两种解决方法
Apr 28 PHP
Codeigniter实现智能裁剪图片的方法
Jun 12 PHP
php发送get、post请求的6种方法简明总结
Jul 08 PHP
PHP实现算式验证码和汉字验证码实例
Mar 09 PHP
PHP检测用户语言的方法
Jun 15 PHP
Laravel搭建后台登录系统步骤详解
Jul 26 PHP
php版微信公众号自定义分享内容实现方法
Sep 22 PHP
thinkPHP5.0框架开发规范简介
Mar 25 PHP
深入浅析PHP的session反序列化漏洞问题
Jun 15 PHP
Laravel统计一段时间间隔的数据方法
Oct 09 PHP
laravel 创建命令行命令的图文教程
Oct 23 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+MySQL的聊天室设计
2006/10/09 PHP
PHP英文字母大小写转换函数小结
2014/05/03 PHP
codeigniter显示所有脚本执行时间的方法
2015/03/21 PHP
php常用字符函数实例小结
2016/12/29 PHP
如何让您的中波更粗更长 - 中波框形天线制作
2021/03/10 无线电
JavaScript版代码高亮
2006/06/26 Javascript
很多人都是用下面的js刷新站IP和PV
2008/09/05 Javascript
使用jQuery的将桌面应用程序引入浏览器
2010/11/19 Javascript
JS刷新框架外页面七种实现代码
2013/02/18 Javascript
window.navigate 与 window.location.href 的使用区别介绍
2013/09/21 Javascript
jquery更换文章内容与改变字体大小代码
2013/09/30 Javascript
控制input输入框中提示信息的显示和隐藏的方法
2014/02/12 Javascript
jQuery中change事件用法实例
2014/12/26 Javascript
jQuery实现一个简单的轮播图
2017/02/19 Javascript
解决Vue 通过下表修改数组,页面不渲染的问题
2018/03/08 Javascript
JS基于Location实现访问Url、重定向及刷新页面的方法分析
2018/12/03 Javascript
JS实现计算小于非负数n的素数的数量算法示例
2019/02/26 Javascript
[原创]微信小程序获取网络类型的方法示例
2019/03/01 Javascript
sortable+element 实现表格行拖拽的方法示例
2019/06/07 Javascript
Sublime Text3 配置 NodeJs 环境的方法
2020/05/20 NodeJs
关于Vue中$refs的探索浅析
2020/11/05 Javascript
[01:48]帕吉至宝加入游戏,遗迹战场现“千劫神屠”
2018/04/07 DOTA
pycharm+django创建一个搜索网页实例代码
2018/01/24 Python
如何使用pyinstaller打包32位的exe程序
2019/05/26 Python
python和mysql交互操作实例详解【基于pymysql库】
2019/06/04 Python
Python tkinter实现图片标注功能(完整代码)
2019/12/08 Python
使用PyTorch将文件夹下的图片分为训练集和验证集实例
2020/01/08 Python
蔻驰美国官网:COACH美国
2016/08/18 全球购物
德国奢侈品网上商城:Mytheresa
2016/08/24 全球购物
英国设计的甲板鞋和船鞋:Chatham
2018/12/06 全球购物
微软巴西官方网站:Microsoft Brasil
2019/09/26 全球购物
您在慕尼黑的跑步商店:Lauf-bar
2019/10/11 全球购物
机械工程师求职自我评价
2013/09/23 职场文书
后勤自我鉴定
2013/10/13 职场文书
自定义函数实现单词排序并运用于PostgreSQL(实现代码)
2021/04/22 PostgreSQL
制作能在nginx和IIS中使用的ssl证书
2021/06/21 Servers