PHP 8.x · Rust 加载器 · Web + CLI · Linux / Unix
BinaryPHP 用 AES-256-GCM 把你的商用 PHP 代码加密、 每个文件配独立密钥,再帮你绑定 域名或 MAC、加上到期日——所有解密过程都交给一个 极轻量的 Rust 加载器透明完成。每季更新密钥、永久向下兼容, 破解成本远高于正版授权费。
# 到 binaryphp.com/encode/ 上传文件、填好授权资料:
域名: acmestore.com, *.acmestore.com
到期: 2027-12-31
名称: acme-pro
# 输入 → plugin.php (你写的源代码,~40 KB)
# 输出 → plugin.php (加密后,~41 KB 二进制内容)
# 文件名、扩展名都不变——可以直接覆盖原文件,调用的地方完全不用改。
# 加载器靠 5-byte "BPHP2" 魔术头识别文件,跟扩展名无关。
# 主密钥一直放在我们服务器,你拿到的只有加密后的成品。
客户下载你的 .zip 那一刻,你写的每一行 PHP 他都能拿去抄、改、转卖。
源代码直接摊在那边,几分钟就能把授权检查整段去掉。没有代码层的保护,授权只是个开关,不是一道墙。
客户一下载完,你的知识产权就散落在共享主机、VPS、CI 机器各处——你看不到、管不到,一行 tar -xzf 就全挖出来。
把 .php 文件或整包插件 .zip 拖到我们的在线编码器,设置要绑的域名、MAC、到期日就好。主密钥一直放在我们这边——你完全不用操心保管的事。
下载加密好的文件。每个文件配一份独立的 16-byte salt 跟 HKDF-SHA256 派生密钥;只要被改过任何一个 byte,GCM 校验就会失败、拒绝执行。
客户在 php.ini 加一行 extension=binaryphp.so。加载器接到 PHP 的编译流程,在内存里解密、验证授权(看域名 SERVER_NAME / HTTP_HOST 或 CLI 环境的 MAC),最后把明码直接喂给 Zend Engine。
NIST 标准的认证加密。文件被改一个 byte,GCM tag 就过不了、直接拒绝执行。
每个加密文件配独立 16-byte salt,再用 HKDF-SHA256 派生出该文件专属的密钥。每个文件各自密封,互不影响。
标 #[binaryphp\Protected] 的函数会编译成我们自家的 bytecode——不是 PHP,也不是 Zend opcode。运行时由加载器直接解释执行,算法不会以源代码形式落到客户硬盘上。
一张授权可以列多个主机名或通配符(*.example.com),任一匹配就放行。
CLI 工具、cron job 这种非 HTTP 环境:直接把授权绑到客户机器的 MAC(读 /sys/class/net)。
发布有时效的版本(试用、订阅、发布周期)都行。加载器会拿系统时钟对照文件内嵌的时间戳。
在 php.ini 用 extension= 加载。PHP-FPM、mod_php、CLI、FrankenPHP 都支持。
单一 ~2.0 MB stripped .so(已含字节码 VM 跟 cranelift JIT)。每文件解密耗时不到 1 毫秒。
普通 .php 文件照样正常编译——加载器只拦截带 BinaryPHP 魔术头的文件,其他完全不碰。
加载器挂在 zend_compile_file 上,每个 PHP 进程、每个文件只解密一次。
编译成 Zend opcode 之后,执行速度跟普通 PHP 完全没差别。
开了 OPcache 之后,连那一次解密都会被缓存摊平。
for + % + 累加) · 条越短越快 · 基准是原生 PHP
| 工作负载 | 原生 PHP | binaryphp-rs (.bphp · 全文件加密) |
binaryphp-vm (#[Protected] · 字节码 VM) |
|---|---|---|---|
函数内 100 万次热循环(for + % + 累加) |
88.61 ms ± 0.95 |
89.48 ms ± 3.08 |
~115 ms(JIT) · 解释 197.56 ms |
| 冷启动 — 小文件(~220 B) | 56.05 ms ± 1.62 |
56.46 ms ± 1.34 |
~bphp (只是 stub,函数还没被调用,VM 不启动) |
| 冷启动 — 10 KB 文件(200 个函数) | 57.14 ms ± 1.33 |
57.09 ms ± 1.57 |
~bphp (VM 成本算在调用,不算在加载) |
| OPcache 稳态 | 跟原生一样 |
跟原生一样 |
每次调用额外开销 |
| 原生 ≈ binaryphp-rs(差距在误差范围内)。 binaryphp-vm 热循环约慢 1.3 倍(cranelift JIT 已优化整数热路径) — 换来字节码级的保护:就算主密钥泄露,函数内容一样看不到。 | |||
测量于 2026-05-05,使用 hyperfine,每组数据跑 30 次。
环境:Debian 12(kernel 6.5)+ PHP 8.2.30 + Rust 1.95.0、
Intel Xeon E5-2680 v4 @ 2.40 GHz(binaryphp.so 548 KB,
release + LTO 构建)。每次 include 的解密成本约等于
文件大小 / 1 GB/s(AES-NI 硬件加速),再加 ~50 µs 的 HKDF 跟授权检查。
VM 执行成本与字节码指令数成正比。
编译器的 peephole 优化($x++、$x += k、
$x = $x + e、slot-vs-slot 整数比较、$x * imm、
x % imm)已经把热循环成本从 ~5× 压到 ~2.5×,做法是把
LoadVar / StoreVar 的栈操作合并成单一 op。
VM 语言覆盖率:
面向对象(类、extends、abstract、
interface、trait + use、
static、类常量、$this、
parent::、self::、magic
__construct / __get /
__set / __call);
闭包 function () use (…) 与
箭头函数 fn () => expr;
try / catch / finally / throw;
match、=== / !==、??、
?:、<=>、instanceof;
lazy / coroutine 生成器(yield 采 frame snapshot & resume —
无限生成器可用,只有实际被消费的值才会被计算);
完整的 for / while / foreach / switch / break / continue;
spread ...$args;
引用 &$x(函数参数与内置如
array_push / sort 都支持);
global;heredoc / nowdoc;
约 50 个内置函数(strlen、
count、trim、explode、
implode、sprintf、md5、
sha1、base64_encode/decode、
array_* 等);
#[Protected] 可标注在类方法上,$this->prop
读写会在 PHP 与 VM 间自动同步;cranelift AOT JIT 优化整数热循环。
.bphp(binaryphp-rs)就好 —
跟原生 PHP 的速度差距已经测不出来。#[Protected](binaryphp-vm)
留给最敏感的函数 — 授权验证、密钥派生、防篡改逻辑 —
用大约 2.5 倍的执行成本,换来「就算主密钥泄露,核心逻辑一样看不到」。
开了 OPcache 之后,没上保护的路径跟原生 PHP 完全一样快。
通过 Stripe 月付或年付,年付直接打 8 折。
.php 或 .zip.zip 上限 100 MB免费版跟付费版用的是同一套编码引擎!一样的 AES-256-GCM、一样的字节码 VM、保护强度完全相同。差别只在使用配额(文件大小、API 权限、批量速率)。
免费、可自由分发。任何要跑 BinaryPHP 加密插件的主机都得先装这个。
# 1. 把 .so 复制到 PHP 扩展目录
$ sudo cp binaryphp.so /usr/lib/php/20220829/
# 2. 启用此扩展
$ echo 'extension=binaryphp.so' | sudo tee /etc/php/8.2/mods-available/binaryphp.ini
$ sudo phpenmod binaryphp
# 3. 重启 PHP-FPM(或你的 SAPI)
$ sudo systemctl restart php8.2-fpm
验证加载器是否启用:
$ php -r 'echo binaryphp_version();'
0.9.2
$ php -r 'echo binaryphp_hostname();'
your-domain-or-hostname
$ php -r 'print_r(binaryphp_macs());'
Array ( [0] => aa:bb:cc:dd:ee:ff )
或者在浏览器打开任何 phpinfo() 页面 — 会看到一个专属的 BinaryPHP 区块,列出加载器版本、master 世代、支持格式、字节码 VM 状态。对没 CLI 权限的环境(cPanel、Plesk、共享主机)特别方便:
BinaryPHP support → enabled
Loader version → 0.9.2
Master gen → 2 (rotated 2026-05-06)
File formats → BPHP2/3/4 · HBPH1/2/3 · BVMC1/2/3
Bytecode VM → v3 obfuscation + cranelift JIT
请挑你 PHP 对应的小版本下载(每个 .so 是针对该 ABI 编译的,不能互换):
在你服务器跑 php -v 看实际版本。macOS / aarch64 / FreeBSD 暂不支持。
不用装 CLI、也不用保管主密钥。打开编码器、上传、设置授权、下载加密文件,就这样。
.php → .php)免费版接受 .php 或 .zip,上限 1 MB。Pro 上限 100 MB;Ultra 通过 multipart 上限 300 MB。
实话说:没有任何离线可执行的 DRM 能保证「永远无法破解」。包括 ionCube、Zend Guard、SourceGuardian 都曾被研究与破解过。
所以 BinaryPHP 的目标不是神话式的「绝对安全」,而是:
让破解成本远高于正版授权成本。
破解 BinaryPHP 并不只是「解密文件」而已。攻击者通常还需要:
即使成功,得到的也通常不是源代码,而是:
而且 BinaryPHP 会持续更新:
让旧版破解工具快速失效。
这就是 BinaryPHP 的核心理念:
不是让破解「不可能」,而是让破解「不值得」。
跑在 web server 上的程序用域名绑定。加载器会先检查 $_SERVER['SERVER_NAME'](这个值由 nginx / Apache 设置,客户端伪造不了),抓不到才退回去看 HTTP_HOST。CLI 工具就用 MAC 地址绑。两个也可以一起填,匹配任一个就放行。
不会。解密只在编译阶段跑一次、每个文件一次。编译之后,执行速度跟原生 PHP 没差别。OPcache 一开,连那一次解密的成本都会被摊平到后续所有请求。
用 SaaS 编码器的话:不会。主密钥始终留在我们这边,不会外流到你的环境。
BinaryPHP 是 2026 年从头打造的全新版本,底层用现代密码学(AES-256-GCM、HKDF-SHA256),核心逻辑再用我们自家的字节码 VM 包一层。工具链以 SaaS 形式提供,主密钥一直放在我们服务器,文件格式也有公开规格。
主机要先装 BinaryPHP 加载器才行。加载器免费、可自由分发——可以让客户自己装(在 php.ini 加一行就好)或让主机商预装。
加载器内置三层独立防护:
#[binaryphp\Protected] 的函数。这些函数会被编译成我们自家的 bytecode(不是 PHP,也不是 Zend opcode),运行时由加载器直接解释执行。客户硬盘上根本不会出现过明文 PHP。最敏感的算法建议放在你自己的 server API 上跑;其他部分 BinaryPHP 用分层防护帮你挡下,不必把整套程序重写。
支持。BinaryPHP 拦截的是 PHP 的编译流程,所以 include / require 都照常运作——Composer autoload、框架 router、插件系统都没问题。
兼容。OPcache 是在我们解密、编译完之后才接手缓存编译结果,每个失效周期只解密一次。
有公开且稳定的规格:52-byte 文件头("BPHP2" magic + 版本号 + 16-byte salt + 12-byte IV + 16-byte GCM tag)后面接密文。
计费全部走 Stripe,可以挑:
订阅享 30 天退款保证。Stripe 接受所有主要信用卡跟多数地区性付款方式。
架构上不会。我们不会执行你上传的 PHP,只做 tokenize(语法切片)跟加密。编码器对文件跑 token_get_all()(PHP 的词法分析器,不是执行器),把 HTML 跟 PHP 区块切开,用 AES 加密每个 PHP 区块、写出文件。整个流程没用 eval、include、也没调用任何 shell 命令。
zip 上传还多了四道防线(解压前先验证):
../、绝对路径、磁盘代号)每个编码任务都在独立临时目录里跑、响应送出后立刻清掉。你想上传什么恶意代码都行——我们只会帮你加密好还给你。
给分销加密 PHP 插件的 ISV / SaaS 厂商用。客户向你下单后:
POST 我们的 REST API,带上客户的域名 / MAC、编码参数、webhook URL。POST 到你设定的 webhook。编码成品放在 R2 保留 72 小时自动清除;你上传的源代码 24 小时内就删掉。
十分钟邮箱
「BinaryPHP 我们一开始用免费版本测试,效果感觉不错,目前用 Pro 把整个网站编译进去,连同 PHPMailer,这真是太强大了!速度上也没感觉到拖累。」