Win10论坛

Win10正式版系统下载主题平板

重定义Modern UI,打造完美Windows全新体验

Windows10下载|安装|新手宝典|必备软件

搜索
查看: 1494|回复: 31

[分享] 升級DP2,使用Clover 3585還是不能用kext inject功能的可以試試這個. [复制链接]

歪樓團 - 小兵一

UID
983256
帖子
1959
PB币
7917
贡献
3
技术
1
活跃
1085

远景技术达人

发表于 2016-7-6 16:15:00 |显示全部楼层
本帖最后由 pcj 于 2016-7-6 17:51 编辑

如題:
基於Clover 3585修改的.
使用Clover 3585還是不能用kext inject功能的試試吧.
我的OK.
ASUS 8H61-M LX PLUS R2.0
Intel(R) Pentium(R) CPU G645 @ 2.90GHz

附件中包含CloverX64.efi及BOOTX64.efi請自行替換.
剛剛看了一下3586已修改正確了.
所以請改用官方的3586.
我這只是應急用的.





附件: 你需要登录才可以下载或查看附件。没有帐号?注册
5

查看全部评分

Rank: 5Rank: 5Rank: 5

UID
4764657
帖子
667
PB币
0
贡献
0
技术
0
活跃
806
发表于 2016-7-6 16:22:01 |显示全部楼层
我把驱动都放到sle下了  除了applealc偶尔会卡住以外其他都能正常使用

Vanilla.

UID
4568967
帖子
13702
PB币
33049
贡献
0
技术
94
活跃
2664

巡察使 十一周年

发表于 2016-7-6 16:22:33 |显示全部楼层
想知道都改動了什麼...
perl -pi -e 's|\x48\x89\xc3\x49\x8b\x04\x24\x4c\x89\xe7\x48\x85\xdb\x74\x77\xff\x90\xd0|\x48\x89\xc3\x49\x8b\x04\x24\x4c\x89\xe7\x48\x85\xdb\xeb\x77\xff\x90\xd0|g' /System/Library/Kernels/kernel
3585改的是這樣子 不行嗎?

歪樓團 - 小兵一

UID
983256
帖子
1959
PB币
7917
贡献
3
技术
1
活跃
1085

远景技术达人

发表于 2016-7-6 16:24:32 |显示全部楼层
15176580671 发表于 2016-7-6 16:22
我把驱动都放到sle下了  除了applealc偶尔会卡住以外其他都能正常使用

我是先升級後卡住,再將fakesmc.kext放至/S/L/E下還是無法加載fakesmc.kext.
所以才去改這個的.

歪樓團 - 小兵一

UID
983256
帖子
1959
PB币
7917
贡献
3
技术
1
活跃
1085

远景技术达人

发表于 2016-7-6 16:27:08 |显示全部楼层
口袋妖怪heart 发表于 2016-7-6 16:22
想知道都改動了什麼...
perl -pi -e 's|\x48\x89\xc3\x49\x8b\x04\x24\x4c\x89\xe7\x48\x85\xdb\x74\x77\x ...

不是.你這段是什麼?

Rank: 5Rank: 5Rank: 5

UID
847228
帖子
503
PB币
46
贡献
0
技术
0
活跃
1045
发表于 2016-7-6 16:28:26 |显示全部楼层
哦 有效果么

Vanilla.

UID
4568967
帖子
13702
PB币
33049
贡献
0
技术
94
活跃
2664

巡察使 十一周年

发表于 2016-7-6 16:29:33 |显示全部楼层
pcj 发表于 2016-7-6 16:27
不是.你這段是什麼?

看3585的改動寫出的perl code。https://sourceforge.net/p/cloverefiboot/code/3585/

  1. +UINT8 KBESieDP2Search[]  = { 0x48, 0x89, 0xC3, 0x49, 0x8B, 0x04, 0x24, 0x4C, 0x89, 0xE7, 0x48, 0x85, 0xDB, 0x74, 0x77, 0xFF, 0x90, 0xD0};
  2. +UINT8 KBESieDP2Replace[] = { 0x48, 0x89, 0xC3, 0x49, 0x8B, 0x04, 0x24, 0x4C, 0x89, 0xE7, 0x48, 0x85, 0xDB, 0xEB, 0x77, 0xFF, 0x90, 0xD0};
  3. +
复制代码



歪樓團 - 小兵一

