Security.framework
導出函數如SecCodeCheckValidityWithErrors()
ref,src用於驗證代碼簽名對證書存儲的正確性。macOS內核如何驗證Security.framework的完整性?
然而,誰檢查督察? Security.framework也被簽名。內核如何在不加載Security.framework的情況下驗證它的簽名以便訪問這些函數?這並不意味着僅僅用自定義實現來代替Security.framework就可以有效地關閉所有的代碼簽名保護。
如果內核Security.framework的靜態版本編譯的,那麼什麼是有它作爲一個單獨的框架呢?如果不這樣做,是否只是盲目地相信這個特定的框架未被篡改?
背景:我最近更換了我的Macbook上的內置鍵盤,它使用錯誤的USB PID宣佈自己,所以它被認爲是JIS而不是ANSI。它可以通過更改AppleUSBTCKeyboard.kext
的Info.plist
中的單行來修復,但這會使簽名無效。使用所有相關的OID創建自己的CA是不夠的,因爲kext簽名檢查被硬編碼爲只接受基於Apple的證書。解決這個問題的唯一合法方式是支付蘋果100美元/年的費用,主要是爲了使用我自己的電腦。這就是爲什麼我想要使anchor apple
不僅要與Apple CA頒發的認證相匹配,而且還要求任何可信CA(包括用戶提供的認證)能夠公開發布補丁儘可能非侵入性,現在我正在調查怎麼做。