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加密的源代码。
优网科技秉承"专业团队、品质服务" 的经营理念,诚信务实的服务了近万家客户,成为众多世界500强、集团和上市公司的长期合作伙伴!
优网科技成立于2001年,擅长网站建设、网站与各类业务系统深度整合,致力于提供完善的企业互联网解决方案。优网科技提供PC端网站建设(品牌展示型、官方门户型、营销商务型、电子商务型、信息门户型、DIY体验、720全景展厅及3D虚拟仿真)、移动端应用(手机站、APP开发)、微信定制开发(微信官网、微信商城、企业微信)、微信小程序定制开发等一系列互联网应用服务。
责任编辑:优网科技
版权所有:http://www.uweb.net.cn (优网科技) 转载请注明出处