发布于2022-06-02 06:34 阅读(1675) 评论(0) 点赞(2) 收藏(1)
https://github.com/imaben/php-beast-binaries
windows下 可以直接在这里下载dll
根据自己的php版本 还有是不是线程安全的 来选择下载对应的
放到对应的扩展目录 中
在配置文件 php.ini中加入扩展配置
extension=php_beast_x86_nts.dll
但是秘钥是一样的 编译的话很多时候 会失败 或者出现lib版本不匹配问题
老版本 我用vs编译过 dll收到版本限制比较麻烦处理
官方提供的版本很稳定 直接二进制修改对应秘钥部分就可以了
ida分析到 变了对应的位置
static uint8_t key[] = {
0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6,
0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c,
};
根据文件偏移 用ue二进制编辑 找到对应位置 修改 保存即可
ida逆向分析出秘钥变量的位置 和源码里面
static char key[8] = {
0x01, 0x1f, 0x01, 0x1f,
0x01, 0x0e, 0x01, 0x0e,
};
正好对应上
用ue二进制编辑 修改保存
测试通过 其他加密方式就不处理了
encrypt_file_header_sign 修改
ida分析到 头 信息 位置
这个数据应该是在加密的文件最前面来标示文件是否被加密了
尽量特别一点
我的版本 在7760这个位置长度是8
编译前需要修改秘钥 新版本的加密方式比较多 需要修改的地方也比较多
老版本的是在key.c中修改 新版 修改是在header.c中
- aes_algo_lib.c
- des_algo_handler.c
- header.c
编译步骤如下
- 120 wget https://github.com/liexusong/php-beast/archive/master.zip
- 121 unzip master.zip
- 122 cd php-beast-master/
- 124 phpize
- 125 ./configure --with-php-config=/apps/php/bin/php-config
- 报错 找不到 php-config
-
- 找一下自己的 配置在哪里
- 130 find / -name "php-config"
-
- 确定配置文件位置
- 131 ./configure --with-php-config=/usr/local/php/bin/php-config
- 132 sudo make && make install
- 133 sudo make test
- 134 php -m
-
- 发现没成功 重新试一遍
- 135 ./configure --with-php-config=/usr/local/php/bin/php-config
- 136 sudo make && make install
- 后面也要加sudo root权限
- 137 sudo make && sudo make install
- 138 php -m
- 140 sudo make test
- 成功
- 添加到php配置文件种
- 141 php -i|grep ini
- 142 gedit /usr/local/php/etc/php.ini
- 添加 extension="beast.so"
-
- 146 php -i|grep extension
- 153 service php-fpm restart
- 重启php 开始加密测试
-
-
- 154 cd tools/
- 161 php encode_file.php --encrypt DES --oldfile 1.php --newfile 22.php
- 162 php 22.php
- 163 cat 22
- 1.php 加密后生成 2.php 加密后运行测试正常
未知密钥只能暴力破解 分析 加密的文件头部 判断是 哪一种类型加密 三种加密类型 大多数是aes des的 base64的应该没人用
分析出加密类型 对文件主体进行破解分析
-----------------------分析说明 B-----------------------------
#define INT_SIZE (sizeof(int)) x64上占4个字节
文件头标识 = e816a40cf2b260ee 00000013 00000000 00000001
encrypt_file_header_sign = e816a40cf2b260ee
dumplen =00000013
expireval= 00000000
dumptype = 00000001
php_stream_write(output_stream,encrypt_file_header_sign, encrypt_file_header_length);
php_stream_write(output_stream, (const char *)&dumplen, INT_SIZE); 长度
php_stream_write(output_stream, (const char *)&expireval, INT_SIZE); 过期时间
php_stream_write(output_stream, (const char *)&dumptype, INT_SIZE); 加密类型 des=1
BEAST_ENCRYPT_TYPE_DES = 1, dumptype默认des 值为1
BEAST_ENCRYPT_TYPE_AES,
BEAST_ENCRYPT_TYPE_BASE64,
使用beast_encode_file()函数加密文件,函数原型如下:
beast_encode_file(string $input_file, string $output_file, int expire_timestamp, int encrypt_type)。
$input_file: 要加密的文件
$output_file: 输出的加密文件路径
$expire_timestamp: 文件过期时间戳
$encrypt_type: 加密使用的算法(支持:BEAST_ENCRYPT_TYPE_DES、BEAST_ENCRYPT_TYPE_AES)
-----------------------分析说明 E-----------------------------
未修改过的最多 大多数保护代码的三方为了安装容易 都会使用默认的密钥加密方式,否则一个服务器部署多个版本php-beast 会增加难度 易用性降低
默认密钥 如下 自己解密主体就好了
des_key = "011f011f010e010e"
aes_key=2b7e151628aed2a6abf7158809cf4f3c,
懒人也可以 用免费的工具 解密默认的php-beast加密的文件 点击 传送门phpbeast-beast解密decode-在线工具
原文链接:https://blog.csdn.net/haileyuxin/article/details/123307604
作者:狗蛋你别跑
链接:http://www.phpheidong.com/blog/article/337644/71c2cabcc769f99d7808/
来源:php黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 php黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-4
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!