PHP 8.x · Rust loader · Web + CLI · Linux / Unix

ขายโปรแกรม PHP ของคุณ
โดยไม่ต้องส่งซอร์สโค้ดไปด้วย

BinaryPHP เข้ารหัสโค้ด PHP เชิงพาณิชย์ของคุณด้วย AES-256-GCM โดยให้กุญแจอิสระต่อแต่ละไฟล์ และผูกกับ โดเมนหรือ MAC พร้อมวันหมดอายุ — ทุกขั้นตอนของการถอดรหัส จัดการโดย Rust loader น้ำหนักเบาแบบโปร่งใส กุญแจอัปเดตทุกไตรมาส รองรับเวอร์ชันเก่าตลอดไป ต้นทุนการแฮ็กสูงกว่าค่าลิขสิทธิ์ของแท้มาก

1. เข้ารหัสออนไลน์ 2. ลูกค้าติดตั้ง 3. รันแบบเข้ารหัส
# ไปที่ binaryphp.com/encode/ อัปโหลดไฟล์และกรอกข้อมูลลิขสิทธิ์:

  โดเมน:    acmestore.com, *.acmestore.com
  หมดอายุ:  2027-12-31
  ชื่อ:     acme-pro

# นำเข้า  →  plugin.php          (ซอร์สที่คุณเขียน, ~40 KB)
# ส่งออก  →  plugin.php          (หลังเข้ารหัส, ~41 KB binary)

# ชื่อไฟล์และนามสกุลไม่เปลี่ยน — เขียนทับไฟล์เดิมได้เลย โค้ดที่เรียกใช้ไม่ต้องแก้
# loader ตรวจไฟล์จาก magic header "BPHP2" 5 byte ไม่เกี่ยวกับนามสกุลไฟล์
# กุญแจหลักอยู่ที่เซิร์ฟเวอร์เราตลอด คุณได้แค่ไฟล์ที่เข้ารหัสแล้ว

PHP ไม่มีการคอมไพล์
สำหรับคนที่ขายโปรแกรม นี่คือปัญหาใหญ่

ลูกค้าก็คือคู่แข่งของคุณ

วินาทีที่ลูกค้าโหลด .zip ของคุณไป ทุกบรรทัด PHP ที่คุณเขียนสามารถถูกคัดลอก แก้ไข หรือขายต่อได้ทันที

license key ก็กั้นไม่ได้

ซอร์สโค้ดวางอยู่ตรงนั้น แค่ไม่กี่นาทีก็ลบส่วนตรวจ license ออกได้หมด ถ้าไม่มีการป้องกันระดับโค้ด license ก็เป็นแค่สวิตช์ ไม่ใช่กำแพง

ทรัพย์สินของคุณกระจายอยู่บน harddisk คนอื่น

พอลูกค้าโหลดเสร็จ ทรัพย์สินทางปัญญาของคุณก็กระจายอยู่บน shared host, VPS, CI machine ต่าง ๆ — คุณมองไม่เห็น คุมไม่ได้ tar -xzf บรรทัดเดียวก็ดึงออกหมด

วิธีการทำงาน

1

อัปโหลด

ลากไฟล์ .php หรือ plugin .zip ไปที่ encoder ออนไลน์ ตั้งค่าโดเมน MAC วันหมดอายุก็เสร็จ กุญแจหลักอยู่ที่ฝั่งเรา — คุณไม่ต้องเก็บรักษาเอง

2

ส่งมอบ

ดาวน์โหลดไฟล์ที่เข้ารหัสแล้ว แต่ละไฟล์มี salt 16 byte อิสระและกุญแจที่ HKDF-SHA256 derive มา หากถูกแก้ไขแม้ byte เดียว GCM verification จะล้มเหลวและปฏิเสธการรัน

3

โหลด

ลูกค้าเพิ่ม extension=binaryphp.so ใน php.ini หนึ่งบรรทัด loader จะแทรกเข้าไปในขั้น compile ของ PHP ถอดรหัสในหน่วยความจำ ตรวจ license (โดเมน SERVER_NAME / HTTP_HOST หรือ MAC ของ CLI) แล้วส่ง plain code ตรงเข้า Zend Engine

