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 のバイナリ内容)
# ファイル名・拡張子は変わらず、元ファイルに上書き OK。呼び出し側は変更不要。
# ローダーは 5-byte の "BPHP2" マジックヘッダで識別、拡張子は無関係。
# マスターキーは弊社サーバーに留まり、お客様には暗号化済み成果物のみが渡ります。
顧客があなたの .zip をダウンロードした瞬間、書いたすべての PHP がコピー、改変、再販可能な状態に。
ソースコードがそのまま見えるなら、ライセンスチェックは数分で削除できます。コードレベルの保護がない限り、ライセンスはスイッチに過ぎず、壁にはなりません。
顧客がダウンロードした瞬間、知的財産は共有ホスト・VPS・CI マシンに散乱——あなたは見ることも管理することもできず、tar -xzf 一行で全部抜き取られます。
.php ファイル、またはプラグイン全体の .zip をオンラインエンコーダーにドラッグし、ドメイン・MAC・有効期限を設定するだけ。マスターキーは弊社サーバー側に留まります——お客様が鍵を保管する必要はありません。
暗号化済みファイルをダウンロード。各ファイルに独立した 16-byte salt と HKDF-SHA256 派生鍵が付属。1 byte でも改ざんされれば GCM 検証が失敗し、実行を拒否します。
顧客は php.ini に extension=binaryphp.so の 1 行を追加するだけ。ローダーが PHP のコンパイル経路に挿入され、メモリ上で復号、ライセンス検証(ドメイン SERVER_NAME / HTTP_HOST または CLI の MAC を確認)し、最後に平文を Zend Engine に直接渡します。
NIST 標準の認証付き暗号化。1 byte でも改ざんされると GCM tag 検証で失敗し、実行を拒否します。
各暗号化ファイルに独立した 16-byte salt が付き、HKDF-SHA256 でファイル専用の鍵を派生。各ファイルは独立して密閉され、互いに影響しません。
#[binaryphp\Protected] をマークした関数は弊社独自のバイトコードにコンパイルされます——PHP でも Zend opcode でもありません。実行時はローダーが直接解釈し、アルゴリズムが顧客のディスク上にソース形式で残ることはありません。
1 つのライセンスに複数のホスト名やワイルドカード(*.example.com)を列挙可能。いずれかにマッチで通過。
CLI ツールや cron job など HTTP がない環境では、ライセンスを顧客マシンの MAC(/sys/class/net から取得)に直接バインドします。
期限付きビルドの発行(試用、サブスク、リリースサイクル)に対応。ローダーがシステム時刻とファイルに埋め込まれた timestamp を照合します。
php.ini の extension= でロード。PHP-FPM、mod_php、CLI、FrankenPHP すべて対応。
単一の ~2.0 MB stripped .so(バイトコード VM と cranelift JIT を含む)。ファイル毎の復号は 1 ミリ秒未満。
通常の .php はそのままコンパイル——ローダーは BinaryPHP マジックヘッダのあるファイルだけを処理し、他は一切触りません。
ローダーは zend_compile_file にフックし、各 PHP プロセス、各ファイルの復号は 1 度だけ。
Zend opcode へのコンパイル後の実行速度は通常の PHP と差がありません。
OPcache を有効にすれば、その 1 度の復号もキャッシュで償却されます。
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 のスタック操作を 1 op に統合する手法です。
VM の言語カバレッジ:
オブジェクト指向(クラス、extends、abstract、
interface、trait + use、
static、クラス定数、$this、
parent::、self::、マジックメソッド
__construct / __get /
__set / __call);
クロージャ function () use (…) と
アロー関数 fn () => expr;
try / catch / finally / throw;
match、=== / !==、??、
?:、<=>、instanceof;
遅延 / コルーチンジェネレータ(yield は frame snapshot & resume —
無限ジェネレータも使用可、消費された値だけが計算される);
for / while / foreach / switch / break / continue 完全対応;
スプレッド ...$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)でOK——
ネイティブ PHP との速度差は計測不能なレベル。#[Protected](binaryphp-vm)は
最も機微な関数 — ライセンス検証、鍵派生、改ざん防止ロジック — 専用に。
約 2.5 倍の実行コストを払う代わりに「マスターキーが流出しても、コアロジックは見えない」を獲得。
OPcache 有効時、保護をかけていないパスはネイティブ PHP と完全に同じ速度です。
Stripe で月額または年額、年額は 20% オフ。
.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_NAME'](nginx / Apache が設定するためクライアントから偽装不可)を確認し、なければ HTTP_HOST にフォールバック。CLI ツールは MAC アドレスでバインド。両方記入もでき、いずれかにマッチで通過。
落ちません。復号はコンパイル段階で 1 度だけ、ファイル毎に 1 度。コンパイル後の実行速度はネイティブ PHP と差がありません。OPcache が有効ならその 1 度の復号も後続リクエスト全体で償却されます。
SaaS エンコーダーを使う場合はいいえ。マスターキーは常に弊社側に留まり、お客様の環境には流出しません。
BinaryPHP は 2026 年にゼロから構築された新版で、現代暗号(AES-256-GCM、HKDF-SHA256)を基礎とし、コアロジックは独自バイトコード VM で覆います。ツールチェーンは SaaS 形式で提供、マスターキーは弊社サーバーに常駐、ファイルフォーマットも公開仕様です。
ホスト側に BinaryPHP ローダーをインストールする必要があります。ローダーは無料で再配布可——顧客に自分でインストールしてもらうか(php.ini に 1 行追加するだけ)、ホスティング業者にプリインストールを依頼可能。
ローダーは独立した 3 層の防御を内蔵:
#[binaryphp\Protected] をマークした関数専用。これらの関数は弊社独自のバイトコードにコンパイルされ(PHP でも Zend opcode でもない)、実行時にローダーが直接解釈。顧客のディスクには平文の PHP は一切現れません。最も機微なアルゴリズムはサーバー API 側で実行することを推奨。それ以外は BinaryPHP が多層防御で守るため、プログラム全体を書き直す必要はありません。
互換です。BinaryPHP が介入するのは PHP のコンパイル経路なので、include / require は通常通り動作——Composer autoload、フレームワーク router、プラグイン機構もすべて問題なし。
互換です。OPcache は弊社の復号・コンパイル後にコンパイル結果のキャッシュを引き継ぎ、各失効サイクルにつき 1 度しか復号しません。
公開かつ安定した仕様: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 アップロードはさらに 4 重の防衛線(解凍前に検証):
../、絶対パス、ドライブレター)各エンコードジョブは独立した一時ディレクトリで実行、レスポンス送信後即座にクリア。どんな悪意あるコードを上げてもらっても結構——弊社は暗号化して返すだけです。
暗号化 PHP プラグインを再販する ISV / SaaS 業者向け。顧客が注文した後:
POST、顧客のドメイン / MAC、エンコードパラメータ、webhook URL を送信。POST。エンコード成果物は R2 に 72 時間保存後自動削除;アップロードされたソースは 24 時間以内に削除されます。
10 分間メールサービス
「BinaryPHP は最初無料版でテストし、感触が良かったので、現在 Pro でサイト全体を PHPMailer まで含めてコンパイルしています。本当に強力です!速度の遅さも全く感じません。」