標籤:

如何滿足PHP源代碼加密和混淆的需求?

最近被要求把產品代碼加密,測試了幾款容易獲得的加密工具,當然對應的解密工具也一樣容易找到!

易維的那個加密工具貌似需要購買,否則存在使用時間限制,不知道有沒有了解實情的兄弟!

還有個開源的screw,加密方法是用C寫的PHP擴展,但是不清楚的是:

PHP screw加密後的代碼是否只能運行在裝有screw的Linux環境下?

還有就是有沒有好的PHP代碼混淆工具?微盾的混淆工具很杯具,我的項目代碼混淆後無法運行,懷疑是該工具對PHP5.8和OOP支持不好的緣故……


Swoole Compiler :PHP 代碼編譯加密解決方案,Swoole團隊出品。http://compiler.swoole.com/

Zend Guard 已經不維護了,連 PHP7 都不支持。其他幾個老外開發的軟體,基本上都能被破解。

Swoole Compiler 支持5.4-7.2全系列版本,優點:進行了很深入的編譯優化,以目前 PHP 反彙編領域的情況看,根本破不了。

缺點:收費的

Swoole Compiler 有兩道工序,第一步:從源碼編譯為 opcode,這一步會移除代碼中除邏輯以外的其他信息,如注釋、變數名稱、類名、常量、函數名。

第二步:opcode 加密混淆處理。這一步才是關鍵,最終生成的指令連 vld、phpdbg 這些工具都無法識別。

Swoole Compiler 實際上已經修改了 Zend VM,已經無法用 PHP 內核的知識來理解了,甚至可以說它是一個全新的 VM


PHP可以用php_strip_whitespace()刪除PHP源碼中的注釋和空格.

PHP可以用opcache_compile_file()把PHP腳本編譯成二進位的opcode.

PHP7支持配置opcache.file_cache導出opcode到文件.

PHP7中用opcache.file_cache導出腳本opcode實現源代碼保護 - linux_magnetic_storm


混淆正則寫就行了…

加密你仿照你說那個寫…


我一直都在使用 這個混淆工具 PHP混淆工具 ,效果還不錯


http://git.oschina.net/splot/php-screw-plus

https://github.com/del-xiong/screw-plus

免費開源的php加密擴展,使用aes加密,伺服器未破解的情況下99.99999%安全

運行在linux環境

有輕微性能損失,不過只有幾毫秒甚至更低,基本可以無視

這是基於screw的改進版,不建議用原版screw,加密演算法太弱有風險

也不建議用混淆工具,混淆的代碼能否被解密只取決於別人對你的代碼的興趣大小

加密後確實只能運行在linux下並且要求安裝有對應的screw擴展

雖然安裝擴展看起來是要麻煩點,但你要明白所有不需要擴展的加密都能被直接源碼破解


暫時沒用上PHP 5.8,無法復現你的問題


官方的ZendGuard幾乎是唯一選擇。


小的自己寫了個 PHP 代碼加密擴展,不影響性能,可跨平台,使用簡單。

GitHub: lihancong/tonyenc


PHP都5.8了么?!


推薦閱讀:

如何看待 swoole 作者最近修改開源協議?
Magento從架構上來說,主流的評價如何?
Apache是否優於Nginx?
為什麼shopex和ecshop都停止更新了?
什麼是php單例模式?

TAG:PHP | 加密 |