Win10论坛

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

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

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

搜索
查看: 91862|回复: 990

[教程] 一劳永逸!更新不再替换Kext(Kexts to patch)教程     [复制链接]

远景FANS

UID
424619
帖子
4181
PB币
533
贡献
0
技术
741
活跃
2185

巡察使 我是大学生!

发表于 2015-2-18 17:03:42 |显示全部楼层
本帖最后由 syscl 于 2015-2-28 14:03 编辑

本文没有什么技术含量,只是在PCBeta(远景),没有一篇介绍给内核扩展(Kext)打补丁、修改的教程,结合自己的心得,分享给远景的朋友们。谢绝转载到远景之外的任何地方。


给内核扩展打补丁,能开启系统中被限制的功能,更接近白苹果。例如修改IOAHCIBlockStorage.kext后,可以开启第三方固态硬盘(SSD)的Trim功能、修改AppleRTC.kext解决重置BIOS的问题、修改AppleHDA.kext驱动音频......



优点:


一劳永逸:系统更新会伴随着内核扩展(Kexts)的更新,导致我们以往所做的修改失效。现在,我们不用担心系统更新导致的修改失效(除非Kext进行了重大改动)。


使用的是系统最新的驱动程序,而不用回滚到旧版本。


不需要重建缓存池。


没有破坏系统中内核扩展的完整性。(可以在『系统信息』—『功能扩展』当中看到,被修改的软件『签署方』)



