亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

實現PHP的編譯執行分離(separating compilation and execution)

瀏覽:20日期:2024-02-17 13:43:48

剛剛在PHP群內和大家聊天,應承了大家要寫一個關于如何實現PHP源碼加密的文章,借著這會QA在冒煙的機會,就這個問題,我寫點思路。

我以前的文章介紹過,ZE(Zend engine)執行一個PHP腳本會經歷編譯->執行,只不過它每次執行都會去重新編譯PHP文件。并沒有實現編譯和執行分離。

在ZE的編譯和執行階段,有倆個重要的函數:

ZEND_API zend_op_array *(*zend_compile_file)(zend_file_handle *file_handle, int type TSRMLS_DC);

ZEND_API void (*zend_execute)(zend_op_array *op_array TSRMLS_DC);

zend_compile_file負責將要執行的腳本文件編譯成由ZE的基本指令序列構成的op codes,然后將op codes交由zend_execute執行,從而得到我們腳本的結果。

所以,我們完全可以通過修改默認的zend_complie_file和zend_execute來實現,PHP的執行和編譯分離,進一步,我們還可以再這個基礎上實現,對我們腳本的加密和解密。

我們通過一個PHP擴展模塊來實現這個功能,首先,我們需要在模塊初始化的時候:

PHP_MINIT_FUNCTION(sample){ old_compile_file = zend_compile_file//保存現場 old_execute = zend_execute; zend_compile_file = my_compile_file; //截獲 zend_execute = my_execute; return SUCCESS;}

在我們的my_compile_file中,判斷我們的文件是否是編譯過的文件,假設后綴名是*.ze。

static zend_op_array *my_compile_file(zend_file_handle *file_handle, int type TSRMLS_DC){ if(strstr(file_handle->filename, '.ze') != NULL){//是編譯過的文件。 直接返回文件內容. } zend_op_array *op_array;

op_array = old_compile_file (file_handle, type TSRMLS_CC); //調用默認的compile,截獲輸出 if(op_array){ 保存op_array; } return op_array;}

這樣,我們就實現了,對已經編譯文件的支持,和對文件編譯的支持。

然后,需要編寫我們的執行函數:

static void my_execute(zend_op_array *op_array TSRMLS_DC){ old_execute(op_array TSRMLS_DC); //簡單交由默認執行函數執行。}

也許你要問為什么要包裝以后的執行函數,呵呵,我只是為了說明,一種方式,就是可以截獲這個東東而已。有什么用?就看讀者你有什么要求能通過這個方式實現了: )。

寫到這里,你也許就明白了,如果想要對文件加密,那么就定義個加密文件類型,比如*.zec,然后在my_compile_file中,判斷文件類型,如果是加密文件,那么就執行解密,嘿嘿,簡單吧?

至于怎么加密,那就要問你自己了,你想用什么方式,但是,記住,要可逆的哦~~^_^。

標簽: PHP
主站蜘蛛池模板: 日韩极品视频 | 国产亚洲人成在线影院 | 婷婷六月丁香午夜爱爱 | 国产视频在线观看福利 | 另类二区 | 国产成人综合日韩精品婷婷九月 | 欧美伦理三级在线播放影院 | 国产成人宗合 | 亚洲欧美日韩国产一区二区精品 | 成年人黄色小视频 | 成年美女黄网站色大片免费看 | 久久亚洲精品中文字幕第一区 | 国产午夜视频在线 | 国产精品小黄鸭一区二区三区 | 中国一级特黄的片子免费 | 国产精选91热在线观看 | 在线高清一级欧美精品 | 香蕉黄视频 | 久久综合九色综合桃花 | 一本久道久久综合 | 91进入蜜桃臀在线播放 | 成年人在线免费网站 | 久久99网站| 国产区在线观看视频 | 久久久全国免费视频 | 在线亚洲欧美 | 女人精aaaa片一级毛片女女 | 性做久久久久久网站 | 国产香蕉视频在线 | 久爱视频在线观看 | 国产成人在线网址 | 黄色毛片视频在线观看 | 午夜男人视频 | 日韩中文字幕在线观看视频 | 国产午夜精品鲁丝片 | ppypp日本欧美一区二区 | a黄色一级 | 狠狠色丁婷婷综合久久 | 国产福利在线观看永久免费 | 亚洲欧美另类精品久久久 | 最新黄色在线 |