PHP代碼混淆與加密——php screw plus
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上有完整的說明,就不一一列舉了, 大家點擊傳送門吧 :)