網頁

2011年8月3日

在 Windows 下使用 bcompiler 加密 PHP 程式源碼

http://windows.php.net/download/

使用 PHP 開發的 Web-based 應用系統,若要當作產品販售,又不願意公開原始碼,就必須先將原始碼編碼加密,再安裝至客戶的伺服器。這樣做通常有幾種理由:(1) 保護程式碼不被輕易複製抄襲或拷貝再製利用 (2) 商業授權方式考量 (3) 避免程式碼被任意修改以致發生問題時不易歸責。

bcompiler 的專案首頁在:
http://pecl.php.net/package/bcompiler

專案的簡介如下:
bcompiler enables you to encode your scripts in phpbytecode, enabling you to protect the source code.
bcompiler could be used in the following situations

  • 建立GTK視窗介面的PHP應用程式可執行檔(需要搭配其它套件)。to create a exe file of a PHP-GTK application (in conjunction with other software)
  • 建立封閉源碼的套件庫。to create closed source libraries
  • 提供客戶有授權時效限制的軟體。to provide clients with time expired software (prior to payment)
  • 交付封閉原始碼的應用程式。to deliver close source applications
  • 用於磁碟空間有限的嵌入式系統(搭配bzip2壓縮)。for use on embedded systems, where disk space is a priority

安裝 bcompiler 的方法有三種:
  1. 下載原始碼壓縮檔,自行完成編譯。
  2. 使用 PECL 指令安裝。
  3. 使用已編譯的 php_bcompiler.dll 動態連結檔案。

PECL 是社群貢獻的 PHP 延伸套件。
PECL is a repository for PHP Extensions, providing a directory of all known extensions and hosting facilities for downloading and development of PHP extensions.
The packaging and distribution system used by PECL is shared with its sister, PEAR.

在 Unix / Linux 系統下,使用方法 2. PECL 的安裝很容易,因為只要系統已安裝好開發編譯環境(GCC),PHP 在安裝 PEAR 套件後,就會提供 PECL 指令,所以只要一行指令就可以編譯需要的函式庫檔案。

pecl install bcompiler

但是在 Windows 系統下,使用 PECL 安裝 bcompiler 就沒這麼幸運了。不容易安裝的原因,主要是 bcompiler 套件是使用 C語言 開發,雖然可以在 Linux / Windows 等平台上編譯使用,可是 Windows 下要編譯必須先安裝古老的 Visual C++ 6.0,並且搞定 PHP 的開發編譯環境設定。

比較簡單快速的選擇,是採用已編譯好的 PHP 及延伸套件,例如 PHP For Windows 是目前仍持續維護的專案,提供針對 VC6/VC9 及 Thread Safe / Non Thread Safe 的不同版本。

在 PHP For Windows 網站可以找到一組連結,是由 pierre 提供的 Windows 版本已編譯套件:
http://downloads.php.net/pierre/

這個下載區可以找到四個 php_bcompiler 的壓縮檔,最後維護更新日期是2010年1月份,分別對應 VC6/VC9 及 NTS/TS 版本;不過實際搭配 PHP 測試後,發現這些檔案都無法正常使用。

最後測試成功的版本,是由 PHP 官方提供的 PECL-5.2.6-WIN32 壓縮檔:
http://www.php.net/get/pecl-5.2.6-Win32.zip/from/a/mirror

將壓縮檔提供的 php_bcompiler.dll 複製到 PHP 的 ext 資料夾,並且在 php.ini 添加 extensions=php_bcompiler.dll 設定後,重新啓動 Apache 就可以在 phpinfo 看到 bcompiler 版本資訊。

雖然這個版本編號是 5.2.6,但經過實際測試,可以適用 PHP 5.2.x 的後續版本(>5.2.6)。

bcompiler 提供的只是一組 PHP 函式,在 PHP 官方文件中有提供 bcompiler 函式使用說明

如果使用 bcompiler 目的只是要加密 PHP 原始碼,可以直接使用 BENCODER 這支 Script 程式,它最新版本是 v1.4,已經把 bcompiler 加密PHP程式需要的功能,製作成 command-line 工具指令,簡單地呼叫就可以操作。指令的格式如下:

bencoder [-f] [-q] [-t] -o FILE file1.php

雖然在 Windows 上也能運行 PHP,但如果是長期發展維護的專案,建議還是搭配 Linux 作為 PHP 的開發環境及伺服器,才能得到較好的社群支援。

2 則留言:

  1. bencoder [-f] [-q] [-t] -o FILE file1.php 运行不了啊

    回覆刪除
  2. bencoder [-f] [-q] [-t] -o FILE file1.php 运行不了啊;我在run中运行我的文件bender page.php

    回覆刪除