天天速看:Liunx下对php内核的调试

来源: 博客园 2023-06-25 06:58:26
0x01前言

主要是对上一篇文章中php_again这道题的补充。

0x02下载php源码
cd /usr/localwget https://www.php.net/distributions/php-8.2.2.tar.gztar -zxvf php-8.2.2.tar.gz && cd php-8.2.2
0x03编译

注意带enable-debug


【资料图】

apt-get install build-essential autoconf automake libtool libsqlite3-dev pkg-config libjpeg-dev libpng-dev libxml2-dev libbz2-dev libcurl4-gnutls-dev libssl-dev libffi-dev libwebp-dev libonig-dev libzip-dev./configure --prefix=/usr/local/php --sysconfdir=/etc/php/8.2 --with-openssl --with-zlib --with-bz2 --with-curl --enable-bcmath --enable-gd --with-webp --with-jpeg --with-mhash --enable-mbstring --with-imap-ssl --with-mysqli --enable-exif --with-ffi --with-zip --enable-sockets --with-pcre-jit --enable-fpm --with-pdo-mysql --enable-pcntl --enable-debugmake && make installcd /usr/binln -s /usr/local/php/bin/php php8.2cp /usr/local/php-8.2.2/php.ini-development /usr/local/php/lib/php.ini                  cp /etc/php/8.2/php-fpm.conf.default /etc/php/8.2/php-fpm.confcp /etc/php/8.2/php-fpm.d/www.conf.default /etc/php/8.2/php-fpm.d/www.conf
0x04下载gdb工具
apt-get updateapt install gdb
0x05调试样例

调试php中 生成 system_id的两个函数(zend_startup_system_id,zend_finalize_system_id),分别在 mian.c文件的第2237行第2288

cd  /usr/local/php/bin#即php可执行文件目录

先在这两处打断点

接下来执行 run 一个php文件。

step 单步进入该函数。

n下一步

print var 打印变量

该函数运行完后,context的值是。(因为enable-debug了,所以NTS后还有一个debug,正常情况下是没有的)

跳出该函数后,输入 c进入下一个断点。

同样 step单步跳入。可以看到第二个 if语句是进去了,hooks的值为 "\x02"

接下来是个 for循环,一个都没进去,所以 context的值没有更新。最后 context的值是。

把 debug去掉放 python跑一下。

这下跑的结果是正确的。

0x06一些细节

zend_compile_filecompile_file是不一样的。让我们看看发生了什么。

watch  zend_compile_file

编译时开启 dtrace并且,环境变量中有 USE_ZEND_DTRACE时才会进入这个if 。 所以这个时候 zend_compile_file是等于 compile_file的。

在phar.c中还会改变一次。之后就会调用 zend_finalize_system_id.

0x07后记

额,源码看不懂,就跟着看了下变量信息,主要简单了解下如何使用gdb调试。

世界观速讯丨郑商所调整花生、苹果期货限仓规则
06-25
18万套!上海二手房挂牌量增速全国第一,10万中介费变1000张火锅抵用券… 环球微头条
06-25
“三悦”读书会“寻找文学的种子” 世界快看点
06-25
武汉外贸持续升温 第三艘汉亚直航船首航
06-25
高温天气小心电费“刺客” 京东家电家居以旧换送新取旧一步到位 天天滚动
06-25
环球新动态:高温黄色预警:9省区市将现35℃以上高温 内蒙古局地可达40℃
06-25
省教育招生考试院专家支招——高考志愿怎么填
06-25
我们的节日端午节 天天热点
06-25
晨枫:瓦格纳玩了一把俄罗斯轮盘赌,只是转了1080度 新消息
06-25
天天微资讯!普里戈任与白俄总统达成协议 同意停止在俄领土行动
06-25
焦点速读:四川省城镇燃气安全工作专项督导启动
06-25
今日看点:温度记丨北方热到“烫脚”,广东湿到“泡脚”……
06-25
王启蒙:黄金下周行情交易策略分析及黄金原油实时操作策略建议
06-25
痛心!南京大屠杀幸存者高恒发去世-天天报道
06-25
【见·闻】巴西制药、化妆品专业展会凸显中国市场重要性
06-25
缅怀!邓稼先诞辰99周年
06-25
每日播报!【通用设备】节能产业投资机遇分析:节能在双碳目标下的作用与机遇
06-25
天天头条:【光伏设备】光伏行业2023年下半年度策略:周行不殆,把握两条主线
06-25
作为小时工产量不达标要求义务加班,不但没有加班费,连基本工资也没有-当前时讯
06-25
大模型时代的数据标注:从劳动密集向技能密集升级
06-25