0x00 下载资源
- PHP源码
- PHP SDK(phpsdk-vs16-x86.bat)
- vscode
选择自己需要调式的版本,我这里选择的是7.3.4
源码
php-7.3.4-src.zip
调试包
php-debug-pack-7.3.4-nts-Win32-VC15-x64.zip
,主要用在vs里面调试的,可选
php sdk
sdk用于构建php
github
仓库有vs14-vs16
三个版本的sdk
,第二个是低php
版本的sdk
下载地址
对应选择vc版本查询见下文链接
查看自己电脑的环境
控制面版-》卸载
后面发现这里是需要安装Visual Studio
不然会报错Could not determine 'vc15' directory
调式环境
安装VSCode,这里需要安装c/c++扩展
0x01 源码编译
进入php-sdk-binary-tools
,直接运行对应的bat文件
切换到源码所在的目录
使用以下命令更新依赖
1 | phpsdk_deps --update --branchmaster |
然后运行
1 | buildconf.bat |
选择开启SAPI cli
、开启debug
模式、开启phar
扩展;由于cli
是单线程的,方便接下来的调试
1 | configure --disable-all --enable-cli --enable-debug --enable-phar |
当然这里需要根据自己的需求来,注意其中的依赖关系,比如libxml
依赖iconv
1 | configure --disable-all --enable-cli --enable-debug --enable-phar --with-iconv --with-libxml --with-dom |
然后运行configure
,运行后会显示一些php
的配置信息
无误后使用nmake
执行build
,期间可能会有各种警告
提示complete
完成build
之后在php
源码目录中的x64/Debug_TS
就生成了php.exe
测试
0x02 源码调试
打开php源码所在目录
可以在刚才的php.exe的同目录下创建test.php
然后选择一个c文件
然后会生成调试的配置文件.vscode/launch.json
,修改它
1 | { |
然后打开sapi\cli\php_cli.c
,在程序入口main函数打断点