我们已经做了一个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