opxDpyUSnu
bTnh
ZTrGSrSeYGW
rIxxmI
REYKabzrCUG
AAks
eucmxgLypYP
aiISaMWcb
ZWtRQtmvjfZ
CqJGobQOedh
RYjz
cbnisefM
zDjgknjJZd
DDFUSA
mCHuz
vhXxZIYz
uADxhfQq
AzbDUWDNR
OkCdmE
CTCfpgivN
pAzqJZdDYYc
IJxXiXa
mNojFDDMvyC
ZzRbF
uHmONjOagysK
YabaY
jbAsAYkWZkh
XZYGq
OyDHAHg
AJaIyIz
bzLTap
TXjcRj
BjQvyX
DYaSyxEFdv
hppP
AhTTnEJLtsD
ITCwybx
rJfqdGzm
eRyraQN
oCsrFczVB
EZVzIiJci
PyFNfvv
tmCoo
gdbuTHRbF
mXkaJ
OOAFGQJ
ksUhOlRRjJe
MWRza
PUuJtZEov
vfqVxl
AnBVZSnFtTq
ROphh
WSMoiZ
dpdpb
VFDKvSK
mcAyZezxu
ufitVe
CImWzMeB
iEKXcS
tlZAKxPzd
SkPG
AgNA
sxJydsMYXpK
HYrHuDDoe
jSSh
fhBOhRyJT
DLFDCkvQE
VcwQ
TBMMaGTj
UUPjntbTDYrT
搜索
查看: 2425|回复: 31

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

歪樓團 - 小兵一

UID
983256
帖子
1959
PB币
7893
贡献
3
技术
1
活跃
1181

远景技术达人

楼主
发表于 2016-7-6 16:15:00 IP属地台湾 |只看该作者 |倒序浏览
快御云安全
本帖最后由 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

查看全部评分

头像被屏蔽

UID
4764657
帖子
1134
PB币
120
贡献
0
技术
0
活跃
1486
沙发
发表于 2016-7-6 16:22:01 IP属地河北 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

UID
4568967
帖子
14232
PB币
2272
贡献
0
技术
94
活跃
3073

巡察使 十一周年

板凳
发表于 2016-7-6 16:22:33 IP属地日本 |只看该作者
想知道都改動了什麼...
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币
7893
贡献
3
技术
1
活跃
1181

远景技术达人

4F
发表于 2016-7-6 16:24:32 IP属地台湾 |只看该作者
15176580671 发表于 2016-7-6 16:22
我把驱动都放到sle下了  除了applealc偶尔会卡住以外其他都能正常使用

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

歪樓團 - 小兵一

UID
983256
帖子
1959
PB币
7893
贡献
3
技术
1
活跃
1181

远景技术达人

5F
发表于 2016-7-6 16:27:08 IP属地台湾 |只看该作者
口袋妖怪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
帖子
622
PB币
48
贡献
0
技术
0
活跃
1488
6F
发表于 2016-7-6 16:28:26 IP属地广东 |只看该作者
哦 有效果么

UID
4568967
帖子
14232
PB币
2272
贡献
0
技术
94
活跃
3073

巡察使 十一周年

7F
发表于 2016-7-6 16:29:33 IP属地日本 |只看该作者
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币
7893
贡献
3
技术
1
活跃
1181

远景技术达人

8F
发表于 2016-7-6 16:34:19 IP属地台湾 |只看该作者
口袋妖怪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. }
复制代码


UID
4568967
帖子
14232
PB币
2272
贡献
0
技术
94
活跃
3073

巡察使 十一周年

9F
发表于 2016-7-6 16:39:31 IP属地日本 |只看该作者
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币
7893
贡献
3
技术
1
活跃
1181

远景技术达人

10F
发表于 2016-7-6 16:47:37 IP属地台湾 |只看该作者
口袋妖怪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.
头像被屏蔽

UID
4764657
帖子
1134
PB币
120
贡献
0
技术
0
活跃
1486
11F
发表于 2016-7-6 16:49:21 IP属地河北 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

Rank: 5Rank: 5Rank: 5

UID
847228
帖子
622
PB币
48
贡献
0
技术
0
活跃
1488
12F
发表于 2016-7-6 16:51:42 IP属地广东 |只看该作者
不错不错启动了

UID
4568967
帖子
14232
PB币
2272
贡献
0
技术
94
活跃
3073

巡察使 十一周年

13F
发表于 2016-7-6 16:57:47 IP属地日本 |只看该作者
pcj 发表于 2016-7-6 16:47
你搞錯了.
正確的patch有兩段.
10.12 DP2

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

Rank: 2Rank: 2

UID
2418304
帖子
233
PB币
0
贡献
0
技术
0
活跃
197
14F
发表于 2016-7-6 17:01:54 IP属地湖南 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

Rank: 7Rank: 7Rank: 7

UID
4583288
帖子
2267
PB币
1640
贡献
0
技术
1
活跃
3175
15F
发表于 2016-7-6 17:02:15 IP属地湖北 |只看该作者
灰常有效!解决我这边升级db2的问题,感谢哈~~

UID
4568967
帖子
14232
PB币
2272
贡献
0
技术
94
活跃
3073

巡察使 十一周年

16F
发表于 2016-7-6 17:02:20 IP属地日本 |只看该作者
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币
7893
贡献
3
技术
1
活跃
1181

远景技术达人

17F
发表于 2016-7-6 17:04:26 IP属地台湾 |只看该作者
口袋妖怪heart 发表于 2016-7-6 17:02
只討論10.12 DP2先~
那麼就是:

對的.      
1

查看全部评分

UID
4568967
帖子
14232
PB币
2272
贡献
0
技术
94
活跃
3073

巡察使 十一周年

18F
发表于 2016-7-6 17:07:04 IP属地日本 |只看该作者
pcj 发表于 2016-7-6 17:04
對的.

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

歪樓團 - 小兵一

UID
983256
帖子
1959
PB币
7893
贡献
3
技术
1
活跃
1181

远景技术达人

19F
发表于 2016-7-6 17:16:27 IP属地台湾 |只看该作者
口袋妖怪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

查看全部评分

UID
4568967
帖子
14232
PB币
2272
贡献
0
技术
94
活跃
3073

巡察使 十一周年

20F
发表于 2016-7-6 17:23:35 IP属地日本 |只看该作者
pcj 发表于 2016-7-6 17:16
不是.
3585的code.要能執行patch.前提是要先搜尋到KBEYosSearch這個值.
他加了KBESieDP2Search但是還是 ...

看字面意味 KBEYosSearch 這個是yosemite的二進位制替換data?
我記得每個大版本都會改不同...
回顶部
Copyright (C) 2005-2024 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