php神盾解密,浅谈PHP神盾的解密过程
欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 前些日子一个朋友丢了个shell给我,让我帮忙解密,打开源码看了下写着是 "神盾加密" , 其实网上早就有人分析过这个了,而且写成了工具、但是我测试了很多个,没一个能用,所以决定自己从头分析一遍。
欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入
前些日子一个朋友丢了个shell给我,让我帮忙解密,打开源码看了下写着是 "神盾加密" , 其实网上早就有人分析过这个了,而且写成了工具、但是我测试了很多个,没一个能用,所以决定自己从头分析一遍。
我们来做第一步解密处理吧。
PS: 这只是我的解密思路,与大家分享一下,也许你有更好的方法还望分享
$str = file_get_contents("1.php");
// 第一步 替换所有变量
// 正则 \$[a-zA-Z_\x7f-\xff][\w\x7f-\xff]*
preg_match_all('|\$[a-zA-Z_\x7f-\xff][\w\x7f-\xff]*|', $str, $params) or die('err 0.');
$params = array_unique($params[0]); // 去重复
$replace = array();
$i = 1;
foreach ($params as $v) {
$replace[] = '$p' . $i;
tolog($v . ' => $p' . $i); // 记录到日志
$i++;
}
$str = str_replace($params, $replace, $str);
// 第二步 替换所有函数名
// 正则 function ([a-zA-Z_\x7f-\xff][\w\x7f-\xff]*)
preg_match_all('|function ([a-zA-Z_\x7f-\xff][\w\x7f-\xff]*)|', $str, $params) or die('err 0.');
$params = array_unique($params[1]); // 去重复
$replace = array();
$i = 1;
foreach ($params as $v) {
$replace[] = 'fun' . $i;
tolog($v . ' => fun' . $i); // 记录到日志
$i++;
}
$str = str_replace($params, $replace, $str);
// 第三步 替换所有不可显示字符
function tohex($m) {
$p = urlencode($m[0]); // 把所有不可见字符都转换为16进制、
$p = str_replace('%', '\x', $p);
$p = str_replace('+', ' ', $p); // urlencode 会吧 空格转换为 +
return $p;
}
$str = preg_replace_callback('|[\x00-\x08\x0e-\x1f\x7f-\xff]|s', "tohex", $str);
// 写到文件
file_put_contents("1_t1.php", $str);
function tolog($str) {
file_put_contents("replace_log.txt", $str . "\n", FILE_APPEND);
}
?>
(其中有一个记录到日志的代码,这个在之后的二次解密时有用。)
执行之后就会得到一个 1_t1.php 文件,打开文件看到类似这样的代码
找个工具格式化一下,我用的 phpstorm 自带了格式化功能,然后代码就清晰很多了。
进一步整理后得到如下代码:
//Start code decryption《===
if (!defined('IN_DECODE_82d1b9a966825e3524eb0ab6e9f21aa7')) {
define('\xA130\x8C', true);
function fun1($str, $flg="") {
if(!$flg) return(base64_decode($str));
$ret = '?';
for($i=0; $i$c = ord($str[$i]);
$ret .= $c<245 ? ( $c>136 ? chr($c/2) : $str[$i] ) : "";
}
return base64_decode($ret);
}
[1] [2]
本文原创发布php中文网,转载请注明出处,感谢您的尊重!
php神盾解密,浅谈PHP神盾的解密过程相关推荐
- 浅谈密码学的历史发展过程
浅谈密码学的历史发展过程 前言 这是大三下学期选学的网络信息安全课程的期末作业,这个学期就是疫情爆发期间上网课的那段时期... 摘要 密码对我们都不陌生,在日常生活中也接触过密码,日常生活中所说的密码 ...
- 浅谈HTTP协议的作用过程
浅谈http协议的作用过程 引言 正文 一.HTTP定义 二.HTTP完整的请求过程 域名解析 与服务器建立连接 发送http请求给服务器 服务器返回数据给客户端 客户端与服务器端断开通信 结束语 引 ...
- 浅谈 PHP 神盾的解密过程
前些日子一个朋友丢了个shell给我,让我帮忙解密,打开源码看了下写着是 "神盾加密" , 牛逼闪闪的样子. 百度下发现神盾是个很古老的东西,最后一次更新是在 2012-10-09 ...
- 浅谈PHP神盾的解密过程
我们来做第一步解密处理吧. PS: 这只是我的解密思路,与大家分享一下,也许你有更好的方法还望分享 <?php $str = file_get_contents("1.php" ...
- 浅谈BCrypt密码加解密的使用
一.编写核心类BCrypt.java // Copyright (c) 2006 Damien Miller <djm@mindrot.org> // // Permission to u ...
- 浅谈HTTPS协议的加密过程
https包括对称加密和非对称加密两个阶段,在客户端和服务端建立连接的时候使用非对称加密,连接建立以后使用的是对称加密. 注:SSL是传输层协议 加密过程: 1,客户端使用https的URL访问Web ...
- 浅谈HTTP事务的一个过程
一个腾讯在职的朋友问道,当我们在浏览器的地址栏输入 www.baidu.com ,然后回车,这一瞬间页面发生了什么?下面以谷歌浏览器一一解释. 一.域名解析 首先Chrome浏览器会解析www.bai ...
- 浅谈JSP自定义标签实现过程
(一) 没有正文的JSP自定义标签实现 (1):定义JSP自定义标签处理类 import java.io.IOException; import java.util.Date; import java ...
- 浅谈面向对象编程与面向过程编程
面向对象编程 面向对象编程是一种更加复合人们思维方式的编程思想.在现实生活中存在许多不同种类的事物,但是这些事物之间存在着某种联系,我们在使用程序模拟实现这些事物时,就可以通过对象的形式对其进行描述. ...
最新文章
- 多个前端项目放在一个git好还是_前端工作流
- mybatis转义反斜杠_Shell echo命令:输出字符串
- 私有云存储 linux,搭建nextcloud私有云存储网盘
- JavaScript高级之继承
- Kafka笔记--常用指令(新建、删除topic)
- SQL 必知必会·笔记3过滤数据
- 在XP中轻松获取未使用的局域网IP地址
- dlib疲劳检测_基于OpenCV的实时睡意检测系统
- Xlim函数--Matplotlib
- android+p+华为手机,Android P六大特性曝光支持刘海屏_华为 P20_手机新闻-中关村在线...
- 机器学习:混淆矩阵、准确率、错误率、灵敏度、特异度、精准率、召回率、F-Measure、ROC曲线 PR曲线
- 高端游戏计算机电源外形规格,游戏新高度!实述高端电源选购技巧
- java写一个泡泡龙小游戏
- 第四章第六题(圆上的随机点)(Random points on a circle)
- 解决——zip压缩包解压后的文件全是乱码问题
- MOS管推挽电路设计及特性解析
- 大数据与人工智能催生智能时代
- 随机池化(Stochastic Pooling)
- 云计算概念及Linux系统详解
- 一加7t人脸识别_一加7T新机设计图发布 这款手机的外观设计如何
热门文章
- oracle数据库问题吗,Oracle数据库常见问题答疑一
- Windows下C++通过Hooks记录键盘敲击记录的代码
- [开关电源]浪涌电流有点高?我来给你支支招
- div标签和span标签区别
- 360搜索是废了还是彻底商业化了?
- javascript正则检测用户名验证密码邮箱手机号
- 立创开源 51编程炫酷心形流水灯
- IT人士必去的10个网站 .
- 最严“22条措施”打击市场乱象 云南旅游“浴火重生”
- 基于MATLAB的说话人识别系统