php_beast 扩展的使用

php_beast 扩展的使用

php_beast 可以用于对 php 文件进行加密

参考引用

windows系统安装php_beast加密扩展附使用教程

php-beast-master.zip

php源代码保护——PHP加密方案分析&解密还原

如何加密代码

准备工作:

  • 本地 php 配置了 php-beast 扩展

配置 php-beast-master/tools/configure.ini 文件:

//要加密项目的路径
src_path = "D:\php\src_path"
//保存加密后项目的路径
dst_path = "D:\php\dst_path"
//项目可使用的时间,格式是:YYYY-mm-dd HH:ii:ss
expire = "2020-03-29 14:59:00"
//加密的方式,支持的加密算法DES, AES, BASE64
encrypt_type = "DES"

最后,执行 php-beast-master/tools/encode_files.php 文件进行加密

php encode_files.php

加密之后的 php 文件是二进制格式。

如何拿到密钥

参考 php源代码保护——PHP加密方案分析&解密还原

由于加密的算法一般选择 DES、AES 这种对称加密算法,因此找到密钥是关键。

以从 Linux 找到 DES 密钥为例,从 php 扩展路径找到 beast.so 文件:

php_beast 扩展的使用_第1张图片

选中 des_encrypt_handler 右边可能显示的是类似汇编的代码,键入 F5 进行反编译得到伪代码:

php_beast 扩展的使用_第2张图片

找到类似如下的调用位置,其中传入了一个参数 key_0

php_beast 扩展的使用_第3张图片
双击该 key_0,会跳转到声明的位置,便能看到这 8 个字节就是密钥:
php_beast 扩展的使用_第4张图片

如何解密 php 文件

通过前面的步骤可以拿到密钥,直接用对应算法解密即可。
php_beast 扩展的使用_第5张图片

以 DES 为例:

$data = file_get_contents("php文件路径");
// 前 20 个字节标记该文件用什么加密算法等信息
$data = substr($data, 20);
$key = "C11F0A3F0B3C4D0A";
$code = openssl_decrypt($data, 'DES-ECB', hex2bin($key), OPENSSL_RAW_DATA | OPENSSL_NO_PADDING);
echo($code);

你可能感兴趣的:(语言基础,php,开发语言)