Badruzeus Posted January 25, 2019 Share Posted January 25, 2019 (edited) 44 minutes ago, PMheart said: Hi again, I have cleaned up kext_inject.c once more. (See here) Now that a friend has confirmed that it did work, let me post the diff here. ... Here is the full kext_inject.c, if needed. cleanup_kext_inject.zip Thanks once again, also tested on 10.11.6 (Normal) 10.13.6 (Recovery) and 10.14.4 for sure; KextInject is working fine on my case yeiy..!!! Edited January 25, 2019 by Badruzeus 2 Link to comment Share on other sites More sharing options...
Slice Posted January 25, 2019 Share Posted January 25, 2019 1 hour ago, PMheart said: Hi again, I have cleaned up kext_inject.c once more. (See here) Now that a friend has confirmed that it did work, let me post the diff here. --- kext_inject_org.c 2019-01-25 10:20:46.000000000 +0800 +++ kext_inject_mod.c 2019-01-25 10:42:03.000000000 +0800 @@ -665,16 +665,30 @@ UINT8 KBEMojaSearchEXT[] = { 0xE8, 0xAF, 0x00, 0x00, 0x00, 0xEB, 0x05, 0xE8 }; UINT8 KBEMojaReplaceEXT[] = { 0xE8, 0xAF, 0x00, 0x00, 0x00, 0x90, 0x90, 0xE8 }; -// High Sierra/Mojave (SIP) -// PMheart: checked KBEHighSie*SIP +// High Sierra / Mojave 10.14 - 10.14.3 (SIP) +// PMheart: for 10.14.4+, see KBEMoja4SearchSIP and KBEMoja4ReplaceSIP below +// PMheart: checked KBEHighSieMoja3*SIP // Need to pair with KBEMoja*EXT -UINT8 KBEHighSieMojaSearchSIP[] = { 0xC3, 0x48, 0x85, 0xDB, 0x74, 0x69, 0x48, 0x8B, 0x03, 0x48, 0x89, 0xDF, 0xFF, 0x50, 0x28, 0x48 }; -UINT8 KBEHighSieMojaReplaceSIP[] = { 0xC3, 0x48, 0x85, 0xDB, 0xEB, 0x12, 0x48, 0x8B, 0x03, 0x48, 0x89, 0xDF, 0xFF, 0x50, 0x28, 0x48 }; +UINT8 KBEHighSieMoja3SearchSIP[] = { 0xC3, 0x48, 0x85, 0xDB, 0x74, 0x69, 0x48, 0x8B, 0x03, 0x48, 0x89, 0xDF, 0xFF, 0x50, 0x28, 0x48 }; +UINT8 KBEHighSieMoja3ReplaceSIP[] = { 0xC3, 0x48, 0x85, 0xDB, 0xEB, 0x12, 0x48, 0x8B, 0x03, 0x48, 0x89, 0xDF, 0xFF, 0x50, 0x28, 0x48 }; +// Mojave 10.14.4+ (SIP) +// PMheart: checked KBEMoja4*SIP +// Need to pair with KBEMoja*EXT +UINT8 KBEMoja4SearchSIP[] = { 0x48, 0x85, 0xC0, 0x74, 0x6C, 0x48, 0x89, 0xC3, 0x48, 0x8B, 0x00, 0x48, 0x89, 0xDF, 0xFF, 0x50, 0x28, 0x48 }; +UINT8 KBEMoja4ReplaceSIP[] = { 0x48, 0x85, 0xC0, 0xEB, 0x15, 0x48, 0x89, 0xC3, 0x48, 0x8B, 0x00, 0x48, 0x89, 0xDF, 0xFF, 0x50, 0x28, 0x48 }; + +// Mojave 10.14 - 10.14.3 // Avoid race condition in OSKext::removeKextBootstrap when using booter kexts without keepsyms=1. -UINT8 KBEMojaSearchKxldUnmap[] = { 0x00, 0x0F, 0x85, 0xB2, 0x01, 0x00, 0x00, 0x48 }; -UINT8 KBEMojaReplaceKxldUnmap[] = { 0x00, 0x90, 0xE9, 0xB2, 0x01, 0x00, 0x00, 0x48 }; +// by vit9696 +UINT8 KBEMoja3SearchKxldUnmap[] = { 0x00, 0x0F, 0x85, 0xB2, 0x01, 0x00, 0x00, 0x48 }; +UINT8 KBEMoja3ReplaceKxldUnmap[] = { 0x00, 0x90, 0xE9, 0xB2, 0x01, 0x00, 0x00, 0x48 }; +// Mojave 10.14.4+ +// Avoid race condition in OSKext::removeKextBootstrap when using booter kexts without keepsyms=1. +// by PMheart, based on vit9696's work +UINT8 KBEMoja4SearchKxldUnmap[] = { 0x00, 0x0F, 0x85, 0xB1, 0x01, 0x00, 0x00, 0x48 }; +UINT8 KBEMoja4ReplaceKxldUnmap[] = { 0x00, 0x90, 0xE9, 0xB1, 0x01, 0x00, 0x00, 0x48 }; // // We can not rely on OSVersion global variable for OS version detection, @@ -689,100 +703,114 @@ VOID EFIAPI KernelBooterExtensionsPatch(IN UINT8 *Kernel, LOADER_ENTRY *Entry) { UINTN Num = 0; - UINTN NumSnow_i386 = 0; - UINTN NumSnow_X64 = 0; - UINTN NumLion_i386 = 0; - UINTN NumLion_X64 = 0; - UINTN NumMLMav = 0; - UINTN NumMLDebug = 0; - UINTN NumYos = 0; - UINTN NumMavYosDebug = 0; - UINTN NumEC = 0; - UINTN NumECDebug = 0; - UINTN NumSie = 0; - UINTN NumSieDebug = 0; - UINTN NumHighSieMoja = 0; - UINTN NumMoja = 0; + UINTN NumSnow_i386_EXT = 0; + UINTN NumSnow_X64_EXT = 0; + UINTN NumLion_i386_EXT = 0; + UINTN NumLion_X64_EXT = 0; + UINTN NumMLMavEXT = 0; + UINTN NumMLDebugEXT = 0; + UINTN NumYosEXT = 0; + UINTN NumMavYosDebugEXT = 0; + UINTN NumECSIP = 0; + UINTN NumECDebugSIP = 0; + UINTN NumSieSIP = 0; + UINTN NumSieDebugSIP = 0; + UINTN NumHighSieMoja3SIP = 0; // 10.13.X - 10.14.3 + UINTN NumMojaEXT = 0; // 10.14.X + UINTN NumMoja4SIP = 0; // 10.14.4+ DBG_RT(Entry, "\nPatching kernel for injected kexts...\n"); if (is64BitKernel) { - NumSnow_X64 = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBESnowSearchEXT_X64, sizeof(KBESnowSearchEXT_X64)); - NumLion_X64 = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBELionSearchEXT_X64, sizeof(KBELionSearchEXT_X64)); - NumMLMav = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEMLMavSearchEXT, sizeof(KBEMLMavSearchEXT)); - //NumMLDebug = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEMLDebugSearchEXT, sizeof(KBEMLDebugSearchEXT)); - NumYos = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEYosECSieHighSearchEXT, sizeof(KBEYosECSieHighSearchEXT)); - //NumMavYosDebug = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEMavYosDebugSearchEXT, sizeof(KBEMavYosDebugSearchEXT)); - NumEC = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEECSearchSIP, sizeof(KBEECSearchSIP)); - //NumECDebug = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEECDebugSearchSIP, sizeof(KBEECDebugSearchSIP)); - NumSie = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBESieSearchSIP, sizeof(KBESieSearchSIP)); - NumSieDebug = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBESieDebugSearchSIP, sizeof(KBESieDebugSearchSIP)); - NumHighSieMoja = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEHighSieMojaSearchSIP, sizeof(KBEHighSieMojaSearchSIP)); - NumMoja = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEMojaSearchEXT, sizeof(KBEMojaSearchEXT)); - } - else { - NumSnow_i386 = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBESnowSearchEXT_i386, sizeof(KBESnowSearchEXT_i386)); - NumLion_i386 = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBELionSearchEXT_i386, sizeof(KBELionSearchEXT_i386)); + NumSnow_X64_EXT = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBESnowSearchEXT_X64, sizeof(KBESnowSearchEXT_X64)); + NumLion_X64_EXT = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBELionSearchEXT_X64, sizeof(KBELionSearchEXT_X64)); + NumMLMavEXT = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEMLMavSearchEXT, sizeof(KBEMLMavSearchEXT)); + //NumMLDebugEXT = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEMLDebugSearchEXT, sizeof(KBEMLDebugSearchEXT)); + NumYosEXT = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEYosECSieHighSearchEXT, sizeof(KBEYosECSieHighSearchEXT)); + //NumMavYosDebugEXT = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEMavYosDebugSearchEXT, sizeof(KBEMavYosDebugSearchEXT)); + NumECSIP = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEECSearchSIP, sizeof(KBEECSearchSIP)); + //NumECDebugSIP = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEECDebugSearchSIP, sizeof(KBEECDebugSearchSIP)); + NumSieSIP = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBESieSearchSIP, sizeof(KBESieSearchSIP)); + NumSieDebugSIP = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBESieDebugSearchSIP, sizeof(KBESieDebugSearchSIP)); + NumHighSieMoja3SIP = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEHighSieMoja3SearchSIP, sizeof(KBEHighSieMoja3SearchSIP)); + NumMojaEXT = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEMojaSearchEXT, sizeof(KBEMojaSearchEXT)); // general EXT patch, for all 10.14.x + NumMoja4SIP = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEMoja4SearchSIP, sizeof(KBEMoja4SearchSIP)); // SIP patch, ONLY for 10.14.4+ + } else { + NumSnow_i386_EXT = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBESnowSearchEXT_i386, sizeof(KBESnowSearchEXT_i386)); + NumLion_i386_EXT = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBELionSearchEXT_i386, sizeof(KBELionSearchEXT_i386)); } - if (NumSnow_i386 + NumSnow_X64 + NumLion_i386 + NumLion_X64 + NumMLMav > 1) { + if (NumSnow_i386_EXT + NumSnow_X64_EXT + NumLion_i386_EXT + NumLion_X64_EXT + NumMLMavEXT > 1) { // more then one pattern found - we do not know what to do with it // and we'll skipp it - AsciiPrint("\nERROR patching kernel for injected kexts:\nmultiple patterns found (Snowi386: %d, SnowX64: %d, Lioni386: %d, LionX64: %d, MLMav: %d) - skipping patching!\n", NumSnow_i386, NumSnow_X64, NumLion_i386, NumLion_X64, NumMLMav); + AsciiPrint("\nERROR patching kernel for injected kexts:\nmultiple patterns found (Snowi386: %d, SnowX64: %d, Lioni386: %d, LionX64: %d, MLMav: %d) - skipping patching!\n", NumSnow_i386_EXT, NumSnow_X64_EXT, NumLion_i386_EXT, NumLion_X64_EXT, NumMLMavEXT); gBS->Stall(10000000); return; } // X64 - if (NumMoja == 1) { - Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEMojaSearchEXT, sizeof(KBEMojaSearchEXT), KBEMojaReplaceEXT, 1) + - SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEHighSieMojaSearchSIP, sizeof(KBEHighSieMojaSearchSIP), KBEHighSieMojaReplaceSIP, 1) + - SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEMojaSearchKxldUnmap, sizeof(KBEMojaSearchKxldUnmap), KBEMojaReplaceKxldUnmap, 1); - DBG_RT(Entry, "==> kernel Mojave: %d replaces done.\n", Num); - } else if (NumHighSieMoja == 1) { + if (NumMojaEXT == 1) { + // apply EXT patch first + Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEMojaSearchEXT, sizeof(KBEMojaSearchEXT), KBEMojaReplaceEXT, 1); + // then apply corresponding patches based on what we found + if (NumMoja4SIP == 1) { + // firstly, try to patch 10.14.4+ + Num += SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEMoja4SearchSIP, sizeof(KBEMoja4SearchSIP), KBEMoja4ReplaceSIP, 1) + + SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEMoja4SearchKxldUnmap, sizeof(KBEMoja4SearchKxldUnmap), KBEMoja4ReplaceKxldUnmap, 1); + DBG_RT(Entry, "==> kernel Mojave (10.14.4+): %d replaces done.\n", Num); + } else if (NumHighSieMoja3SIP == 1) { + // then 10.14 - 10.14.3 + Num += SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEHighSieMoja3SearchSIP, sizeof(KBEHighSieMoja3SearchSIP), KBEHighSieMoja3ReplaceSIP, 1) + + SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEMoja3SearchKxldUnmap, sizeof(KBEMoja3SearchKxldUnmap), KBEMoja3ReplaceKxldUnmap, 1); + DBG_RT(Entry, "==> kernel Mojave (10.14 - 10.14.3): %d replaces done.\n", Num); + } else { + // no SIP and KxldUnmap pattern found! + DBG_RT(Entry, "==> kernel Mojave WARNING: pattern NOT found - only %d replaces done.\nKext Injection will NOT work!\n", Num); + } + } else if (NumHighSieMoja3SIP == 1) { Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEYosECSieHighSearchEXT, sizeof(KBEYosECSieHighSearchEXT), KBEYosECSieHighReplaceEXT, 1) + - SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEHighSieMojaSearchSIP, sizeof(KBEHighSieMojaSearchSIP), KBEHighSieMojaReplaceSIP, 1); + SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEHighSieMoja3SearchSIP, sizeof(KBEHighSieMoja3SearchSIP), KBEHighSieMoja3ReplaceSIP, 1); DBG_RT(Entry, "==> kernel High Sierra: %d replaces done.\n", Num); - } else if (NumSieDebug == 1) { + } else if (NumSieDebugSIP == 1) { Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBESieDebugSearchEXT, sizeof(KBESieDebugSearchEXT), KBESieDebugReplaceEXT, 1) + SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBESieDebugSearchSIP, sizeof(KBESieDebugSearchSIP), KBESieDebugReplaceSIP, 1); DBG_RT(Entry, "==> kernel Sierra Debug: %d replaces done.\n", Num); - } else if (NumSie == 1) { + } else if (NumSieSIP == 1) { Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEYosECSieHighSearchEXT, sizeof(KBEYosECSieHighSearchEXT), KBEYosECSieHighReplaceEXT, 1) + SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBESieSearchSIP, sizeof(KBESieSearchSIP), KBESieReplaceSIP, 1); DBG_RT(Entry, "==> kernel Sierra: %d replaces done.\n", Num); - } else if (NumECDebug == 1) { + } else if (NumECDebugSIP == 1) { Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEECDebugSearchEXT, sizeof(KBEECDebugSearchEXT), KBEECDebugReplaceEXT, 1) + SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEECDebugSearchSIP, sizeof(KBEECDebugSearchSIP), KBEECDebugReplaceSIP, 1); DBG_RT(Entry, "==> kernel El Capitan Debug: %d replaces done.\n", Num); - } else if (NumEC == 1) { + } else if (NumECSIP == 1) { Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEYosECSieHighSearchEXT, sizeof(KBEYosECSieHighSearchEXT), KBEYosECSieHighReplaceEXT, 1) + SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEECSearchSIP, sizeof(KBEECSearchSIP), KBEECReplaceSIP, 1); DBG_RT(Entry, "==> kernel El Capitan: %d replaces done.\n", Num); - } else if (NumMavYosDebug == 1) { + } else if (NumMavYosDebugEXT == 1) { Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEMavYosDebugSearchEXT, sizeof(KBEMavYosDebugReplaceEXT), KBEMavYosDebugReplaceEXT, 1); DBG_RT(Entry, "==> kernel Yosemite Debug: %d replaces done.\n", Num); - } else if (NumYos == 1) { + } else if (NumYosEXT == 1) { Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEYosECSieHighSearchEXT, sizeof(KBEYosECSieHighSearchEXT), KBEYosECSieHighReplaceEXT, 1); DBG_RT(Entry, "==> kernel Yosemite: %d replaces done.\n", Num); - } else if (NumMLDebug == 1) { + } else if (NumMLDebugEXT == 1) { Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEMLDebugSearchEXT, sizeof(KBEMLDebugSearchEXT), KBEMLDebugReplaceEXT, 1); DBG_RT(Entry, "==> kernel Mountain Lion Debug: %d replaces done.\n", Num) - } else if (NumMLMav == 1) { + } else if (NumMLMavEXT == 1) { Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEMLMavSearchEXT, sizeof(KBEMLMavSearchEXT), KBEMLMavReplaceEXT, 1); DBG_RT(Entry, "==> kernel Mountain Lion/Mavericks: %d replaces done.\n", Num); - } else if (NumLion_X64 == 1) { + } else if (NumLion_X64_EXT == 1) { Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBELionSearchEXT_X64, sizeof(KBELionSearchEXT_X64), KBELionReplaceEXT_X64, 1); DBG_RT(Entry, "==> kernel Lion X64: %d replaces done.\n", Num); - } else if (NumSnow_X64 == 1) { + } else if (NumSnow_X64_EXT == 1) { Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBESnowSearchEXT_X64, sizeof(KBESnowSearchEXT_X64), KBESnowReplaceEXT_X64, 1); DBG_RT(Entry, "==> kernel Snow Leopard X64: %d replaces done.\n", Num); // i386 - } else if (NumLion_i386 == 1) { + } else if (NumLion_i386_EXT == 1) { Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBELionSearchEXT_i386, sizeof(KBELionSearchEXT_i386), KBELionReplaceEXT_i386, 1); DBG_RT(Entry, "==> kernel Lion i386: %d replaces done.\n", Num); - } else if (NumSnow_i386 == 1) { + } else if (NumSnow_i386_EXT == 1) { Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBESnowSearchEXT_i386, sizeof(KBESnowSearchEXT_i386), KBESnowReplaceEXT_i386, 1); DBG_RT(Entry, "==> kernel Snow Leopard i386: %d replaces done.\n", Num); } else { Here is the full kext_inject.c, if needed. cleanup_kext_inject.zip Thanks! Thanks, committed to 4862 4 1 Link to comment Share on other sites More sharing options...
Slice Posted January 25, 2019 Share Posted January 25, 2019 Is there anybody can propose a small C library to decode ogg sound files? Link to comment Share on other sites More sharing options...
LAbyOne Posted January 25, 2019 Share Posted January 25, 2019 8 hours ago, Slice said: Is there anybody can propose a small C library to decode ogg sound files? I think you can get some useful infos here and eventually the files here hope it helps. 1 Link to comment Share on other sites More sharing options...
CMMChris Posted January 25, 2019 Share Posted January 25, 2019 Having freeze on wake issues since latest clover release. One more person on the German hackintosh-forum confirmed the issue so far. Anyone in here having the same problem? 1 Link to comment Share on other sites More sharing options...
LockDown Posted January 26, 2019 Share Posted January 26, 2019 Hello What to select, Osxfatbinarydrv or AppleImageLoader? Link to comment Share on other sites More sharing options...
Sherlocks Posted January 26, 2019 Share Posted January 26, 2019 Hello What to select, Osxfatbinarydrv or AppleImageLoader?still need osxfatbinary for old mac os x나의 LG-F800S 의 Tapatalk에서 보냄 Link to comment Share on other sites More sharing options...
LockDown Posted January 26, 2019 Share Posted January 26, 2019 39 minutes ago, Sherlocks said: still need osxfatbinary for old mac os x 나의 LG-F800S 의 Tapatalk에서 보냄 On which OS AppleImageLoader started to support? Link to comment Share on other sites More sharing options...
Sherlocks Posted January 26, 2019 Share Posted January 26, 2019 On which OS AppleImageLoader started to support?idk. i'm just checked it that works or not.나의 LG-F800S 의 Tapatalk에서 보냄 1 Link to comment Share on other sites More sharing options...
LockDown Posted January 26, 2019 Share Posted January 26, 2019 (edited) 17 minutes ago, Sherlocks said: idk. i'm just checked it that works or not. 나의 LG-F800S 의 Tapatalk에서 보냄 But how would i know if one does not work? I mean, tried both from 10.8-10.14 and both booted. (One at a time of course) Edited January 26, 2019 by ellaosx Link to comment Share on other sites More sharing options...
Sherlocks Posted January 26, 2019 Share Posted January 26, 2019 But how would i know if one does not work? I mean, tried both from 10.9-10.14 and both booted. (One at a time of course)we need osxfatbinary to boot snow leopard. i don't know file so that boot 10.7 upto 10.8. if your system can boot only modern macos, actually you don't need it.나의 LG-F800S 의 Tapatalk에서 보냄 1 1 Link to comment Share on other sites More sharing options...
Slice Posted January 26, 2019 Share Posted January 26, 2019 7 hours ago, ellaosx said: Hello What to select, Osxfatbinarydrv or AppleImageLoader? For 10.9+ there are both not needed. 1 1 Link to comment Share on other sites More sharing options...
macq Posted January 26, 2019 Share Posted January 26, 2019 @slice, PMheart, Does clover 4862 account for kernel patching for lapic error in 10.14.4b1, it throws a lapic error kernel panic for me. Regards Link to comment Share on other sites More sharing options...
vector sigma Posted January 26, 2019 Share Posted January 26, 2019 13 minutes ago, macq said: Does clover 4862 account for kernel patching for lapic error in 10.14.4b1, it throws a lapic error kernel panic for me. can you post the kernel please? 1 Link to comment Share on other sites More sharing options...
Badruzeus Posted January 26, 2019 Share Posted January 26, 2019 4 minutes ago, vector sigma said: can you post the kernel please? Here you go.. (from macOS 10.14.4 Beta 1) kernel_10.14.4.b1_darwin_18.5.0.zip 2 Link to comment Share on other sites More sharing options...
PMheart Posted January 26, 2019 Share Posted January 26, 2019 (edited) Hello, The patch for KernelLapic should be updated too, here is the diff: --- kernel_patcher_org.c 2019-01-26 21:56:09.000000000 +0800 +++ kernel_patcher_mod.c 2019-01-26 21:59:55.000000000 +0800 @@ -672,13 +672,21 @@ patchLocation = i+1396; DBG("Found High Sierra Lapic panic at 0x%08x\n", patchLocation); break; - // PMheart: 10.14.DP1 + // PMheart: 10.14 - 10.14.3 } else if (bytes[i+0] == 0x65 && bytes[i+1] == 0x8B && bytes[i+2] == 0x0C && bytes[i+3] == 0x25 && bytes[i+4] == 0x1C && bytes[i+5] == 0x00 && bytes[i+6] == 0x00 && bytes[i+7] == 0x00 && bytes[i+1396] == 0x65 && bytes[i+1397] == 0x8B && bytes[i+1398] == 0x0C && bytes[i+1399] == 0x25 && bytes[i+1400] == 0x1C && bytes[i+1401] == 0x00 && bytes[i+1402] == 0x00 && bytes[i+1403] == 0x00) { patchLocation = i+1385; - DBG("Found Mojave Lapic panic at 0x%08x\n", patchLocation); + DBG("Found Mojave (10.14 - 10.14.3) Lapic panic at 0x%08x\n", patchLocation); + break; + // PMheart: 10.14.4+ + } else if (bytes[i+0] == 0x65 && bytes[i+1] == 0x8B && bytes[i+2] == 0x0C && bytes[i+3] == 0x25 && + bytes[i+4] == 0x1C && bytes[i+5] == 0x00 && bytes[i+6] == 0x00 && bytes[i+7] == 0x00 && + bytes[i+1405] == 0x65 && bytes[i+1406] == 0x8B && bytes[i+1407] == 0x0C && bytes[i+1408] == 0x25 && + bytes[i+1409] == 0x1C && bytes[i+1410] == 0x00 && bytes[i+1411] == 0x00 && bytes[i+1412] == 0x00) { + patchLocation = i+1394; + DBG("Found Mojave (10.14.4+) Lapic panic at 0x%08x\n", patchLocation); break; } } EDIT: Here is the full kernel_patcher.c: lapic_fix_kernel_patcher.c.zip Thanks! Edited January 26, 2019 by PMheart 2 Link to comment Share on other sites More sharing options...
Sherlocks Posted January 26, 2019 Share Posted January 26, 2019 1 hour ago, PMheart said: Hello, The patch for KernelLapic should be updated too, here is the diff: --- kernel_patcher_org.c 2019-01-26 21:56:09.000000000 +0800 +++ kernel_patcher_mod.c 2019-01-26 21:59:55.000000000 +0800 @@ -672,13 +672,21 @@ patchLocation = i+1396; DBG("Found High Sierra Lapic panic at 0x%08x\n", patchLocation); break; - // PMheart: 10.14.DP1 + // PMheart: 10.14 - 10.14.3 } else if (bytes[i+0] == 0x65 && bytes[i+1] == 0x8B && bytes[i+2] == 0x0C && bytes[i+3] == 0x25 && bytes[i+4] == 0x1C && bytes[i+5] == 0x00 && bytes[i+6] == 0x00 && bytes[i+7] == 0x00 && bytes[i+1396] == 0x65 && bytes[i+1397] == 0x8B && bytes[i+1398] == 0x0C && bytes[i+1399] == 0x25 && bytes[i+1400] == 0x1C && bytes[i+1401] == 0x00 && bytes[i+1402] == 0x00 && bytes[i+1403] == 0x00) { patchLocation = i+1385; - DBG("Found Mojave Lapic panic at 0x%08x\n", patchLocation); + DBG("Found Mojave (10.14 - 10.14.3) Lapic panic at 0x%08x\n", patchLocation); + break; + // PMheart: 10.14.4+ + } else if (bytes[i+0] == 0x65 && bytes[i+1] == 0x8B && bytes[i+2] == 0x0C && bytes[i+3] == 0x25 && + bytes[i+4] == 0x1C && bytes[i+5] == 0x00 && bytes[i+6] == 0x00 && bytes[i+7] == 0x00 && + bytes[i+1405] == 0x65 && bytes[i+1406] == 0x8B && bytes[i+1407] == 0x0C && bytes[i+1408] == 0x25 && + bytes[i+1409] == 0x1C && bytes[i+1410] == 0x00 && bytes[i+1411] == 0x00 && bytes[i+1412] == 0x00) { + patchLocation = i+1394; + DBG("Found Mojave (10.14.4+) Lapic panic at 0x%08x\n", patchLocation); break; } } EDIT: Here is the full kernel_patcher.c: lapic_fix_kernel_patcher.c.zip Thanks! thanks i will commit 5 Link to comment Share on other sites More sharing options...
Badruzeus Posted January 26, 2019 Share Posted January 26, 2019 (edited) Hi @Slice I just tested Goldfish64's latest AudioPkg changes, I could confirm that "PlayAsync=Yes" is working fine on my case (r4863). Not having stuck on GUI and simultanous sound*.wav are also well played after GUI loaded. (But, I'm using AudioDxe.efi from him #btw). AudioPkg-R1-RELEASE.zip preboot_alc269vb_r4863_PlayAsync.zip sound.wav_Ubuntu10.10_StartUp.zip Edited January 26, 2019 by Badruzeus Link to comment Share on other sites More sharing options...
SavageAUS Posted January 27, 2019 Share Posted January 27, 2019 4 hours ago, Badruzeus said: Hi @Slice I just tested Goldfish64's latest AudioPkg changes, I could confirm that "PlayAsync=Yes" is working fine on my case (r4863). Not having stuck on GUI and simultanous sound*.wav are also well played after GUI loaded. (But, I'm using AudioDxe.efi from him #btw). AudioPkg-R1-RELEASE.zip preboot_alc269vb_r4863_PlayAsync.zip sound.wav_Ubuntu10.10_StartUp.zip Confirmed using your uploaded AudioDxe.efi + Ubuntu sound PlayAsync working fine on my desktop. 1 Link to comment Share on other sites More sharing options...
Badruzeus Posted January 27, 2019 Share Posted January 27, 2019 48 minutes ago, SavageAUS said: Confirmed using your uploaded AudioDxe.efi + Ubuntu sound PlayAsync working fine on my desktop. #FunPart is: Bcoz PlayAsync=true is working, now if your sound*.wav has long duration; it'll bcome BackgroundSound on Clover GUI.. it'll be stopped once boot*.efi (or any OS) loaded. But also consider the size; 7 minutes "Metallica - One" as WAV | 44100Hz | 16kbps | 2 Channels - could produce more than 100mb #LoL. The question is What do you do spending 7 minutes on Clover GUI? hah haa 1 Link to comment Share on other sites More sharing options...
SavageAUS Posted January 27, 2019 Share Posted January 27, 2019 #FunPart is: Bcoz PlayAsync=true is working, now if your sound*.wav has long duration; it'll bcome BackgroundSound on Clover GUI.. it'll be stopped once boot*.efi (or any OS) loaded. But also consider the size; 7 minutes "Metallica - One" as WAV | 44100Hz | 16kbps | 2 Channels - could produce more than 100mb #LoL. The question is What do you do spending 7 minutes on Clover GUI? hah haaI think 3 - 10 seconds is fine. My boot timeout is 10 seconds so that works well for me. The only thing not working is boot timeout with any svg theme. Just freezes. Sent from my iPhone using Tapatalk 1 Link to comment Share on other sites More sharing options...
LAbyOne Posted January 27, 2019 Share Posted January 27, 2019 5 hours ago, Badruzeus said: Hi @Slice I just tested Goldfish64's latest AudioPkg changes, I could confirm that "PlayAsync=Yes" is working fine on my case (r4863). Not having stuck on GUI and simultanous sound*.wav are also well played after GUI loaded. (But, I'm using AudioDxe.efi from him #btw). For me, as I was never able to get sound @ boot, that was the only way to get it to work... so i ended up making an installer building and including all files from Goldfish64 repository directly into clover. also no need using them to have "PlayAsync" set on config. it does it directly. 1 Link to comment Share on other sites More sharing options...
Slice Posted January 27, 2019 Share Posted January 27, 2019 7 hours ago, Badruzeus said: Hi @Slice I just tested Goldfish64's latest AudioPkg changes, I could confirm that "PlayAsync=Yes" is working fine on my case (r4863). Not having stuck on GUI and simultanous sound*.wav are also well played after GUI loaded. (But, I'm using AudioDxe.efi from him #btw). AudioPkg-R1-RELEASE.zip preboot_alc269vb_r4863_PlayAsync.zip sound.wav_Ubuntu10.10_StartUp.zip Good news! 1 hour ago, Badruzeus said: #FunPart is: Bcoz PlayAsync=true is working, now if your sound*.wav has long duration; it'll bcome BackgroundSound on Clover GUI.. it'll be stopped once boot*.efi (or any OS) loaded. But also consider the size; 7 minutes "Metallica - One" as WAV | 44100Hz | 16kbps | 2 Channels - could produce more than 100mb #LoL. The question is What do you do spending 7 minutes on Clover GUI? hah haa So why I asked about SMALL library to decode ogg file. ogg file compact sound 1 minute = 1 Mb. 1 Link to comment Share on other sites More sharing options...
Slice Posted January 27, 2019 Share Posted January 27, 2019 8 hours ago, Badruzeus said: Hi @Slice I just tested Goldfish64's latest AudioPkg changes, I could confirm that "PlayAsync=Yes" is working fine on my case (r4863). Not having stuck on GUI and simultanous sound*.wav are also well played after GUI loaded. (But, I'm using AudioDxe.efi from him #btw). AudioPkg-R1-RELEASE.zip preboot_alc269vb_r4863_PlayAsync.zip sound.wav_Ubuntu10.10_StartUp.zip AudioDxe was not changed last month. 2 Link to comment Share on other sites More sharing options...
Badruzeus Posted January 27, 2019 Share Posted January 27, 2019 1 minute ago, Slice said: AudioDxe was not changed last month. Hmmb OK, assumed something else made it works.. I see diff. size for my precompiled AudioDxe*.efi compared to one provided by SourceForge. Could bcoz Xcode version used, 8.2.1 here.. ah, so both definitely are same (I think). Previous topic about UEFI Shell; I just realized that vit9696's patched Shell (OpenCoreShell) also has ability to > edit efi\clover\config.plist. Thanks anyway. Link to comment Share on other sites More sharing options...
Recommended Posts