php-beast 加密 和 解密 详解

php-beast 非常易用 效率又高的php代码保护扩展,介绍一下 windows 和linux上安装和使用的问题 ,以及如何处理常见解密问题

1)Windows版本加密处理

https://github.com/imaben/php-beast-binaries

windows下 可以直接在这里下载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.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   加密后运行测试正常

 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-在线工具

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值