ฟังก์ชันในตัว

🔐 AES-256-GCM

การเข้ารหัสแบบ authenticated มาตรฐาน NIST แก้ไฟล์แค่ byte เดียว GCM tag ก็ตรวจไม่ผ่าน ปฏิเสธการรันทันที

🧂 กุญแจอิสระต่อไฟล์

ไฟล์เข้ารหัสแต่ละไฟล์มี salt 16 byte อิสระ แล้วใช้ HKDF-SHA256 derive กุญแจเฉพาะของไฟล์นั้น แต่ละไฟล์ปิดผนึกแยกจากกัน ไม่กระทบกัน

🛡️ ฟังก์ชันแกนกลางรันใน VM ของเราเอง

ฟังก์ชันที่ติด #[binaryphp\Protected] จะถูก compile เป็น bytecode ของเราเอง — ไม่ใช่ PHP ไม่ใช่ Zend opcode รันโดย loader ตีความตรง ๆ algorithm ไม่ได้ตกอยู่บน harddisk ลูกค้าในรูปซอร์ส

🌐 license หลายโดเมน

license ใบเดียวสามารถระบุหลาย hostname หรือ wildcard (*.example.com) ตรงอันใดอันหนึ่งก็ผ่าน

🔌 ผูกกับ MAC address

เครื่องมือ CLI, cron job และ environment ที่ไม่มี HTTP: ผูก license กับ MAC ของเครื่องลูกค้าโดยตรง (อ่านจาก /sys/class/net)

⏳ วันหมดอายุ

ออกเวอร์ชันมีอายุได้ (trial, subscription, release cycle) loader จะเทียบ system clock กับ timestamp ที่ฝังในไฟล์

⚙️ PHP extension มาตรฐาน

โหลดด้วย extension= ใน php.ini รองรับ PHP-FPM, mod_php, CLI, FrankenPHP ทั้งหมด

🪶 loader น้ำหนักเบา

.so ขนาด ~2.0 MB ที่ strip แล้ว (รวม bytecode VM และ cranelift JIT) ถอดรหัสต่อไฟล์ใช้เวลาน้อยกว่า 1 ms

🔁 ไฟล์ไม่เข้ารหัสไม่ถูกกระทบ

ไฟล์ .php ทั่วไป compile ตามปกติ — loader จับเฉพาะไฟล์ที่มี BinaryPHP magic header ส่วนอื่นไม่แตะ

ประสิทธิภาพ: เข้ารหัสแทบไม่ต้องเสียอะไร

loader hook ที่ zend_compile_file แต่ละ PHP process แต่ละไฟล์ถอดรหัสครั้งเดียว หลัง compile เป็น Zend opcode ความเร็วการรัน ไม่ต่างจาก PHP ปกติ เปิด OPcache ก็ยิ่งกระจายต้นทุนการถอดรหัสครั้งเดียวนั้นออกไป

