macOS(三)远程内核调试
参考资料
调试环境
被调试设备:Mac mini late 2014
系统版本:10.13.6(17G65)
详细版本信息获取方式如下:
Kernel Debug Kit
在Apple开发者中心,下载对应版本的内核调试套件Kernel Debug Kit
KDK包打开后是一个pkg安装文件,里面包含了大量的调试符号和一些内核驱动模块,提供了Release、Debug、Development三种版本的内核程序,后两种提供了完整的调试和开发功能,Development内核可以用于日常使用,并且具有最小的性能开销,而DEBUG内核具有更多的错误检查。而安装pkg包其实也只是将其中的文件释放到对应的目录
替换内核
在macOS中,内核的可执行文件位于/Systems/Library/Kernels下,所以我们只需要在KDK安装目录的可执行文件下找到kernel.development或kernel.debug可执行文件,复制到/Systems/Library/Kernels 即可
需要关闭SIP保护才能进行复制
1、重启 Mac,按住 Command+R 键直到 Apple logo 出现,进入 Recovery Mode2、顶部导航栏,点击 Utilities > Terminal3、在 Terminal 中输入 csrutil disable,之后回车4、重启 Mac
复制后要设置系统调试参数:
sudo nvram boot-args="debug=0x141 kext-dev-mode=1 kcsuffix=development pmuflags=1 -v"
参数说明
1、debug=0x141:启用了远程调试模式2、kext-dev-mode=1:可以用来加载未签名的kext文件(kext文件:Mac OSX的内核扩展,通常用于设备驱动程序)3、kcsuffix=development:使用kernel.development文件进行引导内核发展4、pmuflags=1:禁止看门狗定时器5、-v :内核调试的时候会有一些有用的信息
重建kextcache以使用新的kernel,重启后生效
sudo kextcache -invalidate /Volumes/<Target Volume>
sudo reboot
远程调试attch
主机上启动lldb
kdp-remote 192.168.174.129
连接成功后,被调试机上会显示
Connected to remote server
取消调试模式
被调试机重启,按住 Command+R 键直到 Apple logo 出现,进入 Recovery Mode
nvram -d boot-args
kextcache -invalidate /
reboot
0 评论:
发表评论