可通过ionCube Loader、SourceGuardian扩展、PHPBolt runtime、VLD分析或手动剥离eval链五种方式运行加密PHP文件,需依加密类型匹配对应工具与配置步骤。

如果您获取了经过加密的PHP代码文件,但无法直接通过PHP解释器执行,则可能是由于代码被混淆、编译为字节码或使用了第三方扩展加密。以下是运行此类加密PHP文件的具体方法:
一、使用ionCube Loader加载加密文件
ionCube Loader 是广泛用于运行经 ionCube PHP Encoder 加密的PHP文件的扩展模块,需在PHP环境中安装对应版本的Loader并启用。
1、确认当前PHP版本及架构:在命令行执行 php -v 与 php -i | grep "Architecture"。
2、访问 https://www.ioncube.com/loaders.php 下载匹配的Loader二进制文件(如 Linux x86_64 对应 ioncube_loader_lin_8.2.so)。
立即学习“PHP免费学习笔记(深入)”;
3、将下载的 .so 文件复制到PHP扩展目录(可通过 php -i | grep "extension_dir" 查得)。
4、编辑 php.ini,在末尾添加两行:zend_extension=ioncube_loader_lin_8.2.so 和 ioncube.loader.encoded_paths="/path/to/encrypted"。
5、重启Web服务器或PHP-FPM服务,执行 php -m | grep ioncube 验证是否加载成功。
二、使用SourceGuardian扩展解密执行
SourceGuardian 支持对PHP脚本进行加密并生成 .phps 或 .phpx 文件,运行依赖其专属扩展 loader_wizard 工具生成的扩展模块。
1、访问 https://www.sourceguardian.com/loaders.html,选择与PHP版本、线程安全(TS/NTS)、操作系统完全一致的Loader压缩包。
2、解压后找到对应平台的 ixed.
3、将该文件放入PHP扩展目录,并在 php.ini 中添加:extension=ixed.8.2.lin(路径与名称依实际修改)。
4、确保加密文件具有可读权限,且文件扩展名符合SourceGuardian要求(如 .phps),直接通过 php encrypted.phps 执行。
三、通过PHPBolt解密后执行(仅限兼容版本)
PHPBolt 是一种轻量级PHP加密方案,部分版本支持在不安装扩展的情况下,通过其提供的 runtime 解密器运行加密脚本。
1、从原始分发渠道获取配套的 phpbolt_runtime.php 文件(不可用第三方替代)。
2、将加密后的PHP文件(如 index.phpbolt)与 runtime 文件置于同一目录。
3、创建启动脚本 run.php,内容为:。
4、在命令行中执行 php run.php,由 runtime 自动完成解密与上下文注入。
四、使用VLD扩展查看OPcode反推逻辑(调试用途)
若加密未禁用OPcache或VLD,可通过分析编译后的中间指令推测原始结构,适用于无扩展依赖的弱混淆场景。
1、安装VLD扩展:pecl install vld,并在 php.ini 中加入 extension=vld.so。
2、执行 php -dvld.active=1 -dvld.execute=0 encrypted.php 输出OPcode列表。
3、重点关注 INIT_FCALL、SEND_VAL、DO_FCALL 等调用指令,定位加密主函数入口。
4、结合 php -dopcache.enable=0 -dvld.active=1 encrypted.php 观察无优化下的指令流差异。
五、手动剥离eval类动态执行层(高风险操作)
部分加密采用 base64_decode + gzinflate + eval 的链式调用,可在确保法律合规前提下临时修改代码绕过加密外壳。
1、用文本编辑器打开加密PHP文件,搜索关键词 eval(、base64_decode、gzinflate、str_rot13。
2、定位最外层加密函数调用,例如 eval(gzinflate(base64_decode($x))); 。
3、将该行替换为 file_put_contents('decrypted.php', gzinflate(base64_decode($x))); exit;。
4、执行该修改后文件,生成 decrypted.php,检查其内容是否为可读PHP源码,再独立运行。











