我們已經做了一個Zend擴展,我們想寫的zval的回聲應該寫出來的地址,但我們不知道如何接收它們,因爲我們已經注意到回聲「測試」之間存在差異;和$ a =「test」; echo $ a;Zend擴展,得到echo的參數?
.... Some stuff that overrides the echo opcode ....
FILE *tmpfile;
int echo_handler(ZEND_OPCODE_HANDLER_ARGS)
{
zend_op *opline = execute_data->opline;
tmpfile = fopen("/tmp/echo.test","a+");
fprintf(tmpfile,"Echo was called\n");
fclose(tmpfile);
return ZEND_USER_OPCODE_DISPATCH;
}
無論它是否是變量,我們如何獲取參數?
查看我的回答。儘管它應該起作用,但我想知道你需要做什麼?也許你正在採取錯誤的做法,或對錯誤問題採取正確的做法。 – Flavius
嗯,我們試圖在模塊中實現某種污點,我們的方法如下(對於非常簡單的污點) 1.在執行開始時,獲取$ _GET元素的zvals地址(完成) 2 。在echo上,獲取zval地址的地址以回顯並檢查它是否是_GET zvals之一。 (未完成 - 在迴音上掛鉤) 這看起來合法嗎? –
是的,它非常簡單,正如你所說的 - 我的解決方案應該可行。在我的空閒時間裏,我正在研究一些相關的內容:一個擴展,它將賦予PHP腳本靜態代碼分析功能,這對您也同樣有趣。 – Flavius