PHP源码保护方案详解:二进制加密 vs 代码混淆(含免费方案、网页版批量加密)
很多PHP开发者分发源码时,都遇到过源码被盗、随意二次修改的问题。在宝塔面板里打开文件,弹出文件编码不被兼容,无法正确读取文件,这就是大家最常见到的SG17(SourceGuardian 17)二进制加密效果。很多人想找到同款效果、支持整项目批量加密、甚至网页拖拽操作的方案,本文把二进制加密、代码混淆、免费工具、优缺点一次性讲清楚。
一、先分清两个核心概念(重中之重)
很多新手很容易把「PHP混淆」和「PHP二进制字节码加密」搞混,两者效果、原理、使用门槛完全不一样:
二进制字节码加密(SG17 / ionCube / php-beast / tonyenc)加密之后,文件不再是可读的PHP文本,变成二进制密文。 ✅ 效果:宝塔在线编辑器打开直接提示编码不兼容,无法查看源码; ✅ 运行条件:服务器必须安装对应的Loader解密扩展(SG17 Loader、beast扩展、tonyenc扩展); ✅ 原理:源码在本地提前编译加密,PHP运行时由扩展自动解密执行; ❌ 限制:更换服务器、升级PHP版本,如果扩展不匹配,网站直接500报错。
我们截图里的
sg17.php、long.php,就是SourceGuardian17加密文件,SG、ionCube是行业商用主流方案,是收费软件,自带域名绑定、机器码锁定、设置到期授权的能力,换服务器源码直接失效,适合商业正版程序分发。
PHP代码混淆(Yakpro-po等)混淆只是对PHP源码文本做改写,文件本身依旧是合法PHP源码。 ✅ 效果:宝塔、记事本、VSCode都可以正常打开文件,不会报编码错误,只是代码变量名、字符串、逻辑流程被打乱,阅读难度极高; ✅ 运行条件:不需要服务器安装任何扩展,混淆后的文件在任何支持对应版本PHP的环境直接运行,兼容性极强; ✅ 原理:基于语法树解析,修改变量/类名、加密字符串、打乱控制流、删除注释; ❌ 限制:没有授权锁定功能,懂逆向的人可以还原代码,防护力度弱于二进制加密。
二、免费二进制加密方案(实现宝塔打不开源码的效果)
很多人问:有没有免费、和SG17效果一样的二进制加密工具?答案是有的,主流两款开源免费方案:php-beast、tonyenc。
重要提醒:免费二进制加密工具,原生不自带SG那种域名绑定、机器锁授权功能,授权校验逻辑需要自己写代码实现;同时防护强度弱于商用SG/ionCube,网上存在对应的解密脚本,主要用来阻挡普通小白扒源码。
1. php-beast(国产开源,优先推荐)
php-beast是国内开源的C语言PHP扩展,也是市面上各类网页版PHP加密面板最底层的核心引擎。
支持整项目批量加密:自带加密脚本,可以递归扫描整个项目目录,自动识别
.php文件加密,图片、css、js等静态文件原样复制,保留完整目录结构;特色:支持设置程序过期时间;
适配:主流支持PHP7.0~PHP8.1,Linux编译部署最稳定;
网页封装:网上流传的「小猫咪PHP加密系统、MK php-beast面板」就是给php-beast套了网页UI,部署在自己宝塔里之后,可以直接浏览器打开网页,拖拽上传ZIP项目包,自动批量加密,完成后打包下载,也就是大家想要的网页版批量加密;
风险提示:不要使用网上公共的在线beast加密网站,上传源码等于把源码交给第三方,极易泄露商业代码。
2. tonyenc(轻量高性能)
极简开源加密扩展,代码精简,性能损耗低,完美兼容opcache缓存。
一行命令即可批量加密整个文件夹,使用简单;
适配:PHP7~PHP8都兼容,Windows、Linux双平台支持;
短板:功能极简,没有自带过期时间设置,加密算法简单,防护能力偏弱,适合简单防护场景。
淘汰方案:PHP Screw,仅支持老旧PHP5,新版本PHP完全无法使用,不建议尝试。
三、免费批量混淆方案(Yakpro-po,无需扩展,上手最简单)
如果你不需要“宝塔打不开文件”的效果,只想要批量打乱代码、防止新手直接阅读复制源码,Yakpro-po(yakpro-po)是目前最好的免费开源混淆器,MIT开源协议。
支持整个项目目录递归批量处理,自动筛选php文件,静态资源原样保留;
功能:变量随机重命名、字符串加密、控制流扁平化、清除注释空白;
使用方式:原生是命令行CLI工具;
网页版:我们可以自己封装简易网页程序,上传ZIP包,后端调用yakpro-po自动混淆,打包返回下载;
优点:部署零依赖,不用给服务器加装任何扩展,迁移主机无压力;
缺点:属于文本混淆,专业人员可以逆向还原代码,没有授权锁。
四、网页版怎么选?两种路线对比
| 方案类型 | 拖拽整项目上传 | 宝塔打开报错(二进制密文) | 需要安装Loader扩展 | 自带域名/机器授权 | 适合场景 |
|---|---|---|---|---|---|
| 自建php-beast网页面板(小猫咪/MK) | ✅支持 | ✅是 | ✅需要beast扩展 | ❌无 | 想要SG同款效果、自己私有部署、不想源码外流 |
| 公共在线加密网站 | ✅支持 | ✅是 | 不需要你安装 | ❌无 | 仅测试学习,严禁商用源码上传 |
| Yakpro-po自建混淆网页 | ✅支持 | ❌不会报错 | ❌不需要 | ❌无 | 简单防小白复制、追求高兼容性、不想折腾扩展 |
重点忠告:只要是第三方公共在线加密网站,都存在源码泄露风险。商业项目如果想用网页批量加密,一定要在自己的宝塔服务器内部署私有化面板。
五、方案选型建议,按需选择
想要【和SG17一模一样:二进制乱码、宝塔编辑器打不开源码、网页拖拽整包加密】 👉 选择 php-beast + 私有化部署小猫咪/MK网页面板;
想要【简单批量保护代码、换服务器不出错、不想折腾扩展】 👉 选择 Yakpro-po 批量混淆;
想要【绑定域名、绑定服务器硬件、设置到期时间、高强度商业分发】 👉 免费方案无法满足,只能选择商用 SourceGuardian(SG17)或者 ionCube。
六、必须了解的避坑提醒
不管是二进制加密还是混淆,不存在绝对无法破解的方案。免费方案防护上限更低,仅作为源码防复制的第一道门槛;
PHP版本匹配是二进制加密最大的坑:beast、tonyenc、SG17的Loader扩展,必须和PHP版本、系统架构严格对应,升级PHP之后扩展大概率失效,网站直接500;
网上号称“SG17免费编码器、破解版SG”基本全部捆绑后门木马,千万不要下载使用;
前端JS代码不能用这套PHP加密方案,前端代码只能做JS混淆,原理和PHP混淆类似,和PHP二进制加密不是一回事。
如果你需要,还可以继续获取:宝塔编译php-beast教程、私有化网页混淆单页源码、yakpro-po批量混淆命令模板。











发表评论