PHP文件被加密后的解密方法与技巧汇总
时间:2026-06-10 | 作者:318050 | 阅读:0PHP文件突然打不开、读不了源代码了?别急,先判断一下是哪种“加密”在搞鬼——可能是恶意软件、勒索脚本,也可能是某些第三方混淆工具留下的“烂摊子”。下面针对不同情况,拆解几种靠谱的恢复方法。
一、识别加密类型:先看它是不是“假加密”
很多所谓的“加密”,其实只是用 base64、gzinflate、str_rot13 这类函数做了层编码或混淆。这类操作通常是可逆的。
重点检查文件里有没有常见的解码调用链,比如 eval(base64_decode(...)) 或 eval(gzinflate(...)) 这种套娃写法。
具体操作:
- 用文本编辑器打开文件,扫一眼开头有没有
eval(base64_decode(或gzuncompress(这类函数。 - 看看文件里是不是有大量不可读字符、超长的 base64 片段(特征:字母数字+/=),或者反复出现的十六进制转义序列(比如
被转义)。 - 如果发现
eval(包裹的动态执行逻辑,千万别在生产环境直接跑这个文件——一定要在隔离环境里分析。
二、base64/gzinflate 解码:自己动手解包
确认只是 base64 + gzinflate 这层包装的话,写个简单的 PHP 脚本就能逐层还原。这种方法对付常见的 WebShell 或盗版程序的多层混淆特别管用。
步骤:
- 新建一个临时文件
decode.php,内容如下(核心逻辑就是匹配 eval 里的编码串并解码):
- 把被加密的文件重命名为
encrypted.php,和decode.php放同一目录。 - 命令行执行
php decode.php > decoded.php,结果保存为新文件。 - 检查
decoded.php:如果里面还有嵌套的 eval,那就重复执行上面的步骤,直到没有 eval 包裹的编码段为止。
三、开源工具 php-deobfuscator:自动去混淆
如果手动拆包太麻烦,可以用专门的去混淆工具。php-deobfuscator 是个命令行工具,专门处理多层函数嵌套、变量重命名、控制流扁平化这类操作(ionCube 和 Zend Guard 除外)。
用法:
- 通过 Composer 安装:
composer global require jaybizzle/php-deobfuscator。 - 进入加密文件所在目录,执行
php-deobfuscator encrypted.php --output decoded.php。 - 如果提示“Unsupported encoding detected”,试试加参数
--force-base64或--force-gzip强制解码。 - 生成的
decoded.php可能还有变量名混乱的情况,这时候人工核对关键函数名(比如mysql_query、file_put_contents)是否恢复可读。
四、备份恢复:最稳妥的路径
如果加密是勒索脚本搞的,而且你平时没有做实时备份?那本地或远程的备份文件就是唯一的救命稻草了。这个方法不依赖任何解密算法,直接绕过解密失败的风险。
需要检查几个地方:
- 看网站根目录同级有没有
backup_、_old、.bak、.swp这类后缀的文件。 - 登录服务器控制面板(比如 cPanel、宝塔),进“文件管理器”翻翻“回收站”或“历史版本”功能。
- 如果项目在用 Git,执行
git status和git log --oneline -n 20,找到最后一次未加密的提交哈希,然后git checkout,把干净的版本直接覆盖加密文件。-- path/to/file.php
五、简单混淆(XOR/ROT13)的快速还原
部分轻量级恶意脚本会用固定密钥 XOR 或 ROT13 对敏感字符串(比如数据库密码、URL)做混淆。整体语法结构没变,只是关键字符串不可读。这种反而好处理。
举个例子:看到类似 $a="Khoor#Zruog"; 的字符串,ROT13 特征明显(字母位移13位)。可以用一句 shell 命令解:echo "Khoor#Zruog" | tr 'A-Za-z' 'N-ZA-Mn-za-m',输出来就是 Hello#World。
如果是 XOR 混淆,且已知密钥(比如 $k=15;),写个 PHP 循环逐字节异或就行。还原后的明文字符串手动替换回原文件对应位置,替换前务必对原文件做 md5sum 校验并保存哈希值,以免手误。
来源:整理自互联网
免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。
相关文章
更多-
- phpinfo被禁用怎么恢复?PHP信息函数开启教程
- 时间:2026-06-10
-
- PHP中explode()函数与函数作用域深度解析与实践
- 时间:2026-06-08
-
- 多用户商城系统是否必须用PHP开发
- 时间:2026-06-03
-
- PHP对象复制与遍历原理与实践详解
- 时间:2026-06-03
-
- PHPMyAdmin Web端管理MySQL数据库配置完整步骤
- 时间:2026-05-31
-
- PHP提取加密文档数据与解密教程
- 时间:2026-05-30
-
- 记事本打开PHP文件的优缺点及软件推荐
- 时间:2026-05-30
-
- Linux下快速切换PHP版本的实用方法与详细步骤指南
- 时间:2026-05-28
精选合集
更多大家都在玩
大家都在看
更多-
- 高清画质投屏软件推荐实用稳定低延迟屏幕镜像工具
- 时间:2026-06-10
-
- 钓鱼种田游戏大全
- 时间:2026-06-10
-
- 小学一年级拼音跟读软件排行榜 好用易上手的APP推荐
- 时间:2026-06-10
-
- 哥特王朝重制版哪些技能值得学
- 时间:2026-06-10
-
- 2026年高音质无广告功能全音乐App下载推荐
- 时间:2026-06-10
-
- 免费好用的一键去水印APP推荐,高清无痕去除视频图片水印
- 时间:2026-06-10
-
- CodeBuddy能否实现前端无障碍代码改造
- 时间:2026-06-10
-
- 支付宝授权登录过的软件查看方法
- 时间:2026-06-10