-
-
MacOS内核调试环境搭建
-
发表于:
2021-5-29 13:22
22768
-
MacOS内核调试环境搭建
虚拟机:Vmware fusion 12+
Mac:Big Sur 11.4
vm-Mac:macOS 10.12.3
前期准备
MacOS系统镜像最全集合
在这里下载对应的虚拟机用的.dmg镜像,我下载的是 macOS Sierra 10.12.3 (16D32).dmg
在More Downloads for Apple Developers下载.dmg镜像的KDK:macOS10.12.3KDK.dmg
我当前的macOS版本是:11.4 (20F71)
下载好dmg镜像后不能直接拉到vmware fusion建立虚拟机,需要按照:
制作macOS 10.12 ISO安装文件
这篇文章制作对应的.iso文件,然后才能被vmware识别。
虚拟机中的操作
1.成功进入系统后,首先重启,关闭sip。
2.在虚拟机中安装对应版本的KDK。
3.拷贝kernel.development
4.设置boot-args启动参数
网上给出的是:
1 | sudo nvram boot - args = "debug=0x144 kext-dev-mode=1 kcsuffix=development pmuflags=1 -v"
|
参数含义可以看:https://www.cnet.com/news/boot-argument-options-in-os-x/
但是这个实际上我试了现在是(2021年5月)调不起来的。
你需要阅读对应版本KDK中的readme来确定真正正确的参数。
1 | / Library / Developer / KDKs / KDK_10. 12.3_16D32 .kdk / ReadMe.html
|
我的(默认)参数是:
1 | sudo nvram boot - args = "debug=0x146"
|
你可以根据你的需要设置kcsuffix
等。总之在readme里写的非常清楚。
默认使用的应该是en0网卡。
5.清除kext缓存
1 | sudo kextcache - invalidate /
|
6.下载源码
然后去 https://opensource.apple.com/release/macos-10123.html下载源码。
放入宿主机的:
1 2 | ScUpax0ss - MBP:com.apple.xbs scupax0s$ pwd
/ Library / Caches / com.apple.xbs
|
目录下。
7.查看虚拟机网络信息。
8.reboot虚拟机,正常的话会显示在等待debugger连接
宿主机中的操作
1.关闭宿主机的SIP。安装lldb。
2.在宿主机中安装与被调试虚拟机一样的KDK。
3.lldb连接
1 | lldb / Library / Developer / KDKs / <KDK \Version> / System / Library / Kernels / kernel
|
1 | kdp - remote {name_or_ip_address}
|
最终效果:
ref
MacOS内核调试环境搭建
mac os 内核调试
Debug macOS Kernel
OSX内核调试
macOS内核调试
https://xitongtiankong.com/archives/category/macos/vm-macos
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!