php是一個開源的、廣受歡迎的語言,php應用常常是以代碼明文的髮式發佈,但是有時候對於發佈的代碼我們想要進行保護,需要對php代碼進行混淆與加密,讓增加破解者的逆向難度,從而達到保護自己成果的目的。

在市面上流行的加密方案非常多,比如:

Zend Guard:遺憾的是不支持PHP7

IonCube PHP Encoder:優於Zend Guar。但是收費。

Swoole Compiler:這一款工具進行了很深入的編譯優化,相關牛B。很可惜,也收費,還很貴。

PHP Screw Plus:基於擴展來加解密,採用AES256算法,還可阻止執行未經許可的php文件。性能、防破解各項指標非常均衡,更重要的是免費。

今天,我們重點介紹的就是PHP Screw Plus這一款工具。因爲名字實在有點長,以下簡稱Screw。

在開始介紹之前,假設大家對Linux操作、PHP擴展編譯已經瞭解。因爲Screw只能運行在Linux平臺上,所以我們都會在CentOS 7.5上進行操作演示。(PHP誰還跑在Windows上呢-_-)

1、下載代碼: 點擊鏈接傳送

這裏,我們將下載的zip壓縮包放在/www/setup/splot-php-screw-plus-master.zip

解壓後,我們會得到/www/setup/php-screw-plus,進入這個目錄。

2、編譯擴展(這一步是編譯擴展的套路操作,如果不清楚,可以給我私信)

phpize

./configure --with-php-config=php-config的路徑

make

make install

修改php.ini

重啓php可以看到phpinfo裏成功加載了擴展php_screw_plus

備註,因爲代碼的加密是基於密鑰的,所以在編譯之前可以修改源碼包下的php_screw_plus.h裏的CAKEY對默認密鑰進行修改,保存之後再進行編譯,如下圖:

3、編譯加密工具

執行完第2步後,把擴展編譯完成了,但是加密代碼的工作還沒有編譯出來。這時候我們發現/www/setup/php-screw-plus目錄下多了一個tools目錄。進入tools目錄執行make,可以編譯出screw,這個就是加密php的工具:

4、實驗

1) 假設站點根目錄爲/www/wwwroot/default。進入這個目錄,新建index.php,內容如下:

2) 執行以下面令,加密這個文件:

/www/setup/php-screw-plus/tools/screw  index.php

3) 加密後的代碼如下:

是不是認不出來了:)

4) 從瀏覽器訪問index.php,我們可以看到:

到這裏,我們就大功告成了。在Laravel框架下,這個擴展沒有任何問題,親測有效,所以大家放心使用吧。因爲這是一個開源工程,所以大家也可以在gitee上提交自己的push。

如果我們想對加密後的文件進行解密,只需要運行/www/setup/php-screw-plus/tools/screw index.php -d

即加密代碼多了一個-d選項,之後就可以還原出明文。注意,如果是在另外的環境下進行解密,那擴展工具的key一定要一致,否則是解密不出來的。

好了,這個工具介紹到此結束。除了這個工具,這個世界上不缺大神,php-beast也是很值得一試的。github上有完整的說明,就不一一列舉了, 大家點擊傳送門吧 :)

相關文章