教你如何解密 “ 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 相关文章推荐
海河写的 Discuz论坛帖子调用js的php代码
Aug 23 PHP
php笔记之常用文件操作
Oct 12 PHP
PHP函数学习之PHP函数点评
Jul 05 PHP
php 生成短网址原理及代码
Jan 23 PHP
php使用session二维数组实例
Nov 06 PHP
PHP中的命名空间相关概念浅析
Jan 22 PHP
PHP实现根据银行卡号判断银行
Apr 29 PHP
使用php-timeit估计php函数的执行时间
Sep 06 PHP
WordPress用户登录框密码的隐藏与部分显示技巧
Dec 31 PHP
php实现的pdo公共类定义与用法示例
Jul 19 PHP
浅谈PHP中pack、unpack的详细用法
Mar 12 PHP
laravel excel 上传文件保存到本地服务器功能
Nov 14 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管理Session的回调函数详解
2013/06/21 PHP
基于CakePHP实现的简单博客系统实例
2015/06/28 PHP
PHP使用mysqli操作MySQL数据库的简单方法
2017/02/04 PHP
PHP实现的注册,登录及查询用户资料功能API接口示例
2017/06/06 PHP
如何在centos8自定义目录安装php7.3
2019/11/28 PHP
在视频前插入广告
2006/11/20 Javascript
jQuery Flash/MP3/Video多媒体插件
2010/01/18 Javascript
jQuery实现随意改变div任意属性的名称和值(部分原生js实现)
2013/05/28 Javascript
js算法中的排序、数组去重详细概述
2013/10/14 Javascript
js调用iframe实现打印页面内容的方法
2014/03/04 Javascript
浅谈JSON和JSONP区别及jQuery的ajax jsonp的使用
2014/11/23 Javascript
jQuery中:password选择器用法实例
2015/01/03 Javascript
Jquery Ajax xmlhttp请求成功问题
2015/02/04 Javascript
Javascript封装id、class与元素选择器方法示例
2017/03/13 Javascript
Angularjs 动态添加指令并绑定事件的方法
2017/04/13 Javascript
详解mpvue scroll-view自动回弹bug解决方案
2018/10/01 Javascript
简述vue路由打开一个新的窗口的方法
2018/11/29 Javascript
JS使用对象的defineProperty进行变量监控操作示例
2019/02/02 Javascript
JS隐藏号码中间4位代码实例
2019/04/09 Javascript
Vue 开发必须知道的36个技巧(小结)
2019/10/09 Javascript
js判断浏览器的环境(pc端,移动端,还是微信浏览器)
2020/12/24 Javascript
[01:17:55]VGJ.T vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/20 DOTA
低版本中Python除法运算小技巧
2015/04/05 Python
python生成n个元素的全组合方法
2018/11/13 Python
python之mock模块基本使用方法详解
2019/06/27 Python
使用Pandas的Series方法绘制图像教程
2019/12/04 Python
Python网络爬虫信息提取mooc代码实例
2020/03/06 Python
大学生学习2014年全国两会心得体会
2014/03/12 职场文书
行政部岗位职责范本
2014/03/13 职场文书
竞争上岗实施方案
2014/03/21 职场文书
社会治安综合治理责任书
2015/01/29 职场文书
西岭雪山导游词
2015/02/06 职场文书
清明节网上祭英烈寄语2015
2015/03/04 职场文书
详细分析PHP7与PHP5区别
2021/06/26 PHP
Python常遇到的错误和异常
2021/11/02 Python
SpringBoot项目部署到阿里云服务器的实现步骤
2022/06/28 Java/Android