教你如何解密 “ PHP 神盾解密工具 ”
2015-01-24信息快讯网
PHP 神盾解密工具是一网络大神针对“神盾加密”出的一款解密工具,深受众网友的欢迎,今天我们就来谈谈这个解密工具的问题
其实对神盾解密并没有那么感兴趣,只是看到了作者把工具又加密了,感觉不爽。研究了一下,其实解密没那么复杂。
利用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向浏览器输出内容的4个函数总结
PHP中使用匿名函数操作数据库的例子
PHP中定义数组常量(array常量)的方法
php中addslashes函数与sql防注入
php数组排序usort、uksort与sort函数用法
php基于mcrypt的加密解密实例
PHP中加密解密函数与DES加密解密实例
五款PHP代码重构工具推荐
当前比较流行的两款PHP加密、解密工具Zend Guard和iconCube介绍
从零开始学YII2框架(五)快速生成代码工具 Gii 的使用
PHP管理依赖(dependency)关系工具 Composer的自动加载(autoload)
PHP管理依赖(dependency)关系工具 Composer 安装与使用
2个比较经典的PHP加密解密函数分享
兼容PHP和Java的des加密解密代码分享
PHP扩展CURL的用法详解
ThinkPHP3.1查询语言详解
ThinkPHP3.1数据CURD操作快速入门
ThinkPHP3.1.3版本新特性概述
ThinkPHP访问不存在的模块跳转到404页面的方法
解密ThinkPHP3.1.2版本之模块和操作映射
解密ThinkPHP3.1.2版本之模板继承
解密ThinkPHP3.1.2版本之独立分组功能应用
神盾加密解密教程(三)PHP 神盾解密工具
神盾加密解密教程(二)PHP 神盾解密
神盾加密解密教程(一)PHP变量可用字符
PHP小技巧之JS和CSS优化工具Minify的使用方法
Windows和Linux中php代码调试工具Xdebug的安装与配置详解
PHP抓取、分析国内视频网站的视频信息工具类
php实现分页工具类分享