需要:


  • 含有Kextstopatch功能的Clover (如果采用其他引导工具,则忽略此项)
  • 编辑Clover配置文件(Config.plist)的程序(例如XcodePlistEdit Pro、Clover Configurator...
  • 采用其他引导工具的朋友(Chameleon、XPC、Ozmosis...)若需要修改Info.plist文件,则需要FakeSMC.kext


在进行操作前,有必要粗略的了解ASCII码。以修改IOAHCIBlockStorage.kext为例:


打开『终端机』,输入

  1. hexdump -C /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage
复制代码


显示结果分为三列,文件偏移量字节的十六进制ASCII字符。例如说,我要替换掉APPLE SSD这个字符串以实现Trim功能,只需要用『空字符NUL(Null)』替代『APPLE SSD』。


『APPLE SSD』每个字所对应的十六进制是『41』『50』『50』『4c』『45』『20』『53』『53』『44』,摘录成『4150504c4520535344』。用空字符(NUL)去替换每个对应的字,就是『00』『00』『00』『00』『00』『00』『00』『00』『00』,摘录成『000000000000000000』。我们依次把需要替换字符的十六进制、更改后字符的十六进制分别贴入到Clover Configuration当中即可。




为了加强理解,再看一例。让AppleHDA.kext加载修改的Platform.zml.zlib文件。系统在启动的过程中会读取『AppleHDA.kext/Contents/Resources/』下面的xml.zl文件,而我们却希望AppleHDA读取

我们修改的zml.zl以驱动音频。


技巧:

1. 关于查看文件十六进制,在『终端机』中输入hexdump -C之后展开『AppleHDA.kext/Contents/MacOS/』将AppleHDA文件拖入到终端机中即可。

  1. hexdump -C  /System/Library/Extensions/AppleHDA.kext/Contents/MacOS/AppleHDA
复制代码

2.『搜索特定字符串,『终端机』中利用组合键『Command+F』』




2.  『xml.zl』6个字符对应的十六进制是『78』『6d』『6c』『2e』『7a』『6c』,摘录成『786d6c2e7a6c』而『zml.zl』6个字符对应的十六进制是『7a』『6d』『6c』『2e』『7a』『6c』,摘录成『7a6d6c2e7a6c』。依次把需要替换字符的十六进制、更改后字符的十六进制分别贴入到Clover Configuration当中即可。




或用『PlistEdit Pro』来配置Clover的Config.plist:



展开『KernelAndKextPatches』,选中『KextsToPatch』并右键,选中『New Child』以创建子项


在创建好的子项『Child』下面填入:


  • Find,类型:Data,值:786d6c2e7a6c
  • Name,类型:String,值:AppleHDA
  • Replace,类型:Data,值:7a6d6c2e7a6c



当然,如果你熟悉Base64,plist的构成 ,也可以抛弃Clover Configurator,Xcode,PlistEdit Pro,直接用『文本编辑器』编辑Config.plist。把『786d6c2e7a6c』转换成『eG1sLnps』,『7a6d6c2e7a6c』转换成『em1sLnps』,然后贴入即可。



当遇到修改Info.plist时:


以修改『AppleGraphicsPowerManagement.kext』实现显卡降频为例。


在终端中输入:

  1. hexdump -C /System/Library/Extensions/AppleGraphicsPowerManagement.kext/Contents/Info.plist
复制代码



找到要替换的显卡ID,例如把『Device0fea』替换成『Device0402』。『Device0fea』字对应的十六进制值分别是『44』『65』『76』『69』『63』『65』『30』『66』『65』『61』,摘录成『44657669636530666561』。『Device0402』字的十六进制值分别是『44』『65』『76』『69』『63』『65』『30』『34』『30』『32』,摘录成『44657669636530343032』。依次把需要替换字符的十六进制、更改后字符的十六进制分别贴入到Clover Configuration当中,并勾选『InfoPlist Patch』。

重建缓存后,重启两次即可。


当然,我们还有更好的方法去加载AGPM,那就是通过FakeSMC.kext。利用FakeSMC.kext可以抛弃Clover,转而采用其他的引导工具(例如Chameleon、XPC、Ozmosis...)也不需要重新建立缓存。以iMac 14,2(Mac-27ADBB7B4CEE8E61)加载Geforce 8600 GT(VenderID 0402)为例。只需要:


       <i>从『AppleGraphicsPowerManagement.kext/Contents/Info.plist』中复制出『IOKitPersonalities』下面的『AGPM』,粘贴到『FakeSMC.kext/Contents/Info.plist』下的『IOKitPersonalities』。


        <ii>在刚才粘贴的项目下面,找到『Machines/Mac-27ADBB7B4CEE8E61/』,把『Vendor10deDevice0fea』改成『Vendor10deDevice0402


成功加载后,我们可以看到签署方是漂亮的『Software Signing, Apple Code Signing Certification Authority, Apple Root CA』,而非『未知』。这也表明,这种加载方式不破坏系统内核扩展的完整性。



////



一些修改的模板和参考

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

点评

JAMESM5  syscl ,我有个问题:利用FakeSMC.kext加载AppleGraphicsPowerManagement.kext,我发现我的机型Mac-C3EC7CD22292981F下并没有类似的Vendor10deDeviceXXXX那么该如何添加我的显卡ID?尝试随便添加修改,未果,求解  发表于 2015-4-11 19:41
22

查看全部评分

远景FANS

UID
424619
帖子
4181
PB币
533
贡献
0
技术
741
活跃
2185

巡察使 我是大学生!

发表于 2015-2-18 17:04:06 |显示全部楼层
本帖最后由 syscl 于 2015-2-18 17:16 编辑

附上十六进制(Hex*)与字符(ASCII)转换表
十六进制(Hex*)

ASCII(字符)

含义

0

NUL(null)

空字符

1

SOH(start of  headling)

标题开始

2

STX (start of text)

正文开始

3

ETX (end of text)

正文结束

4

EOT (end of  transmission)

传输结束

5

ENQ (enquiry)

请求

6

ACK (acknowledge)

收到通知

7

BEL (bell)

响铃

8

BS (backspace)

退格

9

HT (horizontal tab)

水平制表符

0A

LF (NL line feed, new  line)

换行键

0B

VT (vertical tab)

垂直制表符

0C

FF (NP form feed, new  page)

换页键

0D

CR (carriage return)

回车键

0E

SO (shift out)

不用切换

0F

SI (shift in)

启用切换

10

DLE (data link  escape)

数据链路转义

11

DC1 (device control  1)

设备控制1

12

DC2 (device control  2)

设备控制2

13

DC3 (device control  3)

设备控制3

14

DC4 (device control  4)

设备控制4

15

NAK (negative  acknowledge)

拒绝接收

16

SYN (synchronous  idle)

同步空闲

17

ETB (end of trans.  block)

传输块结束

18

CAN (cancel)

取消

19

EM (end of medium)

介质中断

1A

SUB (substitute)

替补

1B

ESC (escape)

溢出

1C

FS (file separator)

文件分割符

1D

GS (group separator)

分组符

1E

RS (record separator)

记录分离符

1F

US (unit separator)

单元分隔符

20

(space)

空格

21

!

22

"

23

#

24

$

25

%

26

&

27

'

28

(

29

)

2A

*

2B

+

2C

,

2D

-

2E

.

2F

/

30

0

31

1

32

2

33

3

34

4

35

5

36

6

37

7

38

8

39

9

3A

:

3B

;

3C

<

3D

=

3E

>

3F

?

40

@

41

A

42

B

43

C

44

D

45

E

46

F

47

G

48

H

49

I

4A

J

4B

K

4C

L

4D

M

4E

N

4F

O

50

P

51

Q

52

R

53

S

54

T

55

U

56

V

57

W

58

X

59

Y

5A

Z

5B

[

5C

\

5D

5E

^

5F

_

60

`

61

a

62

b

63

c

64

d

65

e

66

f

67

g

68

h

69

i

6A

j

6B

k

6C

l

6D

m

6E

n

6F

o

70

p

71

q

72

r

73

s

74

t

75

u

76

v

77

w

78

x

79

y

7A

z

7B

{

7C

|

7D

}

7E

~

7F

DEL (delete)

删除


远景FANS

UID
424619
帖子
4181
PB币
533
贡献
0
技术
741
活跃
2185

巡察使 我是大学生!

发表于 2015-2-18 17:04:22 |显示全部楼层
本帖最后由 syscl 于 2015-3-4 15:45 编辑

成功案例(节选):
wagsin成功驱动AMD R9 270X_BF:http://bbs.pcbeta.com/forum.php? ... ;page=1#pid43045269





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

点评

maojinbing  需要两处吗?不是重复了吗  发表于 2015-6-25 10:05

远景FANS

UID
424619
帖子
4181
PB币
533
贡献
0
技术
741
活跃
2185

巡察使 我是大学生!

发表于 2015-2-18 17:04:58 |显示全部楼层
占楼备用。望版主谅解

苦逼的医学生。。。考试月勿扰,扣扣一概不回!

Rank: 11Rank: 11Rank: 11

UID
2043294
帖子
4557
PB币
318
贡献
0
技术
151
活跃
2044

7周年庆典勋章 8周年庆典勋章 我是大学生!

发表于 2015-2-18 17:08:40 |显示全部楼层
前排广告位招租。。。

Rank: 7Rank: 7Rank: 7

UID
628545
帖子
2082
PB币
2490
贡献
0
技术
36
活跃
1468
发表于 2015-2-18 17:19:25 |显示全部楼层
这个要支持,收下慢慢研究!

Rank: 2Rank: 2

UID
3308878
帖子
350
PB币
815
贡献
0
技术
126
活跃
285
发表于 2015-2-18 17:29:38 来自手机 |显示全部楼层
强力支持一下,这个是好东西,正在使用,还有到更多功能再学习

FM星人

Rank: 2Rank: 2

UID
3383977
帖子
313
PB币
6
贡献
0
技术
4
活跃
313

我是大学生!

发表于 2015-2-18 17:31:53 |显示全部楼层
感谢分享!

Rank: 2Rank: 2

UID
1516003
帖子
240
PB币
827
贡献
0
技术
21
活跃
239

8周年庆典勋章

发表于 2015-2-18 18:12:05 |显示全部楼层
收下有时间慢慢研究,大家过年好!

Rank: 7Rank: 7Rank: 7

UID
564458
帖子
1373
PB币
41
贡献
0
技术
17
活跃
1977
发表于 2015-2-18 18:20:12 |显示全部楼层
好东西支持一个

Rank: 7Rank: 7Rank: 7

UID
1215211
帖子
1004
PB币
686
贡献
0
技术
37
活跃
617
发表于 2015-2-18 18:25:33 |显示全部楼层
想做又不太有把握,试试这个。

Rank: 2Rank: 2

UID
2937330
帖子
130
PB币
1
贡献
0
技术
0
活跃
698
发表于 2015-2-18 18:40:15 |显示全部楼层
支持@@@!!!

Rank: 7Rank: 7Rank: 7

UID
1588829
帖子
2456
PB币
2049
贡献
0
技术
97
活跃
1885
发表于 2015-2-18 18:50:06 |显示全部楼层
好,留个记号。

Rank: 7Rank: 7Rank: 7

UID
624881
帖子
2921
PB币
13002
贡献
0
技术
49
活跃
2566

8周年庆典勋章

发表于 2015-2-18 19:22:23 |显示全部楼层
支持一个

Rank: 7Rank: 7Rank: 7

UID
2597906
帖子
1530
PB币
59
贡献
0
技术
131
活跃
1505
发表于 2015-2-18 19:25:15 来自手机 |显示全部楼层
syscl 发表于 2015-2-18 17:04
附上十六进制(Hex*)与字符(ASCII)转换表

支持一个留来慢慢研究下

Rank: 7Rank: 7Rank: 7

UID
120666
帖子
2768
PB币
3695
贡献
0
技术
2
活跃
1407

Win10先驱者

发表于 2015-2-18 20:27:19 |显示全部楼层
这个好啊,收藏了,慢慢照着改!

无法触及的手 从未冰封的心

Rank: 7Rank: 7Rank: 7

UID
2819285
帖子
1053
PB币
321
贡献
0
技术
1
活跃
571

Win10先驱者 十周年

发表于 2015-2-18 20:31:17 |显示全部楼层
学习了   谢谢楼主

Rank: 9

UID
262174
帖子
3146
PB币
301
贡献
0
技术
181
活跃
1802
发表于 2015-2-18 20:39:22 |显示全部楼层
好东西支持!!

Rank: 5Rank: 5Rank: 5

UID
1082922
帖子
838
PB币
826
贡献
0
技术
0
活跃
1259
发表于 2015-2-18 21:19:28 |显示全部楼层
黑苹果真心折腾,尤其像我这样的小白!

Rank: 2Rank: 2

UID
1187473
帖子
278
PB币
3436
贡献
0
技术
30
活跃
955
发表于 2015-2-18 21:38:53 来自手机 |显示全部楼层
强烈支持这么好的教程,感谢楼主分享!祝大家新年快乐!!!
回顶部
Copyright (C) 2005-2019 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛 | 电脑硬件 | 安卓软件