วิ่ง hot loop 1 ล้านรอบ (for + % + accumulate) · แท่งสั้นกว่า = เร็วกว่า · baseline คือ native PHP
Native PHP
88.6 ms
1.0×
binaryphp-rs
89.5 ms
1.0×
binaryphp-vm + JIT
~115 ms
1.3×
binaryphp-vm interpret
197.6 ms
2.2×
native / .bphp เข้ารหัสทั้งไฟล์ #[Protected] · cranelift JIT #[Protected] · interpret ล้วน
workload Native PHP binaryphp-rs
(.bphp · เข้ารหัสทั้งไฟล์)
binaryphp-vm
(#[Protected] · bytecode VM)
hot loop 1 ล้านรอบในฟังก์ชัน (for + % + accumulate) 88.61 ms ± 0.95 89.48 ms ± 3.08 ~115 ms (JIT) · interpret 197.56 ms
cold start — ไฟล์เล็ก (~220 B) 56.05 ms ± 1.62 56.46 ms ± 1.34 ~bphp (stub เท่านั้น ฟังก์ชันยังไม่ถูกเรียก VM ไม่เริ่ม)
cold start — ไฟล์ 10 KB (200 ฟังก์ชัน) 57.14 ms ± 1.33 57.09 ms ± 1.57 ~bphp (VM cost คิดตอนเรียก ไม่ใช่ตอนโหลด)
OPcache steady state เท่ากับ native เท่ากับ native มีค่าใช้จ่ายเพิ่มต่อการเรียก
Native ≈ binaryphp-rs (ความต่างอยู่ในช่วง error) binaryphp-vm hot loop ช้ากว่าประมาณ 1.3 เท่า (cranelift JIT optimize integer hot path แล้ว) — แลกกับการป้องกันระดับ bytecode: ต่อให้กุญแจหลักรั่ว เนื้อในฟังก์ชันก็ยังไม่เห็น

วัดเมื่อ 2026-05-05 ใช้ hyperfine แต่ละชุดข้อมูลรัน 30 ครั้ง environment: 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 build แบบ release + LTO) ต้นทุนการถอดรหัสต่อ include ประมาณเท่ากับ ขนาดไฟล์ / 1 GB/s (AES-NI hardware acceleration) บวก ~50 µs สำหรับ HKDF และตรวจ license VM execution cost แปรผันกับจำนวน bytecode instruction compiler peephole optimization ($x++, $x += k, $x = $x + e, slot-vs-slot integer compare, $x * imm, x % imm) บีบ hot loop cost จาก ~5× เหลือ ~2.5× โดยรวม stack op ของ LoadVar / StoreVar เป็น op เดียว

VM language coverage: OOP (class, extends, abstract, interface, trait + use, static, class constant, $this, parent::, self::, magic __construct / __get / __set / __call); closure function () use (…) และ arrow function fn () => expr; try / catch / finally / throw; match, === / !==, ??, ?:, <=>, instanceof; lazy / coroutine generator (yield ใช้ frame snapshot & resume — infinite generator ใช้ได้ คำนวณเฉพาะค่าที่ถูก consume จริง); for / while / foreach / switch / break / continue ครบ; spread ...$args; reference &$x (ทั้งใน function parameter และ built-in อย่าง array_push / sort); global; heredoc / nowdoc; ~50 built-in function (strlen, count, trim, explode, implode, sprintf, md5, sha1, base64_encode/decode, array_* ฯลฯ); #[Protected] ใช้กับ method ของ class ได้ $this->prop read/write sync ระหว่าง PHP กับ VM อัตโนมัติ; cranelift AOT JIT optimize integer hot loop

เลือกยังไง: ส่งทั้ง package ใช้ .bphp (binaryphp-rs) ก็พอ — ความต่างจาก native PHP วัดไม่ออกแล้ว #[Protected] (binaryphp-vm) ใช้กับฟังก์ชันที่สำคัญที่สุด — license validation, key derivation, anti-tamper — ยอมเสีย execution cost ประมาณ 2.5 เท่า แลกกับ "ต่อให้กุญแจหลักรั่ว core logic ก็ยังไม่เห็น" เปิด OPcache เส้นทางที่ไม่ป้องกันก็ เร็วเท่ากับ native PHP

แผนและราคา

ผ่าน Stripe จ่ายรายเดือนหรือรายปี รายปีลด 20% ทันที

ฟรี

$0ฟรีตลอด
  • ลงชื่อด้วย Google ใช้ได้เลย
  • ไฟล์ละ 1 MB.php หรือ .zip
  • 1 โดเมนตรงเป๊ะ (ใช้ wildcard ไม่ได้) + 1 MAC
  • ความแข็งแรงของการเข้ารหัสเหมือนแบบเสียเงินทุกประการ
  • มี rate limit การส่งงาน
ลงชื่อเข้าใช้เพื่อเริ่ม
สำหรับ ISV

Ultra

