From 85180b85fbf19e7c92153dbf63216663b02260a8 Mon Sep 17 00:00:00 2001 From: Nick Chan Date: Sun, 19 Jul 2026 21:49:22 +0800 Subject: [PATCH] Add --force-enable-ssv Signed-off-by: Nick Chan --- docs/palera1n.1 | 16 +++++++++++++++- include/palerain.h | 2 ++ src/optparse.c | 5 +++++ 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/docs/palera1n.1 b/docs/palera1n.1 index 59400f0..a5f3fb7 100644 --- a/docs/palera1n.1 +++ b/docs/palera1n.1 @@ -18,6 +18,7 @@ .Op Fl i Ar checkra1n file .Op Fl -version .Op Fl -force-revert +.Op Fl -force-enable-ssv .Op Fl -override-libcheckra1nhelper Ar hook dylib .Sh DESCRIPTION .Nm @@ -28,7 +29,7 @@ bootROM exploit. .Pp .Nm provides rootful and rootless jailbreak modes. -On iOS/iPadOS 15.0 and later and on tvOS 18.2 or later, +On iOS/iPadOS 15.0 and later, .Nm is able to jailbreak the device in fakefs-rootful mode, where / is writable, as well as rootless mode, where / cannot be written to. @@ -134,6 +135,19 @@ files. As a result, using the loader app to install the jailbreak environment is not supported when this option is used together with .Fl f , -fakefs \[char46] +.It Fl -force-enable-ssv +Force the jailbreak to detect Signed System Volume (SSV) as being required on +the system. This option provides compatibility with previous version of palera1n +that incorrectly detect SSV as being required on tvOS 18.2 and above. When using +this option with +.Fl f , -fakefs , +the jailbreak will behave as if fakefs is required, which allows the user to boot +into fakefs possibly created by previous versions of palera1n, or remove it if +the +.Fl -force-revert +option is specified as well. +(It is technically possible to setup fakefs using this option as well, but this +is not a supported scenario) .It Fl B , -setup-fakefs-partial Like .Fl c , -setup-fakefs diff --git a/include/palerain.h b/include/palerain.h index baf708b..65569b1 100644 --- a/include/palerain.h +++ b/include/palerain.h @@ -26,6 +26,8 @@ #define palerain_option_case_force_revert palerain_option_case(1) #define palerain_option_case_libcheckra1nhelper_path palerain_option_case(2) #define palerain_option_case_cli palerain_option_case(3) +#define palerain_option_case_force_enable_ssv palerain_option_case(4) + #ifdef USE_LIBUSB diff --git a/src/optparse.c b/src/optparse.c index 7f47db0..17fb0bd 100644 --- a/src/optparse.c +++ b/src/optparse.c @@ -37,6 +37,7 @@ static struct option longopts[] = { {"rootless", no_argument, NULL, 'l'}, {"demote", no_argument, NULL, 'd'}, {"force-revert", no_argument, NULL, palerain_option_case_force_revert}, + {"force-enable-ssv", no_argument, NULL, palerain_option_case_force_enable_ssv}, {"no-colors", no_argument, NULL, 'S'}, {"safe-mode", no_argument, NULL, 's'}, {"telnetd", no_argument, NULL, 'T'}, @@ -81,6 +82,7 @@ static int usage(int e, char* prog_name) "iOS/iPadOS/tvOS 15-26, bridgeOS 5-10 arm64 jailbreaking tool\n\n" "\t--version\t\t\t\tPrint version\n" "\t--force-revert\t\t\t\tRemove jailbreak\n" + "\t--force-enable-ssv\t\t\tForce SSV detection to result in YES\n" #ifdef DEV_BUILD "\t-1, --test1\t\t\t\tSet palerain_option_test1\n" "\t-2, --test2\t\t\t\tSet palerain_option_test2\n" @@ -338,6 +340,9 @@ int optparse(int argc, char* argv[]) { } snprintf(gOverrideLibcheckra1nHelper, strlen(optarg) + 1, "%s", optarg); break; + case palerain_option_case_force_enable_ssv: + palerain_flags |= palerain_option_ssv; + break; default: usage(1, argv[0]); break;