UID
983256
帖子
1959
PB币
7917
贡献
3
技术
1
活跃
1085

远景技术达人

发表于 2016-7-6 16:34:19 |显示全部楼层
口袋妖怪heart 发表于 2016-7-6 16:29
看3585的改動寫出的perl code。https://sourceforge.net/p/cloverefiboot/code/3585/

在我這他這個一點效果都沒有.我改的如下:

  1. //sherlocks: Sierra DP1
  2. UINT8 KBESieSearch[]  = { 0xC3, 0x48, 0x85, 0xDB, 0x74, 0x71, 0x48, 0x8B, 0x03, 0x48, 0x89, 0xDF, 0xFF, 0x50, 0x28, 0x48 };
  3. UINT8 KBESieReplace[] = { 0xC3, 0x48, 0x85, 0xDB, 0xEB, 0x12, 0x48, 0x8B, 0x03, 0x48, 0x89, 0xDF, 0xFF, 0x50, 0x28, 0x48 };

  4. UINT8 KBESieDP2Search[]  = { 0xE8, 0x25, 0x00, 0x00, 0x00, 0xEB, 0x05, 0xE8, 0x7E, 0x05, 0x00, 0x00 };
  5. UINT8 KBESieDP2Replace[] = { 0xE8, 0x25, 0x00, 0x00, 0x00, 0x90, 0x90, 0xE8, 0x7E, 0x05, 0x00, 0x00 };

  6. //
  7. // We can not rely on OSVersion global variable for OS version detection,
  8. // since in some cases it is not correct (install of ML from Lion, for example).
  9. // So, we'll use "brute-force" method - just try to patch.
  10. // Actually, we'll at least check that if we can find only one instance of code that
  11. // we are planning to patch.
  12. //

  13. #define KERNEL_MAX_SIZE 40000000
  14. VOID EFIAPI KernelBooterExtensionsPatch(IN UINT8 *Kernel, LOADER_ENTRY *Entry)
  15. {
  16.   
  17.   UINTN   Num = 0;
  18.   UINTN   NumSnow_X64 = 0;
  19.   UINTN   NumSnow_i386 = 0;
  20.   UINTN   NumLion_X64 = 0;
  21.   UINTN   NumLion_i386 = 0;
  22.   UINTN   NumML = 0;
  23.   UINTN   NumYos = 0;
  24.   UINTN   NumSie = 0;
  25.   
  26.   DBG_RT(Entry, "\nPatching kernel for injected kexts\n");
  27.   
  28.   if (is64BitKernel) {
  29.     NumLion_X64 = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBELionSearch_X64, sizeof(KBELionSearch_X64));
  30.     NumSnow_X64 = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBESnowSearch_X64, sizeof(KBESnowSearch_X64));
  31.     NumML  = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEMLSearch, sizeof(KBEMLSearch));
  32.     NumYos = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEYosSearch, sizeof(KBEYosSearch));
  33.     NumSie = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBESieDP2Search, sizeof(KBESieDP2Search));
  34.   } else {
  35.     NumLion_i386 = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBELionSearch_i386, sizeof(KBELionSearch_i386));
  36.     NumSnow_i386 = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBESnowSearch_i386, sizeof(KBESnowSearch_i386));
  37.   }
  38.   
  39.   if (NumSnow_X64 + NumSnow_i386 + NumLion_X64 + NumLion_i386 + NumML + NumYos + NumSie > 1) {
  40.     // more then one pattern found - we do not know what to do with it
  41.     // and we'll skipp it
  42.           AsciiPrint("\nERROR patching kernel for injected kexts:\nmultiple patterns found (LionX64: %d, Lioni386: %d, ML: %d) - skipping patching!\n",
  43.                NumLion_X64, NumLion_i386, NumML);
  44.           gBS->Stall(10000000);
  45.           return;
  46.   }
  47.   
  48.   if (NumML == 1) {
  49.     Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEMLSearch, sizeof(KBEMLSearch), KBEMLReplace, 1);
  50.     DBG_RT(Entry, "==> kernel OS X64: %d replaces done.\n", Num);
  51.   }
  52.   else if (NumSie == 1) {
  53.       Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBESieDP2Search, sizeof(KBESieDP2Search), KBESieDP2Replace, 1) +
  54.             SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBESieSearch, sizeof(KBESieSearch), KBESieReplace, 1);
  55.       DBG_RT(Entry, "==> kernel Sierra: %d replaces done.\n", Num);
  56.       
  57.   }
  58.   else if (NumYos == 1) {
  59.       Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEYosSearch, sizeof(KBEYosSearch), KBEYosReplace, 1) +
  60.             SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEECSearch, sizeof(KBEECSearch), KBEECReplace, 1) +
  61.             /* Micky1979, was a pain to place F/R here */
  62.             SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBESieSearch, sizeof(KBESieSearch), KBESieReplace, 1);
  63.             DBG_RT(Entry, "==> kernel Yosemite/El Capitan/Sierra(DP1): %d replaces done.\n", Num);

  64.   }
  65.   else if (NumLion_i386 == 1) {
  66.           Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBELionSearch_i386, sizeof(KBELionSearch_i386), KBELionReplace_i386, 1);
  67.     DBG_RT(Entry, "==> Lion i386: %d replaces done.\n", Num);
  68.   }
  69.   else if (NumLion_X64 == 1) {
  70.           Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBELionSearch_X64, sizeof(KBELionSearch_X64), KBELionReplace_X64, 1);
  71.     DBG_RT(Entry, "==> Lion X64: %d replaces done.\n", Num);
  72.   }
  73.   else if (NumSnow_X64 == 1) {
  74.           Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBESnowSearch_X64, sizeof(KBESnowSearch_X64), KBESnowReplace_X64, 1);
  75.           DBG_RT(Entry, "==> Snow X64: %d replaces done.\n", Num);
  76.   }
  77.   else if (NumSnow_i386 == 1) {
  78.           Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBESnowSearch_i386, sizeof(KBESnowSearch_i386), KBESnowReplace_i386, 1);
  79.     DBG_RT(Entry, "==> Snow i386: %d replaces done.\n", Num);
  80.   }
  81.   else {
  82.     DBG_RT(Entry, "==> ERROR: NOT patched - unknown kernel.\n");
  83.   }
  84.   
  85.   if (Entry->KernelAndKextPatches->KPDebug) {
  86.     DBG_RT(Entry, "Pausing 5 secs ...\n");
  87.     gBS->Stall(5000000);
  88.   }
  89. }
