diff --git a/resources/sys_patch/sys_patch_detect.py b/resources/sys_patch/sys_patch_detect.py index 02004513e..c8886d752 100644 --- a/resources/sys_patch/sys_patch_detect.py +++ b/resources/sys_patch/sys_patch_detect.py @@ -3,7 +3,7 @@ # Used when supplying data to sys_patch.py # Copyright (C) 2020-2022, Dhinak G, Mykola Grymalyuk -from resources import constants, device_probe, utilities, amfi_detect, network_handler +from resources import constants, device_probe, utilities, amfi_detect, network_handler, kdk_handler from resources.sys_patch import sys_patch_helpers from data import model_array, os_data, sip_data, sys_patch_dict, smbios_data, cpu_data @@ -337,7 +337,7 @@ class detect_root_patch: return utilities.check_kext_loaded("WhateverGreen", self.constants.detected_os) def check_kdk(self): - if sys_patch_helpers.sys_patch_helpers(self.constants).determine_kdk_present() is None: + if kdk_handler.KernelDebugKitObject(self.constants, self.constants.detected_os_build, self.constants.detected_os_version, passive=True).kdk_already_installed == "": return False return True diff --git a/resources/sys_patch/sys_patch_helpers.py b/resources/sys_patch/sys_patch_helpers.py index d2e391f25..a987172d2 100644 --- a/resources/sys_patch/sys_patch_helpers.py +++ b/resources/sys_patch/sys_patch_helpers.py @@ -11,7 +11,7 @@ import plistlib import os import logging -from resources import constants, bplist +from resources import kdk_handler, bplist class sys_patch_helpers: @@ -104,49 +104,6 @@ class sys_patch_helpers: logging.info("- Successfully installed KDK") - def determine_kdk_present(self, match_closest=False, override_build=None): - # Check if KDK is present - # If 'match_closest' is True, will provide the closest match to the reported KDK - - kdk_array = [] - - search_build = self.constants.detected_os_build - if override_build: - search_build = override_build - - if not Path("/Library/Developer/KDKs").exists(): - return None - - - for kdk_folder in Path("/Library/Developer/KDKs").iterdir(): - if not kdk_folder.name.endswith(".kdk"): - continue - - # Ensure direct match - if kdk_folder.name.endswith(f"{search_build}.kdk"): - # Verify that the KDK is valid - if (kdk_folder / Path("System/Library/Extensions/System.kext/PlugIns/Libkern.kext/Libkern")).exists(): - return kdk_folder - if match_closest is True: - # ex: KDK_13.0_22A5266r.kdk -> 22A5266r.kdk -> 22A5266r - try: - build = kdk_folder.name.split("_")[2].split(".")[0] - # Don't append if Darwin Major is different - if build.startswith(str(self.constants.detected_os)): - kdk_array.append(build) - except IndexError: - pass - - if match_closest is True: - result = os_data.os_conversion.find_largest_build(kdk_array) - logging.info(f"- Closest KDK match to {search_build}: {result}") - for kdk_folder in Path("/Library/Developer/KDKs").iterdir(): - if kdk_folder.name.endswith(f"{result}.kdk"): - # Verify that the KDK is valid - if (kdk_folder / Path("System/Library/Extensions/System.kext/PlugIns/Libkern.kext/Libkern")).exists(): - return kdk_folder - return None - def disable_window_server_caching(self): # On legacy GCN GPUs, the WindowServer cache generated creates