首页
关于
Search
1
2022最新WPS政府/教育版合集
3,427 阅读
2
欢迎使用 Typecho
3,277 阅读
3
thinkphp 做301重定向跳转
2,694 阅读
4
IDE 注册教程
2,502 阅读
5
使用PHP和PHP Desktop创建第一个桌面应用程序
2,489 阅读
源码
教程
HTML
JAVASCRIPT
PHP
MYSQL
系统
LINUX
WINDOWS
填坑
工具
登录
/
注册
Search
标签搜索
系统工具
内网穿透
PHPDesktop
TaurusCoders
累计撰写
52
篇文章
累计收到
1
条评论
首页
栏目
源码
教程
HTML
JAVASCRIPT
PHP
MYSQL
系统
LINUX
WINDOWS
填坑
工具
页面
关于
搜索到
1
篇与
源码
的结果
2023-12-23
php-beast加解密教程
php-beast 非常易用 效率又高的php代码保护扩展,介绍一下 windows 和linux上安装和使用的问题 ,以及如何处理常见解密问题1)Windows版本加密处理https://github.com/imaben/php-beast-binarieswindows下 可以直接在这里下载dll根据自己的php版本 还有是不是线程安全的 来选择下载对应的 放到对应的扩展目录 中在配置文件 php.ini中加入扩展配置extension=php_beast_x86_nts.dll但是秘钥是一样的 编译的话很多时候 会失败 或者出现lib版本不匹配问题老版本 我用vs编译过 dll收到版本限制比较麻烦处理官方提供的版本很稳定 直接二进制修改对应秘钥部分就可以了【1】处理aes的部分 ida分析到 变了对应的位置static uint8_t key[] = { 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c,};根据文件偏移 用ue二进制编辑 找到对应位置 修改 保存即可【2】处理des部分ida逆向分析出秘钥变量的位置 和源码里面static char key[8] = { 0x01, 0x1f, 0x01, 0x1f, 0x01, 0x0e, 0x01, 0x0e,};正好对应上 用ue二进制编辑 修改保存测试通过 其他加密方式就不处理了 [3] encrypt_file_header_sign 修改 encrypt_file_header_sign 修改ida分析到 头 信息 位置 这个数据应该是在加密的文件最前面来标示文件是否被加密了 尽量特别一点我的版本 在76760这个位置长度是8 2)Linux 版本加密处理 编译前需要修改秘钥 新版本的加密方式比较多 需要修改的地方也比较多老版本的是在key.c中修改 新版 修改是在header.c中aes_algo_lib.cdes_algo_handler.cheader.c编译步骤如下120 wget https://github.com/liexusong/php-beast/archive/master.zip121 unzip master.zip122 cd php-beast-master/124 phpize125 ./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-config132 sudo make && make install133 sudo make test134 php -m发现没成功 重新试一遍135 ./configure --with-php-config=/usr/local/php/bin/php-config136 sudo make && make install后面也要加sudo root权限137 sudo make && sudo make install138 php -m140 sudo make test成功添加到php配置文件种141 php -i|grep ini142 gedit /usr/local/php/etc/php.ini添加 extension="beast.so"146 php -i|grep extension153 service php-fpm restart重启php 开始加密测试154 cd tools/161 php encode_file.php --encrypt DES --oldfile 1.php --newfile 22.php162 php 22.php163 cat 221.php 加密后生成 2.php 加密后运行测试正常 3)php-beast解密 [1]修改过的密钥的 很难解密未知密钥只能暴力破解 分析 加密的文件头部 判断是 哪一种类型加密 三种加密类型 大多数是aes des的 base64的应该没人用 分析出加密类型 对文件主体进行破解分析 -----------------------分析说明 B----------------------------- #define INT_SIZE (sizeof(int)) x64上占4个字节 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----------------------------- 【2】默认密钥加密的 ,未修改过的最多 大多数保护代码的三方为了安装容易 都会使用默认的密钥加密方式,否则一个服务器部署多个版本php-beast 会增加难度 易用性降低 默认密钥 如下 自己解密主体就好了 des_key = "11" aes_key=2b,懒人也可以 用免费的工具 解密默认的php-beast加密的文件 点击 传送门phpbeast-beast解密decode-在线工具
2023年12月23日
646 阅读
0 评论
0 点赞