mac os 内核调试

一 需求和目的:

逆向的时候出现内核方法, 想要更进一步调试, 因为ios 的内核调试比较困难
所以找了折中的方案,调试macos 内核

二: 调试准备

1: macos 主机上安装虚拟机 VMware funsion, 自己google安装步骤
2: 下载镜像
  目前我能找到的镜像都是dmg, 而且都是存放百度网盘的, 下载速度慢的可以, 限速限的真是够可以的,【我没时间,如果哪个热心的红领巾把它给逆了,记得传一份给我】没有办法只有自己制作iso 镜像, 可以看下一篇文章macos系统镜像iso 的制作, 注意虚拟机和主机系统应该一致,否者会出现各种恶心问题, 比如: 调试能断下来,按continue 后 ,但是无法进入桌面
3: 下载KDK (内核调试工具): 下载地址: https://developer.apple.com/download/more/
  一定要根据系统版本来确定KDK 的版本,使用命令行: sw_vers | grep BuildVersion 来查看系统编译版本, 或者使用界面查看


5: 接下来关闭SIP[系统正当性保护模式]
 它禁止让软件以root的身份在mac 上运行 ,这是osx 10.11 系统以后才有的机制
关闭SIP: 首先要进入恢复模式, 很多资料说系统重启, 按住Command +R 进入恢复模式, 尝试过, 根本进不去, 我怀疑Command+R 对虚拟机是无效的, 在虚拟机软件上找到了这个

启动到固件: 会进入到下面的界面: 上下键移动到enter setup

然后选中Boot from a file 继续下一步:

然后选中Recovery HD 继续下一步:

然后选中com.apple.recovery.boot 继续下一步!!

选中boot efi:继续, 随后会进入到苹果启动界面,最后进入恢复模式, 然后来到下面的界面, 选中实用工具

然后打开终端, 输入csrutil disable, 会提示你成功关闭
重启后, 进入到系统后, 终端输入csrutil status ,查看SIP 是否关闭,如下图:

6: 虚拟机中替换成调试内核
替换内核: KDK是安装在/Library/Developer/目录下, 注意: 一定是从根目录下开始查找这个Library,否则找不到, 将目录下的kernel.development 拷贝到/System/Library/Kernels/中
即终端中执行命令:

 sudo cp /Library/Developer/KDKs/KDK_10.12.6_16G29.kdk/System/Library/Kernels/kernel.development /System/Library/Kernels/

7: 然后输入命令设置boot-args ,使用nvram 将虚拟机设置成调试模式:

 sudo nvram boot-args="debug=0x141 kext-dev-mode=1 kcsuffix=development pmuflags=1 -v"
1>>boot-args:系统的启动参
2>>debug=0×141,表示系统可以进行远程链接调试
3>>kext-dev-mode=1允许加载未签名kext
4>>kcsuffix=development 允许我们启动系统,通过development,与之前我们copy到/Systems/Library/Kernel下的kernel.development对应,如果我们之前拷贝的是kernel.debug,那么这里填kcsuffic=debug
5>>pmuflags=1关闭定时器
6>>-v显示内核加载信息.

8: 在清除kext缓存 sudo kextcache -invalidate / 目的是让虚拟机系统的kext cache无效,使用新的内核调试.

9: 重启虚拟机即可, sudo reboot

10: 重启之后 , 系统会来到下面的界面, 这里就是等待外部主机进行调试

11: 需要源码调试的话: 现在虚拟机中查询xnu 的版本命令uanme -v ,这里我的版本为: xnu-3789.70.16~2
源码地址: https://opensource.apple.com/tarballs/xnu/
找到对应的版本源码: 下载后, 放入到主机中/Library/Cache/com.apple.xbs/xnu/中,如果没有这个目录自己创建

12: 外部使用命令行:输入kdp-remote 虚拟机ip

注意事项:
1>上述的内核调试是有问题的:
一旦内核启动并且调试器继续运行,内核就不能再从调试器中停止。所以我们需要重新设置:

$sudo nvram boot-args="debug=0x144 kext-dev-mode=1 kcsuffix=development pmuflags=1 -v"

之后如果想再运行时断下,就在虚拟机中按组合键就可以重新调试

Command-Option-Control-Shift-Escape

原因: 0x141: DB_DBG_POS_CORE && DB_ARP && DB_HALT , 0x144:DB_DBG_POS_CORE && DB_ARP && DB_NMI [即可以运行是中断]

2> 连上后, 出现Waiting for link to become available 的情况很多, 就是一直在等待,原因: 我安装VMware Tools 必须推出了OS Base System,进而到值会出现上述问题

解决方案: 可以重启一下CD/DVD, 当然看到要重新安装系统,则可以退出就行
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,372评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,368评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,415评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,157评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,171评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,125评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,028评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,887评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,310评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,533评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,690评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,411评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,004评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,812评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,693评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,577评论 2 353