$10/ เดือน · $96 / ปี (ประหยัด 20%)
  • รวมทุกอย่างใน Pro
  • ไฟล์ละสูงสุด 300 MB (multipart upload สำหรับไฟล์ใหญ่)
  • REST API + Webhook ต่อเข้า sales flow ได้
  • ลูกค้าสั่งซื้อ → คุณเรียก API ของเรา → เราส่ง download link ไปที่ webhook → คุณส่งให้ลูกค้า
  • ระบุโดเมน / MAC / วันหมดอายุได้แต่ละครั้งที่เข้ารหัส
  • support ลำดับความสำคัญสูง
สมัครผ่าน Stripe

ฟรีและเสียเงินใช้ engine เข้ารหัสตัวเดียวกัน! AES-256-GCM ตัวเดียวกัน, bytecode VM ตัวเดียวกัน, ระดับการป้องกันเหมือนกันเป๊ะ ต่างกันแค่โควตาการใช้งาน (ขนาดไฟล์, สิทธิ์ API, อัตรา batch)

ติดตั้ง loader

ฟรี เผยแพร่ต่อได้อิสระ host ใดก็ตามที่จะรัน plugin ที่เข้ารหัสด้วย BinaryPHP ต้องติดตั้งตัวนี้ก่อน

ฝั่งลูกค้า

การติดตั้งมาตรฐาน (Debian/Ubuntu, PHP 8.2)

# 1. คัดลอก .so ไปยัง directory ของ PHP extension
$ sudo cp binaryphp.so /usr/lib/php/20220829/

# 2. เปิดใช้ extension
$ echo 'extension=binaryphp.so' | sudo tee /etc/php/8.2/mods-available/binaryphp.ini
$ sudo phpenmod binaryphp

# 3. restart PHP-FPM (หรือ SAPI ที่คุณใช้)
$ sudo systemctl restart php8.2-fpm

ตรวจสอบว่า loader เปิดใช้งานหรือยัง:

$ 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 เฉพาะ แสดงเวอร์ชัน loader, master generation, ฟอร์แมตที่รองรับ, สถานะ bytecode VM สะดวกมากสำหรับ environment ที่ไม่มี CLI (cPanel, Plesk, shared host):

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

เลือก minor version PHP ของคุณให้ตรง (.so แต่ละไฟล์ build สำหรับ ABI นั้น ๆ สลับกันไม่ได้):

รัน php -v บน server เพื่อดู version จริง macOS / aarch64 / FreeBSD ยังไม่รองรับ

นักพัฒนา plugin

ใช้ SaaS encoder

ไม่ต้องติดตั้ง CLI ไม่ต้องเก็บ master key เปิด encoder อัปโหลด ตั้งค่า license ดาวน์โหลดไฟล์ที่เข้ารหัสแล้ว แค่นั้น

  • ไฟล์ละ random salt อิสระ + AES-256-GCM
  • ข้อมูล license (โดเมน · MAC · วันหมดอายุ) ผูกในไฟล์เข้ารหัส แก้ไม่ได้
  • ชื่อไฟล์ไม่เปลี่ยน (.php.php)
  • loader ตรวจไฟล์จาก magic header ไม่เกี่ยวกับ extension
เปิด encoder

ฟรีรับ .php หรือ .zip สูงสุด 1 MB Pro สูงสุด 100 MB Ultra ผ่าน multipart สูงสุด 300 MB

คำถามที่พบบ่อย

BinaryPHP แฮ็กไม่ออกจริงไหม?

พูดตรง ๆ: ไม่มี DRM ที่รันแบบ offline ตัวไหนรับประกันได้ว่า "แฮ็กไม่ออกตลอดกาล" รวมถึง ionCube, Zend Guard, SourceGuardian ก็เคยถูกศึกษาและถูกแฮ็กมาแล้ว

เป้าหมายของ BinaryPHP จึงไม่ใช่ "ปลอดภัยสมบูรณ์" แบบในตำนาน แต่คือ:

ทำให้ต้นทุนการแฮ็กสูงกว่าค่าลิขสิทธิ์ของแท้มาก

การแฮ็ก BinaryPHP ไม่ใช่แค่ "ถอดรหัสไฟล์" เท่านั้น attacker ปกติยังต้อง:

  • reverse engineer Loader
  • วิเคราะห์ runtime logic
  • กู้ VM Bytecode
  • สร้าง program flow ที่ obfuscate แล้วขึ้นมาใหม่

