mac os 內(nèi)核調(diào)試

一 需求和目的:

逆向的時(shí)候出現(xiàn)內(nèi)核方法, 想要更進(jìn)一步調(diào)試, 因?yàn)閕os 的內(nèi)核調(diào)試比較困難
所以找了折中的方案,調(diào)試macos 內(nèi)核

二: 調(diào)試準(zhǔn)備

1: macos 主機(jī)上安裝虛擬機(jī) VMware funsion, 自己google安裝步驟
2: 下載鏡像
??目前我能找到的鏡像都是dmg, 而且都是存放百度網(wǎng)盤(pán)的, 下載速度慢的可以, 限速限的真是夠可以的,【我沒(méi)時(shí)間融欧,如果哪個(gè)熱心的紅領(lǐng)巾把它給逆了览效,記得傳一份給我】沒(méi)有辦法只有自己制作iso 鏡像, 可以看下一篇文章macos系統(tǒng)鏡像iso 的制作, 注意虛擬機(jī)和主機(jī)系統(tǒng)應(yīng)該一致,否者會(huì)出現(xiàn)各種惡心問(wèn)題, 比如: 調(diào)試能斷下來(lái),按continue 后 ,但是無(wú)法進(jìn)入桌面
3: 下載KDK (內(nèi)核調(diào)試工具): 下載地址: https://developer.apple.com/download/more/
??一定要根據(jù)系統(tǒng)版本來(lái)確定KDK 的版本,使用命令行: sw_vers | grep BuildVersion 來(lái)查看系統(tǒng)編譯版本, 或者使用界面查看


5: 接下來(lái)關(guān)閉SIP[系統(tǒng)正當(dāng)性保護(hù)模式]
?它禁止讓軟件以root的身份在mac 上運(yùn)行 ,這是osx 10.11 系統(tǒng)以后才有的機(jī)制
關(guān)閉SIP: 首先要進(jìn)入恢復(fù)模式, 很多資料說(shuō)系統(tǒng)重啟, 按住Command +R 進(jìn)入恢復(fù)模式, 嘗試過(guò), 根本進(jìn)不去, 我懷疑Command+R 對(duì)虛擬機(jī)是無(wú)效的, 在虛擬機(jī)軟件上找到了這個(gè)

啟動(dòng)到固件: 會(huì)進(jìn)入到下面的界面: 上下鍵移動(dòng)到enter setup

然后選中Boot from a file 繼續(xù)下一步:

然后選中Recovery HD 繼續(xù)下一步:

然后選中com.apple.recovery.boot 繼續(xù)下一步!!

選中boot efi:繼續(xù), 隨后會(huì)進(jìn)入到蘋(píng)果啟動(dòng)界面,最后進(jìn)入恢復(fù)模式, 然后來(lái)到下面的界面, 選中實(shí)用工具

然后打開(kāi)終端, 輸入csrutil disable, 會(huì)提示你成功關(guān)閉
重啟后, 進(jìn)入到系統(tǒng)后, 終端輸入csrutil status ,查看SIP 是否關(guān)閉,如下圖:

6: 虛擬機(jī)中替換成調(diào)試內(nèi)核
替換內(nèi)核: KDK是安裝在/Library/Developer/目錄下, 注意: 一定是從根目錄下開(kāi)始查找這個(gè)Library,否則找不到, 將目錄下的kernel.development 拷貝到/System/Library/Kernels/中
即終端中執(zhí)行命令:

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

7: 然后輸入命令設(shè)置boot-args ,使用nvram 將虛擬機(jī)設(shè)置成調(diào)試模式:

 sudo nvram boot-args="debug=0x141 kext-dev-mode=1 kcsuffix=development pmuflags=1 -v"
1>>boot-args:系統(tǒng)的啟動(dòng)參
2>>debug=0×141伸但,表示系統(tǒng)可以進(jìn)行遠(yuǎn)程鏈接調(diào)試
3>>kext-dev-mode=1允許加載未簽名kext
4>>kcsuffix=development 允許我們啟動(dòng)系統(tǒng),通過(guò)development,與之前我們copy到/Systems/Library/Kernel下的kernel.development對(duì)應(yīng),如果我們之前拷貝的是kernel.debug,那么這里填kcsuffic=debug
5>>pmuflags=1關(guān)閉定時(shí)器
6>>-v顯示內(nèi)核加載信息.

