扩展
vspiders
天道酬勤~
展开
-
php Zend虚拟机的两种hook方式
前言 这节讲一下PHP 的hook的两种方式,opcode handler hook和method hook,没有然后。 handler PHP提供了内置opcode handler替换函数zend_user_opcode_handlers。 ZEND_API int zend_set_user_opcode_handler(zend_uchar opcode, user_opcode_handler_t handler) { if (opcode != ZEND_USER_OPCODE) { if原创 2020-06-08 20:12:31 · 772 阅读 · 0 评论 -
php扩展初探(三): taint解析
前言 终于可以抽点时间说下taint了。 源码解析 taint的安装就不提了,普通的扩展安装即可。 taint主要由三部分构成,污点标记、污点传播、污点沉降。 污点标记 taint在php7中的标记是在_zend_string中的内存回收u.v.flags字段中,如下: typedef union _zend_value { zend_long lval; /* long value */ double dval; /* ...原创 2020-05-28 21:08:36 · 611 阅读 · 1 评论 -
PHP 扩展编写(二)
前面我们说了一个简单的PHP扩展的编写与实现,本次实现一个具有功能的复杂扩展。 求和函数phpadd 求和函数需要接受参数,先来看下参数的写法。 参数的提示与校验是通过ZEND_BEGIN_ARG_INFO_EX、ZEND_BEGIN_ARG_INFO两个宏定义函数完成的。,其中的ZEND_ARG_INFO设置了参数是否为引用、参数标识以及是否为可选参数等,本示例中,我们接受两个参数,均...原创 2020-04-05 16:01:10 · 322 阅读 · 0 评论 -
PHP 扩展编写(一)
生命周期 说到PHP扩展,需要先简单了解下PHP的生命周期,意义在于说明这个扩展在什么时候是生效的。 在CLI模式下,PHP的执行过程主要分为5大部分,分别是模块初始化(php_module_startup)、请求初始化(php_request_startup)、执行(php_execute_script)、请求关闭(php_request_shutdown)和模块关闭(php_module_...原创 2020-04-04 22:58:24 · 227 阅读 · 0 评论