复制代码


Vanilla.

UID
4568967
帖子
13702
PB币
33049
贡献
0
技术
94
活跃
2664

巡察使 十一周年

发表于 2016-7-6 16:39:31 |显示全部楼层
pcj 发表于 2016-7-6 16:34
在我這他這個一點效果都沒有.我改的如下:

oops 好奇怪的現象...
要是按你的改法 那麼就是:
  1. perl -pi -e 's|\xe8\x25\x00\x00\x00\xeb\x05\xe8\x7e\x05\x00\x00|\xe8\x25\x00\x00\x00\x90\x90\xe8\x7e\x05\x00\x00|g' kernel
复制代码
只不過現在沒有條件測試... 黑果要過些天才能折騰

歪樓團 - 小兵一

UID
983256
帖子
1959
PB币
7917
贡献
3
技术
1
活跃
1085

远景技术达人

发表于 2016-7-6 16:47:37 |显示全部楼层
口袋妖怪heart 发表于 2016-7-6 16:39
oops 好奇怪的現象...
要是按你的改法 那麼就是:
只不過現在沒有條件測試... 黑果要過些天才能折騰

你搞錯了.
正確的patch有兩段.
10.12 DP2
第一段是KBESieDP2Search ==> KBESieDP2Replace.
第二段是KBESieSearch ==> KBESieReplace.
10.12 DP1
第一段是KBEYosSearch ==> KBEYosReplace.
第二段是KBESieSearch ==> KBESieReplace.
10.11 是
第一段是KBEYosSearch ==> KBEYosReplace.
第二段是KBEECSearch ==> KBEECReplace.

Rank: 5Rank: 5Rank: 5

UID
4764657
帖子
667
PB币
0
贡献
0
技术
0
活跃
806
发表于 2016-7-6 16:49:21 |显示全部楼层
pcj 发表于 2016-7-6 16:24
我是先升級後卡住,再將fakesmc.kext放至/S/L/E下還是無法加載fakesmc.kext.
所以才去改這個的.

我在升级之前 就驱动放到sle下并且重建缓冲后 重启电脑才更新的

Rank: 5Rank: 5Rank: 5