8: 在清除kext緩存 sudo kextcache -invalidate / 目的是讓虛擬機(jī)系統(tǒng)的kext cache無(wú)效启搂,使用新的內(nèi)核調(diào)試.

9: 重啟虛擬機(jī)即可, sudo reboot

10: 重啟之后 , 系統(tǒng)會(huì)來(lái)到下面的界面, 這里就是等待外部主機(jī)進(jìn)行調(diào)試

11: 需要源碼調(diào)試的話: 現(xiàn)在虛擬機(jī)中查詢(xún)xnu 的版本命令uanme -v ,這里我的版本為: xnu-3789.70.16~2
源碼地址: https://opensource.apple.com/tarballs/xnu/
找到對(duì)應(yīng)的版本源碼: 下載后, 放入到主機(jī)中/Library/Cache/com.apple.xbs/xnu/中,如果沒(méi)有這個(gè)目錄自己創(chuàng)建

12: 外部使用命令行:輸入kdp-remote 虛擬機(jī)ip

注意事項(xiàng):
1>上述的內(nèi)核調(diào)試是有問(wèn)題的:
一旦內(nèi)核啟動(dòng)并且調(diào)試器繼續(xù)運(yùn)行,內(nèi)核就不能再?gòu)恼{(diào)試器中停止刘陶。所以我們需要重新設(shè)置:

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

之后如果想再運(yùn)行時(shí)斷下胳赌,就在虛擬機(jī)中按組合鍵就可以重新調(diào)試

Command-Option-Control-Shift-Escape

原因: 0x141: DB_DBG_POS_CORE && DB_ARP && DB_HALT , 0x144:DB_DBG_POS_CORE && DB_ARP && DB_NMI [即可以運(yùn)行是中斷]

2> 連上后, 出現(xiàn)Waiting for link to become available 的情況很多, 就是一直在等待,原因: 我安裝VMware Tools 必須推出了OS Base System,進(jìn)而到值會(huì)出現(xiàn)上述問(wèn)題

解決方案: 可以重啟一下CD/DVD, 當(dāng)然看到要重新安裝系統(tǒng),則可以退出就行
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市匙隔,隨后出現(xiàn)的幾起案子疑苫,更是在濱河造成了極大的恐慌,老刑警劉巖纷责,帶你破解...
    沈念sama閱讀 211,948評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件捍掺,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡再膳,警方通過(guò)查閱死者的電腦和手機(jī)挺勿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)喂柒,“玉大人不瓶,你說(shuō)我怎么就攤上這事≡纸埽” “怎么了蚊丐?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,490評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)艳吠。 經(jīng)常有香客問(wèn)我麦备,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,521評(píng)論 1 284
  • 正文 為了忘掉前任凛篙,我火速辦了婚禮弄屡,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘鞋诗。我一直安慰自己,他們只是感情好迈嘹,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布削彬。 她就那樣靜靜地躺著,像睡著了一般秀仲。 火紅的嫁衣襯著肌膚如雪融痛。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,842評(píng)論 1 290
  • 那天神僵,我揣著相機(jī)與錄音雁刷,去河邊找鬼。 笑死保礼,一個(gè)胖子當(dāng)著我的面吹牛沛励,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播炮障,決...
    沈念sama閱讀 38,997評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼目派,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了胁赢?” 一聲冷哼從身側(cè)響起企蹭,我...
    開(kāi)封第一講書(shū)人閱讀 37,741評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎智末,沒(méi)想到半個(gè)月后谅摄,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,203評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡系馆,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評(píng)論 2 327
  • 正文 我和宋清朗相戀三年送漠,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片由蘑。...
    茶點(diǎn)故事閱讀 38,673評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡螺男,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出纵穿,到底是詐尸還是另有隱情下隧,我是刑警寧澤,帶...
    沈念sama閱讀 34,339評(píng)論 4 330
  • 正文 年R本政府宣布谓媒,位于F島的核電站淆院,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜土辩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評(píng)論 3 313
  • 文/蒙蒙 一支救、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧拷淘,春花似錦各墨、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,770評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至结洼,卻和暖如春黎做,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背松忍。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,000評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工蒸殿, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人鸣峭。 一個(gè)月前我還...
    沈念sama閱讀 46,394評(píng)論 2 360
  • 正文 我出身青樓宏所,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親摊溶。 傳聞我的和親對(duì)象是個(gè)殘疾皇子楣铁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評(píng)論 2 349