PHP Zend解释器要认可你的加密,必须扩展解释器(Module)
Module模块要解密,必须协调好密钥、数据结构(编译在so文件中)
Module模块最好提供加密函数供加密用,否则泄露加密秘钥
加密文件也要防止被复制,二次部署
方案实施
php-beast PHP源码扩展,通过phpize编译成so文件
加密秘钥和加密后的header可定制,编译在so文件中
支持的函数包括
beast_encode_file(): 用于加密一个文件beast_avail_cache(): 获取可缓存大小beast_support_filesize(): 获取beast支持的最大可加密文件大小beast_file_expire(): 获取一个文件的过期时间beast_clean_cache(): 清空beast的所有缓存(如果有文件更新, 可以使用此函数清空缓存)
可绑定网卡,防止被直接复制二次部署
使用步骤
1. clone项目,并修改几个关键点,防止被逆向解密
加密秘钥,如果加密方式选择aes,修改下图中位置代码
加密后文件头,用于识别加密文件,在header.c文件中
char encrypt_file_header_sign[] = {
0xe8, 0x16, 0xa4, 0x0c,
0xf2, 0xb2, 0x60, 0xee
};
2. 编译,生成so文件后,修改php配置,添加`extension=beast.so`
$ phpize$ ./configure$ sudo make && make install
3. 加密源代码
vim tools/configure.ini
; source path
src_path = "" // 代加密的文件路径
; destination path
dst_path = "" // 输出加密后的文件路径
; expire time
expire = "" // 加密后的文件什么时候过期
; encrypt type (selection: DES, AES, BASE64)
encrypt_type = "AES"
执行 php tools/encode_files.php加密
4. 加密前后的文件对比,执行前后的文件得到的结果都一样
写在最后
php-beast还支持自定义加密模块,定义自己的加密规则,防止使用开源的加密算法造成逆向解密。
如何逆向解密加密后的文件,下篇文章就手撸如何解密php-beast加密的源代码。

優(yōu)網(wǎng)科技秉承"專業(yè)團隊、品質(zhì)服務(wù)" 的經(jīng)營理念,誠信務(wù)實的服務(wù)了近萬家客戶,成為眾多世界500強、集團和上市公司的長期合作伙伴!
優(yōu)網(wǎng)科技成立于2001年,擅長網(wǎng)站建設(shè)、網(wǎng)站與各類業(yè)務(wù)系統(tǒng)深度整合,致力于提供完善的企業(yè)互聯(lián)網(wǎng)解決方案。優(yōu)網(wǎng)科技提供PC端網(wǎng)站建設(shè)(品牌展示型、官方門戶型、營銷商務(wù)型、電子商務(wù)型、信息門戶型、DIY體驗、720全景展廳及3D虛擬仿真)、移動端應(yīng)用(手機站、APP開發(fā))、微信定制開發(fā)(微信官網(wǎng)、微信商城、企業(yè)微信)、微信小程序定制開發(fā)等一系列互聯(lián)網(wǎng)應(yīng)用服務(wù)。
責(zé)任編輯:優(yōu)網(wǎng)科技
版權(quán)所有:http://news.zouhaitian.cn (優(yōu)網(wǎng)科技) 轉(zhuǎn)載請注明出處