ต่อให้สำเร็จ สิ่งที่ได้มักไม่ใช่ซอร์สโค้ด แต่คือ:

  • ชื่อตัวแปรหายไป
  • ไม่มี comment
  • control flow สับสน
  • intermediate representation ที่ดูแลรักษายาก

และ BinaryPHP จะอัปเดตอย่างต่อเนื่อง:

  • Loader
  • VM instruction set
  • obfuscation layer
  • Anti-debug / Anti-tamper

ทำให้เครื่องมือแฮ็กรุ่นเก่าใช้ไม่ได้อย่างรวดเร็ว

นี่คือปรัชญาแกนกลางของ BinaryPHP:

ไม่ได้ทำให้แฮ็ก "เป็นไปไม่ได้" แต่ทำให้แฮ็ก "ไม่คุ้ม"

Web กับ CLI ควรใช้ license แบบไหน?

โปรแกรมที่รันบน web server ใช้โดเมนผูก loader ตรวจ $_SERVER['SERVER_NAME'] ก่อน (ค่านี้ตั้งโดย nginx / Apache client ปลอมไม่ได้) ถ้าไม่มีค่อย fallback ไปดู HTTP_HOST เครื่องมือ CLI ใช้ MAC address ผูก กรอกทั้งสองก็ได้ ตรงอันใดอันหนึ่งก็ผ่าน

จะทำให้ช้าลงไหม?

ไม่ ถอดรหัสแค่ขั้น compile ครั้งเดียว ไฟล์ละครั้งเดียว หลัง compile ความเร็วการรันไม่ต่างจาก native PHP เปิด OPcache แล้ว ต้นทุนการถอดรหัสครั้งเดียวนั้นก็กระจายไปยัง request ถัดไปทั้งหมด

master key จะอยู่บน server ของฉันไหม?

ใช้ SaaS encoder: ไม่ master key อยู่ที่ฝั่งเราตลอด ไม่หลุดไปยัง environment ของคุณ

ต่างจากโซลูชันเข้ารหัสอื่นยังไง?

BinaryPHP เป็นเวอร์ชันใหม่ปี 2026 สร้างขึ้นใหม่หมด ใช้ cryptography สมัยใหม่ (AES-256-GCM, HKDF-SHA256) เป็นพื้นฐาน แล้วครอบ core logic ด้วย bytecode VM ของเราเองอีกชั้น tool chain ให้บริการแบบ SaaS master key อยู่บน server เรา และ file format มี public spec

shared host รันได้ไหม?

host ต้องติดตั้ง BinaryPHP loader ก่อน loader ฟรีและเผยแพร่ต่อได้ — ให้ลูกค้าติดตั้งเอง (เพิ่ม 1 บรรทัดใน php.ini) หรือขอให้ host provider ติดตั้งให้ก็ได้

BinaryPHP มีชั้นป้องกันอะไรบ้าง?

loader มีการป้องกันสามชั้นในตัว:

  • AES-256-GCM authenticated encryption + HKDF-SHA256 derive กุญแจต่อไฟล์ แต่ละไฟล์มี salt และกุญแจอิสระ — แฮ็กไฟล์เดียวไม่กระทบไฟล์อื่น
  • bytecode VM ของเราเอง เฉพาะสำหรับฟังก์ชันที่ติด #[binaryphp\Protected] ฟังก์ชันเหล่านี้จะถูก compile เป็น bytecode ของเราเอง (ไม่ใช่ PHP, ไม่ใช่ Zend opcode) รันโดย loader interpret โดยตรง บน harddisk ลูกค้าจะไม่เคยมี plain PHP เลย
  • ข้อมูล license ปิดผนึกในไฟล์เข้ารหัส: โดเมน / MAC / วันหมดอายุ แตะที่ไหนก็ตาม GCM tag ไม่ผ่าน ปฏิเสธการรัน

algorithm ที่อ่อนไหวที่สุดแนะนำให้รันบน server API ของคุณเอง ส่วนอื่น BinaryPHP ป้องกันหลายชั้นช่วย ไม่ต้องเขียนโปรแกรมใหม่ทั้งหมด

