前言
最近研究了一下 phar 的解析流程,想知道什么样子的文件能触发 phar 反序列化,最后发现 phar 验证文件签名是从后往前取的,所以得要能控制文件末尾才行(或者关闭 phar 的签名配置),温习了一下 gdb 调试 php 的方法,顺手记录一下。
在 php.net 上面下载源码包(当然 GitHub 也可以)。
./configure && make (缺什么装什么,不用 make install)。
gdb ./sapi/cli/php:
b ext/phar/phar.c:2333 下断点
r 要调试的 php 开始调试:
2020/05/11
下载源码后,加上 prefix 然后 configure(好像不加 debug 也可以,调试时没有符号表的话就加上),make,make install,最后用 gdb 调试 bin 目录下的 php。
如果调试过程中变量和流程不太对劲,可以在 configure 那一步加上 -O0。
./configure --prefix /home/aluvion/桌面/php7.4.2 CFLAGS="-g3 -O0 -gdwarf-4"
Orz