如何滿足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 內核的知識來理解了,甚至可以說它是一個全新的 VMPHP可以用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單例模式?