Allow for setting custom SIP values via TUI

Closes https://github.com/dortania/OpenCore-Legacy-Patcher/issues/516
This commit is contained in:
Mykola Grymalyuk
2021-10-17 00:13:49 -06:00
parent 69e50aeb6d
commit db617db1fd
4 changed files with 36 additions and 3 deletions

View File

@@ -1,6 +1,7 @@
# OpenCore Legacy Patcher changelog
## 0.3.1
- Allow for setting custom SIP values via TUI
## 0.3.0
- Fix Nvidia Tesla Acceleration in Monterey Beta 7+

View File

@@ -692,7 +692,12 @@ class BuildOpenCore:
print("- Setting Vault configuration")
self.config["Misc"]["Security"]["Vault"] = "Secure"
self.get_efi_binary_by_path("OpenShell.efi", "Misc", "Tools")["Enabled"] = False
if self.constants.sip_status is False:
if self.constants.custom_sip_value:
print(f"- Setting SIP value to: {self.constants.custom_sip_value}")
sip = self.constants.custom_sip_value.lstrip("0x")
# Ensure SIP is 8 characters long
self.config["NVRAM"]["Add"]["7C436110-AB2A-4BBB-A880-FE41995C9F82"]["csr-active-config"] = utilities.string_to_hex(self.constants.custom_sip_value)
elif self.constants.sip_status is False:
print("- Disabling SIP")
self.config["NVRAM"]["Add"]["7C436110-AB2A-4BBB-A880-FE41995C9F82"]["csr-active-config"] = binascii.unhexlify("030E0000")
# if self.constants.amfi_status is False:

View File

@@ -160,7 +160,7 @@ Note: For security reasons, OpenShell will be disabled when Vault is set.
utilities.cls()
utilities.header(["Set System Integrity protection"])
print(
"""SIP is used to ensure proper secuirty measures are set,
f"""SIP is used to ensure proper secuirty measures are set,
however to patch the root volume this must be disabled.
Only disable is absolutely necessary. SIP value = 0xE03
@@ -168,6 +168,7 @@ Valid options:
1. Enable SIP
2. Disable SIP
3. Set Custom SIP value {self.constants.custom_sip_value}
Q. Return to previous menu
"""
@@ -177,6 +178,8 @@ Q. Return to previous menu
self.constants.sip_status = True
elif change_menu == "2":
self.constants.sip_status = False
elif change_menu == "3":
self.set_custom_sip_value()
elif change_menu in {"q", "Q", "Quit", "quit"}:
print("Returning to previous menu")
else:
@@ -763,6 +766,29 @@ the event there's issues.
print("Returning to previous menu")
else:
self.set_surplus()
def set_custom_sip_value(self):
utilities.cls()
utilities.header(["Set Custom SIP Value"])
print(
"""
By default OCLP will use the SIP value of 0x00 as the enabled and
0xE03 for machines that require root patching. For users who wish
to flip additional bits in SIP may use this option.
To disable SIP outright, set it to 0xFEF
"""
)
change_menu = input("Set Custom SIP Value (0xFEF): ")
try:
# Verify whether input is a valid hex value
int(change_menu, 16)
# Convert to binary hex
self.constants.custom_sip_value = change_menu
except ValueError:
print("Invalid input, returning to previous menu")
self.set_custom_sip_value()
def credits(self):
utilities.TUIOnlyPrint(
@@ -911,7 +937,7 @@ system_profiler SPHardwareDataType | grep 'Model Identifier'
# MenuOptions(self.constants.custom_model or self.constants.computer.real_model, self.constants).set_amfi,
# ],
[
f"Set System Integrity Protection (SIP):\tCurrently {self.constants.sip_status}",
f"Set System Integrity Protection (SIP):\tCurrently {self.constants.custom_sip_value or self.constants.sip_status}",
MenuOptions(self.constants.custom_model or self.constants.computer.real_model, self.constants).change_sip,
],
[

View File

@@ -157,6 +157,7 @@ class Constants:
self.force_latest_psp = False # Force latest PatcherSupportPkg
self.disable_msr_power_ctl = False # Disable MSR Power Control (missing battery throttling)
self.software_demux = False # Enable Software Demux patch set
self.custom_sip_value = None # Set custom SIP value
# OS Versions
## Based off Major Kernel Version