PHP 8.x · Rust 載入器 · Web + CLI · Linux / Unix

賣你的 PHP 程式。
不用連原始碼一起賣。

BinaryPHP 用 AES-256-GCM 把你的商業 PHP 程式碼加密、 每個檔案配獨立金鑰,再幫你綁定 網域或 MAC、加上到期日——所有解密過程都交給一個 極輕量的 Rust 載入器透明完成。每季更新金鑰、永久向下相容, 破解成本遠高於正版授權費。

1. 線上編碼 2. 客戶安裝 3. 加密執行
# 到 binaryphp.com/encode/ 上傳檔案、填好授權資料:

  網域: acmestore.com, *.acmestore.com
  到期: 2027-12-31
  名稱: acme-pro

# 輸入  →  plugin.php          (你寫的原始碼,~40 KB)
# 輸出  →  plugin.php          (加密後,~41 KB 二進位內容)

# 檔名、副檔名都不變——可以直接覆蓋原檔,呼叫的地方完全不用改。
# 載入器靠 5-byte "BPHP2" 魔術頭認檔,跟副檔名無關。
# 主金鑰一直放在我們伺服器,你拿到的只有加密後的成品。

PHP 沒有編譯這回事。
對賣程式的人來說,這是個大問題。

客戶就是你的競爭對手

客戶下載你的 .zip 的那一刻,你寫的每一行 PHP 他都能拿去抄、改、轉賣。

授權碼根本擋不住

原始碼直接攤在那邊,幾分鐘就能把授權檢查整段拿掉。沒有程式碼層的保護,授權只是個開關,不是一道牆。

你的心血散在別人硬碟上

客戶一下載完,你的智慧財產就散落在共享主機、VPS、CI 機器各處——你看不到、管不到,一行 tar -xzf 就全挖出來。

運作方式

1

上傳

.php 檔或整包外掛 .zip 拖到我們的線上編碼器,設定要綁的網域、MAC、到期日就好。主金鑰一直放在我們這邊——你完全不用煩惱保管的事。

2

派送

下載加密好的檔案。每個檔案配一份獨立的 16-byte salt 跟 HKDF-SHA256 衍生金鑰;只要被改過任何一個 byte,GCM 驗證就會失敗、拒絕執行。

3

載入

客戶在 php.ini 加一行 extension=binaryphp.so。載入器接到 PHP 的編譯流程,在記憶體裡解密、驗證授權(看網域 SERVER_NAME / HTTP_HOST 或 CLI 環境的 MAC),最後把明碼直接餵給 Zend Engine。

內建功能

🔐 AES-256-GCM

NIST 標準的認證加密。檔案被改一個 byte,GCM tag 就過不了、直接拒絕執行。

🧂 每檔獨立金鑰

每個加密檔配獨立 16-byte salt,再用 HKDF-SHA256 衍生出該檔專屬的金鑰。每個檔各自密封,互不影響。

🛡️ 核心函式跑自家 VM

#[binaryphp\Protected] 的函式會編譯成我們自家的 bytecode——不是 PHP,也不是 Zend opcode。執行階段由載入器直接解譯,演算法不會以原始碼形式落在客戶硬碟上。

🌐 多網域授權

一張授權可以列多個主機名稱或萬用字尾(*.example.com),任一符合就放行。

🔌 綁 MAC 位址

CLI 工具、cron job 這種非 HTTP 環境:直接把授權綁到客戶機器的 MAC(讀 /sys/class/net)。

⏳ 到期日

發行有時效的版本(試用、訂閱、發行週期)都行。載入器會拿系統時鐘對照檔案內嵌的時間戳。

⚙️ 標準 PHP 擴充

php.iniextension= 載入。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 之後,連那一次解密都會被快取攤平。

100 萬次熱迴圈跑分(for + % + 累加) · 條越短越快 · 基準是原生 PHP
原生 PHP
88.6 ms
1.0×
binaryphp-rs
89.5 ms
1.0×
binaryphp-vm + JIT
~115 ms
1.3×
binaryphp-vm 直譯
197.6 ms
2.2×
原生 / .bphp 全檔加密 #[Protected] · cranelift JIT #[Protected] · 純直譯
工作負載 原生 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 * immx % imm)已經把熱迴圈成本從 ~5× 壓到 ~2.5×,做法是把 LoadVar / StoreVar 的堆疊操作合併成單一 op。

