Liunx下对php内核的调试-全球今日报
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调试。

标签:

x 广告
城市安全系列科普 | 防患于未“燃” 方能和“气”生财

​时值安全生产月,又逢端午佳节。燃气作为重要的能源,是餐饮行业普遍

世界快看点丨中国女排遭遇升级版挑战

本报讯(记者谢晨)2023年世界女排联赛第三周分站赛本月27日打响,中

天天快播:96GB内存仅需2699元:内存价格不升反降

近期,尽管有关三星等厂商内存涨价的消息传出,但实际上,在618购物节

谷歌或将其Pixel手机部分生产转移到印度

知情人士近日向媒体透露,谷歌已开始与印度代工厂商进行早期沟通,以将

国泰航空客机起飞滑行时爆胎,乘客搭逃生梯紧急撤离,11人受伤

位于赤鱲角的香港国际机场发生罕见“爆胎”事故,导致国泰航空一架飞机

环球滚动:试车日志 | 东风本田UR-V:家用还得大五座!

在SUV界有一个争论已久的话题,就是5座SUV和7座SUV到底应该怎么选。每

热血沸腾的战歌有哪些_经典的战歌都有哪些|世界报资讯

1、七剑战歌RotSheismySinIwantMyTearsBack亡灵序曲BeyondTheGa

如何学好英语的方法和建议高中(如何学好英语的方法) 环球最资讯

1、我对学好初中英语建议--请耐心读完初中是很关键的时期,初中英语的

莫斯科多家博物馆和购物中心收到“炸弹”报告|世界看点

​据央视新闻消息,当地时间24日,塔斯社援引俄罗斯紧急情况部门消息报

房屋质量赔偿中开发商是第一责任人

房屋质量赔偿中开发商是第一责任人在房地产行业,有关房屋质量责任的问

x 广告

Copyright ©  2015-2023 亚洲都市网版权所有  备案号:京ICP备2021034106号-51   联系邮箱:5 516 538 @qq.com