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 のバイナリ内容)

# ファイル名・拡張子は変わらず、元ファイルに上書き OK。呼び出し側は変更不要。
# ローダーは 5-byte の "BPHP2" マジックヘッダで識別、拡張子は無関係。
# マスターキーは弊社サーバーに留まり、お客様には暗号化済み成果物のみが渡ります。

PHP にはコンパイルがない。
プログラムを売る側には大問題。

顧客があなたの競合になる

顧客があなたの .zip をダウンロードした瞬間、書いたすべての PHP がコピー、改変、再販可能な状態に。

ライセンスキーは止められない

ソースコードがそのまま見えるなら、ライセンスチェックは数分で削除できます。コードレベルの保護がない限り、ライセンスはスイッチに過ぎず、壁にはなりません。

あなたの努力が他人のディスクに散らばる

顧客がダウンロードした瞬間、知的財産は共有ホスト・VPS・CI マシンに散乱——あなたは見ることも管理することもできず、tar -xzf 一行で全部抜き取られます。

仕組み

1

アップロード

.php ファイル、またはプラグイン全体の .zip をオンラインエンコーダーにドラッグし、ドメイン・MAC・有効期限を設定するだけ。マスターキーは弊社サーバー側に留まります——お客様が鍵を保管する必要はありません。

2

配布

暗号化済みファイルをダウンロード。各ファイルに独立した 16-byte salt と HKDF-SHA256 派生鍵が付属。1 byte でも改ざんされれば GCM 検証が失敗し、実行を拒否します。

3

ロード

顧客は php.iniextension=binaryphp.so の 1 行を追加するだけ。ローダーが PHP のコンパイル経路に挿入され、メモリ上で復号、ライセンス検証(ドメイン SERVER_NAME / HTTP_HOST または CLI の MAC を確認)し、最後に平文を Zend Engine に直接渡します。

標準機能

🔐 AES-256-GCM

NIST 標準の認証付き暗号化。1 byte でも改ざんされると GCM tag 検証で失敗し、実行を拒否します。

🧂 ファイルごとの独立鍵

各暗号化ファイルに独立した 16-byte salt が付き、HKDF-SHA256 でファイル専用の鍵を派生。各ファイルは独立して密閉され、互いに影響しません。

🛡️ 重要関数は独自 VM で実行

#[binaryphp\Protected] をマークした関数は弊社独自のバイトコードにコンパイルされます——PHP でも Zend opcode でもありません。実行時はローダーが直接解釈し、アルゴリズムが顧客のディスク上にソース形式で残ることはありません。

🌐 マルチドメインライセンス

1 つのライセンスに複数のホスト名やワイルドカード(*.example.com)を列挙可能。いずれかにマッチで通過。

🔌 MAC アドレスバインド

CLI ツールや cron job など HTTP がない環境では、ライセンスを顧客マシンの MAC(/sys/class/net から取得)に直接バインドします。

⏳ 有効期限

期限付きビルドの発行(試用、サブスク、リリースサイクル)に対応。ローダーがシステム時刻とファイルに埋め込まれた timestamp を照合します。

⚙️ 標準 PHP 拡張

php.iniextension= でロード。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 度の復号もキャッシュで償却されます。

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 のスタック操作を 1 op に統合する手法です。

VM の言語カバレッジ: オブジェクト指向(クラス、extendsabstractinterfacetrait + usestatic、クラス定数、$thisparent::self::、マジックメソッド __construct / __get / __set / __call); クロージャ function () use (…) と アロー関数 fn () => exprtry / catch / finally / throwmatch=== / !==???:<=>instanceof; 遅延 / コルーチンジェネレータ(yield は frame snapshot & resume — 無限ジェネレータも使用可、消費された値だけが計算される); for / while / foreach / switch / break / continue 完全対応; スプレッド ...$args; 参照 &$x(関数引数、array_push / sort 等の組み込み関数も対応); global;heredoc / nowdoc; 約 50 個の組み込み関数(strlencounttrimexplodeimplodesprintfmd5sha1base64_encode/decodearray_* など); #[Protected] はクラスメソッドにも付与可、$this->prop の読み書きは PHP と VM 間で自動同期;cranelift AOT JIT が整数ホットループを最適化。

選び方:パッケージ全体の出荷には .bphp(binaryphp-rs)でOK—— ネイティブ PHP との速度差は計測不能なレベル。#[Protected](binaryphp-vm)は 最も機微な関数 — ライセンス検証、鍵派生、改ざん防止ロジック — 専用に。 約 2.5 倍の実行コストを払う代わりに「マスターキーが流出しても、コアロジックは見えない」を獲得。 OPcache 有効時、保護をかけていないパスはネイティブ PHP と完全に同じ速度です。

プランと料金

Stripe で月額または年額、年額は 20% オフ

Free

$0永久無料
  • Google サインインで利用可
  • 1 ファイル 1 MB 上限 — .php または .zip
  • 完全一致のドメイン 1 件(ワイルドカード不可)+ MAC 1 件
  • 暗号強度は有料版とまったく同じ
  • 送信レート制限あり
