diff --git a/Exploits/fastPathSign/src/main.m b/Exploits/fastPathSign/src/main.m index df193d3..8230b38 100644 --- a/Exploits/fastPathSign/src/main.m +++ b/Exploits/fastPathSign/src/main.m @@ -6,6 +6,8 @@ #include "Host.h" #include +#define CPU_SUBTYPE_ARM64E_ABI_V2 0x80000000 + char *extract_preferred_slice(const char *fatPath) { FAT *fat = fat_init_from_path(fatPath); @@ -20,11 +22,15 @@ char *extract_preferred_slice(const char *fatPath) // If that fails, check for regular arm64 macho = fat_find_slice(fat, CPU_TYPE_ARM64, CPU_SUBTYPE_ARM64_ALL); if (!macho) { - // If that fails, check for arm64e - macho = fat_find_slice(fat, CPU_TYPE_ARM64, CPU_SUBTYPE_ARM64E); + // If that fails, check for arm64e with ABI v2 + macho = fat_find_slice(fat, CPU_TYPE_ARM64, CPU_SUBTYPE_ARM64E | CPU_SUBTYPE_ARM64E_ABI_V2); if (!macho) { - fat_free(fat); - return NULL; + // If that fails, check for arm64e + macho = fat_find_slice(fat, CPU_TYPE_ARM64, CPU_SUBTYPE_ARM64E); + if (!macho) { + fat_free(fat); + return NULL; + } } } }