VM 語言覆蓋率: 物件導向(類別、extendsabstractinterfacetrait + usestatic、類別常數、$thisparent::self::、magic __construct / __get / __set / __call); 閉包 function () use (…) 與 箭頭函式 fn () => exprtry / catch / finally / throwmatch=== / !==???:<=>instanceof; lazy / coroutine 生成器(yield 採 frame snapshot & resume — 無限生成器可用,只有實際被消費的值會被計算); 完整的 for / while / foreach / switch / break / continue; spread ...$args; 引用 &$x(函式參數與內建如 array_push / sort 都支援); global;heredoc / nowdoc; 約 50 個內建函式(strlencounttrimexplodeimplodesprintfmd5sha1base64_encode/decodearray_* 等); #[Protected] 可標註在類別方法上,$this->prop 讀寫會在 PHP 與 VM 間自動同步;cranelift AOT JIT 優化整數熱迴圈。

怎麼選:整包出貨直接用 .bphp(binaryphp-rs)就好 — 跟原生 PHP 的速度差距已經量不出來。#[Protected](binaryphp-vm) 留給敏感的函式 — 授權驗證、金鑰派生、防竄改邏輯 — 用大約 2.5 倍的執行成本,換到「就算主金鑰外洩,核心邏輯一樣看不到」。 開了 OPcache 之後,沒上保護的路徑跟原生 PHP 完全一樣快

方案與價格

透過 Stripe 月繳或年繳,年繳直接打 8 折

免費

$0永久免費
  • 用 Google 登入即可使用
  • 單檔上限 1 MB.php.zip
  • 1 個精確網域(不能用萬用字)+ 1 個 MAC
  • 加密強度跟付費版完全一樣
  • 有送出速率限制
登入即可開始
ISV 專用

Ultra

$10/ 月 · $96 / 年(省 20%)
  • 包含 Pro 全部功能
  • 單檔上限 300 MB(multipart 大檔上傳)
  • REST API + Webhook,可串進你的銷售流程
  • 客戶向你下單 → 你呼叫我們 API → 我們把下載連結 webhook 給你 → 你寄給客戶
  • 每次編碼可單獨指定網域 / MAC / 到期日
  • 優先支援
透過 Stripe 訂閱

免費版跟付費版用的是同一套編碼引擎!一樣的 AES-256-GCM、一樣的位元碼 VM、保護強度完全相同。差別只在用量限制(檔案大小、API 權限、批次速率)。

安裝載入器

免費、可自由散布。任何要跑 BinaryPHP 加密外掛的主機都得先裝這個。

客戶端

標準安裝(Debian/Ubuntu, PHP 8.2)

# 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 暫不支持。

外掛開發者

使用 SaaS 編碼器