サインインして開始
ISV 向け

Ultra

$10/ 月 · $96 / 年(20% オフ)
  • Pro の全機能を含む
  • 1 ファイル 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 の解読は単に「ファイルを復号する」ことに留まりません。攻撃者は通常さらに:

  • ローダーをリバースエンジニアリング
  • 実行時ロジックを分析
  • VM バイトコードを復元
  • 難読化されたプログラムフローを再構築

仮に成功しても、得られるのは多くの場合ソースコードではなく:

  • 変数名は失われ
  • コメントなし
  • 制御フロー混乱
  • 保守困難な中間表現

さらに BinaryPHP は継続的に更新します:

  • ローダー
  • VM 命令セット
  • 難読化レイヤ
  • Anti-debug / Anti-tamper

旧バージョンの解読ツールは速やかに無効化されます。

これが BinaryPHP の核心理念です:

解読を「不可能」にするのではなく、「割に合わない」ものにする。

Web と CLI、どちらのライセンス方式を使うべき?

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 行追加するだけ)、ホスティング業者にプリインストールを依頼可能。

BinaryPHP はどんな保護層を提供しますか?

ローダーは独立した 3 層の防御を内蔵:

  • AES-256-GCM 認証付き暗号化 + HKDF-SHA256 ファイル毎の派生鍵。各ファイルは独立 salt と鍵を持ち——1 つを破られても他のファイルに影響しません。
  • 独自バイトコード VM#[binaryphp\Protected] をマークした関数専用。これらの関数は弊社独自のバイトコードにコンパイルされ(PHP でも Zend opcode でもない)、実行時にローダーが直接解釈。顧客のディスクには平文の PHP は一切現れません。
  • ライセンス情報は暗号文に封入:ドメイン / MAC / 有効期限。1 箇所でも改変すれば GCM tag 検証で失敗、実行を拒否します。

最も機微なアルゴリズムはサーバー API 側で実行することを推奨。それ以外は BinaryPHP が多層防御で守るため、プログラム全体を書き直す必要はありません。

私のフレームワーク / autoloader と互換ですか?

互換です。BinaryPHP が介入するのは PHP のコンパイル経路なので、include / require は通常通り動作——Composer autoload、フレームワーク router、プラグイン機構もすべて問題なし。

OPcache と互換ですか?

互換です。OPcache は弊社の復号・コンパイル後にコンパイル結果のキャッシュを引き継ぎ、各失効サイクルにつき 1 度しか復号しません。

ファイルフォーマットはどんな形ですか?

公開かつ安定した仕様:52-byte ヘッダ("BPHP2" magic + バージョン + 16-byte salt + 12-byte IV + 16-byte GCM tag)の後ろに暗号文。

支払い方法は?

課金はすべて Stripe、選べるのは:

  • 月額サブスクリプション — Pro $5/月、Ultra $10/月、いつでもキャンセル可。
  • 年額サブスクリプション — 同じプランの年額版で自動的に 20% オフ(Pro $48/年、Ultra $96/年)。

サブスクリプションには 30 日間返金保証付き。Stripe は主要クレジットカードと多くの地域別決済方式に対応。

悪意ある PHP のアップロードでシステムが落ちることは?

アーキテクチャ上ありません。弊社はアップロードされた PHP を実行しません。tokenize(構文分割)と暗号化のみ。エンコーダーはファイルに token_get_all()(PHP の字句解析器、実行器ではない)を走らせ、HTML と PHP ブロックを分け、AES で各 PHP ブロックを暗号化してファイル出力。プロセス全体で evalinclude、shell コマンド呼び出しは一切なし。

zip アップロードはさらに 4 重の防衛線(解凍前に検証):

  • パストラバーサル攻撃を遮断(../、絶対パス、ドライブレター)
  • zip 爆弾を遮断(累積展開 > 200 MB または圧縮比 > 100 倍)
  • エントリ過多を遮断(> 2,000 ファイル、または .php > 1,000)
  • ディレクトリ深すぎを遮断(> 16 階層)

各エンコードジョブは独立した一時ディレクトリで実行、レスポンス送信後即座にクリア。どんな悪意あるコードを上げてもらっても結構——弊社は暗号化して返すだけです。

API プランの仕組みは?

暗号化 PHP プラグインを再販する ISV / SaaS 業者向け。顧客が注文した後:

  1. あなたのサーバーが弊社 REST API に POST、顧客のドメイン / MAC、エンコードパラメータ、webhook URL を送信。
  2. 弊社が指定 URL からソースを取得(または inline 受け入れ)、エンコードして R2 にアップロード。
  3. 弊社が設定された webhook にダウンロードリンクを POST
  4. あなたがリンクを顧客に転送(メール、ダッシュボード、お好きな方法で)。

エンコード成果物は R2 に 72 時間保存後自動削除;アップロードされたソースは 24 時間以内に削除されます。

BinaryPHP で出荷中のお客様

もうソースコードを一緒に出荷しない。

Google サインインですぐ始められます — 無料版は即利用可、クレジットカード不要。