รองรับ framework / autoloader ของฉันไหม?

รองรับ BinaryPHP ดักที่ขั้น compile ของ PHP ดังนั้น include / require ทำงานปกติ — Composer autoload, framework router, plugin system ทั้งหมดไม่มีปัญหา

เข้ากันได้กับ OPcache ไหม?

เข้ากันได้ OPcache รับช่วงต่อ cache compile result หลังจากเราถอดรหัสและ compile เสร็จ แต่ละ invalidation cycle ถอดรหัสครั้งเดียว

file format หน้าตาเป็นยังไง?

มี public และ stable spec: header 52 byte ("BPHP2" magic + version + 16-byte salt + 12-byte IV + 16-byte GCM tag) ตามด้วย ciphertext

รองรับช่องทางจ่ายเงินอะไรบ้าง?

การชำระเงินทั้งหมดผ่าน Stripe เลือกได้:

  • subscription รายเดือน — Pro $5/เดือน, Ultra $10/เดือน ยกเลิกเมื่อใดก็ได้
  • subscription รายปี — แผนเดียวกันแบบรายปี อัตโนมัติ ลด 20% (Pro $48/ปี, Ultra $96/ปี)

subscription มี 30 วัน refund guarantee Stripe รับบัตรเครดิตหลักทั้งหมดและช่องทางจ่ายเงินตามภูมิภาคอีกหลายแบบ

มีคนอัปโหลด PHP อันตรายแล้วทำให้ระบบของคุณล่มได้ไหม?

ในแง่ architecture เป็นไปไม่ได้ เราไม่รัน PHP ที่คุณอัปโหลด แค่ tokenize (ตัด syntax) และเข้ารหัสเท่านั้น encoder รัน token_get_all() (lexical analyzer ของ PHP ไม่ใช่ executor) ตัด HTML กับ PHP block ออกจากกัน เข้ารหัสแต่ละ PHP block ด้วย AES และเขียนไฟล์ออกมา ตลอด process ไม่ใช้ eval, include, หรือเรียก shell command ใด ๆ

การอัปโหลด zip มี 4 ชั้นป้องกันเพิ่ม (ตรวจก่อน extract):

  • กัน path traversal (../, absolute path, drive letter)
  • กัน zip bomb (extract สะสม > 200 MB หรือ compression ratio > 100 เท่า)
  • กัน entry มากเกิน (> 2,000 ไฟล์ หรือ .php > 1,000)
  • กัน directory ลึกเกิน (> 16 ชั้น)

งานเข้ารหัสแต่ละงานรันใน temp directory แยก เคลียร์ทันทีหลังส่ง response คุณจะอัปโหลด malware แบบไหนก็ได้ — เราจะเข้ารหัสให้แล้วคืนกลับ

แผน API ทำงานยังไง?

สำหรับ ISV / SaaS ที่ขายต่อ plugin PHP เข้ารหัส หลังลูกค้าสั่งซื้อ:

  1. server ของคุณ POST มาที่ REST API ของเรา พร้อมโดเมน / MAC ของลูกค้า, parameter เข้ารหัส, webhook URL
  2. เรา fetch ซอร์สจาก URL ที่คุณให้ (หรือรับ inline) เข้ารหัสและ upload ไป R2
  3. เรา POST download link ไปที่ webhook ที่คุณตั้งไว้
  4. คุณส่ง link ต่อให้ลูกค้า (email, dashboard, ช่องทางใดก็ได้)

ผลลัพธ์การเข้ารหัสเก็บใน R2 72 ชั่วโมงแล้วลบอัตโนมัติ ซอร์สที่คุณอัปโหลดถูกลบภายใน 24 ชั่วโมง

ลูกค้าที่ใช้ BinaryPHP ส่งสินค้าอยู่

เลิกส่งซอร์สโค้ดออกไปด้วยกันได้แล้ว

ลงชื่อด้วย Google เริ่มได้เลย — เวอร์ชันฟรีใช้ได้ทันที ไม่ต้องใช้บัตรเครดิต