歡迎來到 黑吧安全網 聚焦網絡安全前沿資訊,精華內容,交流技術心得!

macOS內核調試介紹

來源:本站整理 作者:佚名 時間:2018-12-21 TAG: 我要投稿

對于技術大咖來說,調試內核是一件非常有趣且具有挑戰的事情,除非調試過程中發生嚴重的異常,否則在一般情況下,他們是不會輕易放棄的。不過,技術開發商也知道這一點,他們也在想法設法讓內核調試變得越來越難。比如蘋果公司就已經采取了一些措施,讓macOS的內核調試變得越來越難,首先,將有關debug引導參數的文檔信息隱藏在lock和key下,然后將內核調試工具包轉移到Developer Account-only Downloads部分。雖然目前互聯網上有很多關于在macOS上調試內核的文章,但其中很多都已經不實用了,比如有的文章會告訴調試人員,通過設置的NVRAM啟動參數,但這個方法已經不再有效。甚至還有的文章停留在 “現在調試人員應該設置一個有效的調試會話”這樣的層面!在這篇文章中,我盡我所能為大家提供最準確和最新的調試信息,包括正確的調試命令,正確的boot-args參數,當然還有具體的調試示例。
開始在macOS上進行內核調試
調試時,要做的第一件事就是進行調試環境的設置和對測試設備的配置,調試人員需要有一個能進行調試的內核對象(在本文中,我使用的是iMac 2011作為調試器)和一個用于調試的設備(本文使用的是MacBook Pro 2009)。雖然調試人員可以使用我在以下討論的各種方式將兩者連接起來,但在本文的示例中,最好的方法(也是最可靠的)似乎是通過兩者之間的火線接口(firewire)(這是因為我的兩臺設備都有firewire端口)而不是USB-C。
硬件部分設置好以后,我們還需要運行一些軟件。理論上調試人員可以調試RELEASE內核,但調試人員不是技術大咖,只是一個初學者時,調試Development內核就會輕松得多。默認情況下,macOS里會自帶一個位于/System/Library/ kernel /kernel中的RELEASE融合內核,其中kernel是Mach-O 64-bit executable x86_64。所以,我們可以通過導航到Apple Developer門戶并下載內核調試工具包,來獲得macOS版本的Development內核。令人驚訝的是,蘋果公司只是簡單將該套件置于正常的、免費的Apple開發者賬戶( Apple Developer Account)的lock中,按著我原來的想法,我還以為蘋果公司是將其置于付費的Apple開發者賬戶下載之中。
無論如何,一旦調試人員進入到Apple Developer Portal下載部分,調試人員就將看到如下內容。

這個過程非常的重要,這是因為調試人員會在以上的這個列表中,找到適合于他們的特定macOS版本的內核調試工具包,下載后,里面包含調試人員將在調試中啟動的內核,如果內核與調試人員的macOS版本不匹配,它將無法啟動,甚至對對調試人員的文件、計算機等造成損害。
為macOS版本找到合適的內核調試工具包(Kernel Debug Kit)
要找到正確的內核調試工具包,調試人員必須知道他們的macOS版本和實際的內部版本號。調試人員可以很容易的看到你正在運行的macOS版本,只要打開蘋果的圖標,按下“關于這臺Mac”,然后在窗口中閱讀出現的版本信息,例如“10.13.6版本”。
對于實際的內部版本號,調試人員可以單擊“關于這個Mac”窗口中的“版本”標簽,也可以運行終端命令sw_vers | grep BuildVersion。在本文的示例中,運行sw_vers | grep BuildVersion命令會輸出 “BuildVersion: 17G65”。
Last login: Sun Dec  2 03:58:16 on ttys000
Isabella:~ geosn0w$ sw_vers | grep BuildVersion
BuildVersion:    17G65
Isabella:~ geosn0w$
所以,就本文而言,我正在運行的macOS High Sierra(10.13.6)的版本號為17G65。查看剛剛下載的工具包,我可以立即找到和我的版本適應的工具,這樣我就可以下載包含安裝文件的.DMG文件,文件非常少。

準備調試器以供調試器調試
在調試器(即要調試其內核的設備)上下載調試工具包后,雙擊安裝DMG文件。在DMG文件中,調試人員將找到一個名為KernelDebugKit.pkg的文件,雙擊它并按照安裝向導進行操作。安裝完畢,會出現一個詢問調試人員macOS登錄密碼的界面。你可以不理會這個詢問,但請不要將此安裝程序刪掉,調試人員以后還會需要它。
安裝完成后的界面看起來如下:

安裝完成后,調試人員會被導航到/Library/Developer/KDKs。在那里,調試人員將獲得一個名為KDK_YOUR_VERSION_BUILDNUMBER.kdk的文件夾。在本文的示例中,該文件夾名為KDK_10.13.6_17G65.kdk。打開文件夾,調試人員會在其中找到另一個名為“System”的文件夾。導航到文件夾后,先進入“Library”,然后進入“Kernels”。在該文件夾中,調試人員將找到一些內核二進制文件,一些Xcode調試符號文件(.dSYM)等。一般情況下,調試人員對名為kernel.development的文件感興趣。
將kernel.development復制并粘貼到在RELEASE內核二進制文件中運行的/ System / Library / Kernels /中。此時,調試人員的macOS上應該安裝應該有兩個內核,一個是RELEASE內核,另一個是DEVELOPMENT內核。
禁用調試器上的SIP
為了正確調試,調試人員可能需要在要調試其內核的計算機上禁用SIP(系統完整性保護)。為此,調試人員需在恢復模式下重新啟動計算機。要做到這一點,必須重新啟動設備,當調試人員看到啟動界面打開時,按CMD + R,等待幾秒鐘,使啟動進入恢復模式用戶界面,然后點擊“Terminal”繼續。
在恢復終端中,寫入csrutil disable,然后重新啟動計算機,此時只需正常啟動即可。
設置正確的NVRAM boot-args
由于蘋果公司一直在更新boot-args,因此調試人員在互聯網上找到的設置參數可能已經沒有用了。以下boot-args已經過測試,確定可以在2018年的macOS High Sierra運行。

[1] [2] [3] [4] [5] [6] [7]  下一頁

【聲明】:黑吧安全網(http://www.pcpbjo.tw)登載此文出于傳遞更多信息之目的,并不代表本站贊同其觀點和對其真實性負責,僅適于網絡安全技術愛好者學習研究使用,學習中請遵循國家相關法律法規。如有問題請聯系我們,聯系郵箱[email protected],我們會在最短的時間內進行處理。
  • 最新更新
    • 相關閱讀
      • 本類熱門
        • 最近下載
        云南快乐十分前三电视