UID
847228
帖子
503
PB币
46
贡献
0
技术
0
活跃
1045
发表于 2016-7-6 16:51:42 |显示全部楼层
不错不错启动了

Vanilla.

UID
4568967
帖子
13702
PB币
33049
贡献
0
技术
94
活跃
2664

巡察使 十一周年

发表于 2016-7-6 16:57:47 |显示全部楼层
pcj 发表于 2016-7-6 16:47
你搞錯了.
正確的patch有兩段.
10.12 DP2

好吧。。感謝指正 :)
头像被屏蔽

Rank: 2Rank: 2

UID
2418304
帖子
233
PB币
0
贡献
0
技术
0
活跃
197
发表于 2016-7-6 17:01:54 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

Rank: 7Rank: 7Rank: 7

UID
4583288
帖子
1585
PB币
1234
贡献
0
技术
0
活跃
1480
发表于 2016-7-6 17:02:15 |显示全部楼层
灰常有效!解决我这边升级db2的问题,感谢哈~~

Vanilla.

UID
4568967
帖子
13702
PB币
33049
贡献
0
技术
94
活跃
2664

巡察使 十一周年

发表于 2016-7-6 17:02:20 |显示全部楼层
pcj 发表于 2016-7-6 16:47
你搞錯了.
正確的patch有兩段.
10.12 DP2

只討論10.12 DP2先~
那麼就是:

  1. perl -pi -e 's|\xC3\x48\x85\xDB\x74\x71\x48\x8B\x03\x48\x89\xDF\xFF\x50\x28\x48|\xC3\x48\x85\xDB\xEB\x12\x48\x8B\x03\x48\x89\xDF\xFF\x50\x28\x48|g' kernel
复制代码
and

  1. perl -pi -e 's|\xe8\x25\x00\x00\x00\xeb\x05\xe8\x7e\x05\x00\x00|\xe8\x25\x00\x00\x00\x90\x90\xe8\x7e\x05\x00\x00|g' kernel
复制代码


這樣子對吧?

歪樓團 - 小兵一

UID
983256
帖子
1959
PB币
7917
贡献
3
技术
1
活跃
1085

远景技术达人

发表于 2016-7-6 17:04:26 |显示全部楼层
口袋妖怪heart 发表于 2016-7-6 17:02
只討論10.12 DP2先~
那麼就是:

對的.      
1

查看全部评分

Vanilla.

UID
4568967
帖子
13702
PB币
33049
贡献
0
技术
94
活跃
2664

巡察使 十一周年

发表于 2016-7-6 17:07:04 |显示全部楼层
pcj 发表于 2016-7-6 17:04
對的.

那麼或許我已經了解了,3585 slice應該只執行了他的新patch 而deprecate掉原先的patch了。
你的原理是原先DP1的patch + 你的新patch。

歪樓團 - 小兵一

UID
983256
帖子
1959
PB币
7917
贡献
3
技术
1
活跃
1085

远景技术达人

发表于 2016-7-6 17:16:27 |显示全部楼层
口袋妖怪heart 发表于 2016-7-6 17:07
那麼或許我已經了解了,3585 slice應該只執行了他的新patch 而deprecate掉原先的patch了。
你的原理是原 ...

不是.
3585的code.要能執行patch.前提是要先搜尋到KBEYosSearch這個值.
他加了KBESieDP2Search但是還是搜尋不到KBEYosSearch這個值.
所以patch是不會執行的.
依據以前kernel的code來說. KBEYosSearch代表kernelcache加載後單獨讀取extension的部分.
KBEECSearch應該是修改讀取路徑的.
我修改的KBESieDP2Search是取代KBEYosSearch這個值的.
1

查看全部评分

Vanilla.

UID
4568967
帖子
13702
PB币
33049
贡献
0
技术
94
活跃
2664

巡察使 十一周年

发表于 2016-7-6 17:23:35 |显示全部楼层
pcj 发表于 2016-7-6 17:16
不是.
3585的code.要能執行patch.前提是要先搜尋到KBEYosSearch這個值.
他加了KBESieDP2Search但是還是 ...

看字面意味 KBEYosSearch 這個是yosemite的二進位制替換data?
我記得每個大版本都會改不同...
关闭

站长推荐

已经开启实名认证了哟
这里可以进行实名操作:点我点我点我
回顶部
Copyright (C) 2005-2019 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛 | 电脑硬件 | 安卓软件