保護PHP就是保護智慧財產權之類的,包括一些重要的介面等等。
目前常用的方案:
對於PHP這類的動態語言的保護,感覺跟前面總結的js保護上差不多,只不過是:(推薦學習:PHP程式設計從入門到精通)
加密;(強度最弱,沒辦法,這種動態解釋語言的特性導致)動態調試或hook來解決,當然瞪眼髮也可以。
混淆;(就是一些局部的混淆,包括變數和程式碼中字串的修改,強一點的會進行邏輯混淆);透過開源的php ast來進行反混淆處理。
虛擬機保護,老生常談的問題,至於虛擬機的加強看跟本地層怎麼很好的結合,以及Handler怎麼更好的設計;比如魔術方塊,逆向嘛,52有個大佬Ganlv研究的很透徹,可以去拜讀;
還有就是引入編譯,編譯為字節碼文件,進行解釋執行,字節碼跟解釋之間有著對應關係,這時候就可以進行修改映射規則的修改;比如Zend Guard
目前Swoole Compiler強度是最強的,同時性能影響還不大,十分好奇,對這個擴展加密比較感興趣,當然我不會分析,一沒有樣本,二沒有時間。
我們知道像PHP這個動態語言一定是運行在一個解釋器上。
Zend bytecode解釋器,這裡可能做的是將Zend bytecode to LLVM ir,然後藉助於llvm中很多很好的優化pass進行優化處理,同時也可以混淆處理。
Swoole Compiler是把php編譯為字節碼或更低層級的文件,然後提供客戶一個擴充工具來解釋;對於Swoole Compiler來說可能對Zend虛擬機中的解釋部分魔改的東西比較多,再加上其他的一些安全措施,可能帶來的效果會比較強大,估計現在後多已有的破解套路都會失效,同時本身Swoole 就是傳說中PHP 中的Node.js,肯定在性能做了好大的優化,所以彌補了虛擬化保護中效能損失
以上是核心php程式碼如何保護的詳細內容。更多資訊請關注PHP中文網其他相關文章!