不用裝 CLI、也不用保管主金鑰。打開編碼器、上傳、設定授權、下載加密檔,就這樣。

  • 每檔獨立隨機 salt + AES-256-GCM
  • 授權資料(網域 · MAC · 到期日)封裝在密文裡,無法被竄改
  • 檔名不變(.php.php
  • 載入器靠魔術頭認檔,跟副檔名無關
打開編碼器

免費版接受 .php.zip,上限 1 MB。Pro 上限 100 MB;Ultra 透過 multipart 上限 300 MB。

常見問題

BinaryPHP 真的破解不了嗎?

老實說:沒有任何離線可執行的 DRM 能保證「永遠無法破解」。包括 ionCube、Zend Guard、SourceGuardian 都曾被研究與破解過。

所以 BinaryPHP 的目標不是神話式的「絕對安全」,而是:

讓破解成本遠高於正版授權成本。

破解 BinaryPHP 並不只是「解密檔案」而已。攻擊者通常還需要:

  • 反向工程 Loader
  • 分析執行期邏輯
  • 還原 VM Bytecode
  • 重建混淆後的程式流程

即使成功,得到的也通常不是原始碼,而是:

  • 失去變數名稱
  • 沒有註解
  • 控制流混亂
  • 難以維護的中間表示

而且 BinaryPHP 會持續更新:

  • Loader
  • VM 指令集
  • 混淆層
  • Anti-debug / Anti-tamper

讓舊版破解工具快速失效。

這就是 BinaryPHP 的核心理念:

不是讓破解「不可能」,而是讓破解「不值得」。

Web 跟 CLI 該用哪種授權?

跑在 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 提供哪些保護層?

載入器內建三層獨立防護:

  • AES-256-GCM 認證加密 + HKDF-SHA256 每檔衍生金鑰。每個檔案各自有獨立 salt 與金鑰——破解一個不會影響其他檔案。
  • 自家位元碼 VM,專門處理你標 #[binaryphp\Protected] 的函式。這些函式會被編譯成我們自家的 bytecode(不是 PHP,也不是 Zend opcode),執行階段由載入器直接解譯。客戶硬碟上根本不會出現過明文 PHP。
  • 授權資料封在密文裡:網域 / MAC / 到期日。只要動到任何一處,GCM tag 就過不了、拒絕執行。

最敏感的演算法建議放在你自己的 server API 上跑;其他部分 BinaryPHP 用分層防護幫你擋下,不必把整套程式重寫。

支援我的框架 / autoloader 嗎?

支援。BinaryPHP 攔的是 PHP 的編譯流程,所以 include / require 都照常運作——Composer autoload、框架 router、外掛系統都沒問題。

OPcache 相容嗎?

相容。OPcache 是在我們解密、編譯完之後才接手快取編譯結果,每個失效週期只解密一次。

檔案格式長什麼樣?

有公開且穩定的規格:52-byte 檔頭("BPHP2" magic + 版本號 + 16-byte salt + 12-byte IV + 16-byte GCM tag)後面接密文。

支援哪些付款方式?

計費全部走 Stripe,可以挑:

  • 月繳訂閱 — Pro $5/月、Ultra $10/月,隨時可取消。
  • 年繳訂閱 — 同樣方案改年繳,自動 打 8 折(Pro $48/年、Ultra $96/年)。

訂閱享 30 天退款保證。Stripe 接受所有主要信用卡跟多數地區性付款方式。

有人上傳惡意 PHP 會把你們系統搞垮嗎?

架構上不會。我們不會執行你上傳的 PHP,只做 tokenize(語法切片)跟加密。編碼器對檔案跑 token_get_all()(PHP 的詞法分析器,不是執行器),把 HTML 跟 PHP 區塊切開,用 AES 加密每個 PHP 區塊、寫出檔案。整個流程沒用 evalinclude、也沒呼叫任何 shell 指令。

zip 上傳還多了四道防線(解壓前先驗):

  • 擋路徑跳脫攻擊(../、絕對路徑、磁碟代號)
  • 擋 zip bomb(累計解壓 > 200 MB 或壓縮比 > 100 倍)
  • 擋條目過多(> 2,000 檔,或裡面 > 1,000 個 .php)
  • 擋目錄太深(> 16 層)

每個編碼工作都在獨立暫存目錄裡跑、回應送出後立刻清掉。你想上傳什麼惡意程式碼都行——我們只會幫你加密好還給你。

API 方案怎麼運作?

給轉售加密 PHP 外掛的 ISV / SaaS 業者用。客戶向你下單後:

  1. 你的伺服器 POST 我們的 REST API,帶上客戶的網域 / MAC、編碼參數、webhook URL。
  2. 我們從你給的 URL 抓原始碼(或接受 inline),編碼好上傳到 R2。
  3. 我們把下載連結 POST 到你設定的 webhook。
  4. 你再把連結轉給客戶(email、儀表板、用什麼方式都行)。

編碼成品放在 R2 保留 72 小時自動清除;你上傳的原始碼 24 小時內就刪掉。

正在用 BinaryPHP 出貨的客戶

別再把原始碼一起送出去了。

用 Google 登入就能開始 — 免費版立即可用,不用刷卡。