教你如何解密 “ 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做的端口嗅探器--可以指定网站和端口
Oct 09 PHP
如何隐藏你的.php文件
Jan 04 PHP
php pack与unpack 摸板字符字符含义
Oct 29 PHP
PHP 面向对象程序设计(oop)学习笔记 (二) - 静态变量的属性和方法及延迟绑定
Jun 12 PHP
PHP获取一个字符串中间一部分字符的方法
Aug 19 PHP
PHP中的静态变量及static静态变量使用详解
Nov 05 PHP
Linux系统下使用XHProf和XHGui分析PHP运行性能
Dec 08 PHP
Laravel重写用户登录简单示例
Oct 08 PHP
PHP生成图片缩略图类示例
Jan 12 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
Sep 20 PHP
yii框架结合charjs实现统计30天数据的方法
Apr 04 PHP
PHP 99乘法表的几种实现代码
Oct 13 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 UTF8 文件的签名问题
2009/10/30 PHP
php连接函数implode与分割explode的深入解析
2013/06/26 PHP
PHP按一定比例压缩图片的方法
2018/10/12 PHP
ThinkPHP3.2.3框架Memcache缓存使用方法实例总结
2019/04/15 PHP
php-7.3.6 编译安装过程
2020/02/11 PHP
javascript中一些util方法汇总
2015/06/10 Javascript
js数组常见操作及数组与字符串相互转化实例详解
2015/11/10 Javascript
jQuery中cookie插件用法实例分析
2015/12/04 Javascript
JavaScript通过使用onerror设置默认图像显示代替alt
2016/03/01 Javascript
Jquery对新插入的节点 绑定Click事件失效的解决方法
2016/06/02 Javascript
underscore之Chaining_动力节点Java学院整理
2017/07/10 Javascript
input 标签实现输入框带提示文字效果(两种方法)
2017/10/09 Javascript
浅谈ECMAScript 中的Array类型
2019/06/10 Javascript
微信小程序实现页面分享onShareAppMessage
2019/08/12 Javascript
使用原生JS实现火锅点餐小程序(面向对象思想)
2019/12/10 Javascript
jquery更改元素属性attr()方法操作示例
2020/05/22 jQuery
基于asyncio 异步协程框架实现收集B站直播弹幕
2016/09/11 Python
Django学习笔记之Class-Based-View
2017/02/15 Python
如何在python中使用selenium的示例
2017/12/26 Python
python+pandas生成指定日期和重采样的方法
2018/04/11 Python
python实现内存监控系统
2021/03/07 Python
pycharm中使用anaconda部署python环境的方法步骤
2018/12/19 Python
树莓派与PC端在局域网内运用python实现即时通讯
2019/06/22 Python
python关闭占用端口方式
2019/12/17 Python
python GUI库图形界面开发之PyQt5控件QTableWidget详细使用方法与属性
2020/02/25 Python
瑜伽服装品牌:露露柠檬(lululemon athletica)
2017/06/04 全球购物
印度尼西亚最大的电商平台:Tokopedia(印尼版淘宝)
2017/12/02 全球购物
碧欧泉法国官网:Biotherm法国
2019/10/23 全球购物
后勤人员岗位职责
2013/12/17 职场文书
管理失职检讨书
2014/02/12 职场文书
理发店策划方案
2014/06/05 职场文书
党员学习中国梦心得体会
2016/01/05 职场文书
2016年春季趣味运动会开幕词
2016/03/04 职场文书
2016年圣诞节活动总结范文
2016/04/01 职场文书
numpy数据类型dtype转换实现
2021/04/24 Python
windows server 2012安装FTP并配置被动模式指定开放端口
2022/06/10 Servers