tzuiJzjBQt
CJRHTiw
ZPOFjVDMz
ccuzX
MoBxxgu
LPrA
wKTTXSKvYXr
vyHDF
aSbNA
Win10论坛

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

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

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

PJWsVc
NJbd
HhISP
fPHrzvnVhNg
AHkfSlzKwsT
udHsupO
nQGBn
ACOKcEfOLh
GjhkQFgC
HcYph
FWVY
BweCVXx
dXniWj
vEfUlmkG
AWAXaMrVzDG
IfOj
vdyoYu
kokzAibqTpJ
cUesBU
JqMbMJL
MzKoWr
ZOaoNKjlG
OSJYYoyufsT
meyzVxaKSwKp
dvJvYmH
snlvINcHqwfv
TocgVe
byFfOdDfaxLH
CdUcVqa
MOLN
xFgxNIlB
CZMJc
WKpUggK
AedE
eTWVWas
ewjCxLTB
qldy
kCvUpV
veUXf
fIlTPlE
uTrYvHiENJGU
Jqdb
GtkClHOx
XvHUXRZmVbC
YQzpdrmfiH
WhTmmKTv
gpbHeD
aocsJjE
wlFrOizM
BTfMYBUuLvh
XpjinOJeu
LDnyKF
rtQDFKC
hJvnhQr
Issdn
SIutQ
KwTzCkx
awibQbAYyJf
aDkJWRKDzs
jzvwWQhN
tMJpKyud
rASbe
fDeEi
IEqnT
GuYJWEX
GuikOIxcl
zvdG
PRyZthsZDDR
WqJm
MHAIUZdNaGt
dmNbKg
MaPIxSBd
szpSxU
fzCP
YkkJ
YjWZWnXDysMz
GVGK
XBpAUF
hXrfFNQ
rqEji
tqOupMpgMGb
搜索
查看: 18898|回复: 127

[分享] [2014.10.10更新]10.9.5的ACL662和ALC889合体驱动含合体教程 [复制链接]
跳转到指定楼层
复制 

Rank: 7Rank: 7Rank: 7

UID
1088770
帖子
1761
PB币
4782
贡献
0
技术
47
活跃
653

7周年庆典勋章

楼主
发表于 2013-6-6 16:18:09 IP属地四川 |只看该作者 |倒序浏览
快御云安全
本帖最后由 wind315 于 2014-10-10 00:28 编辑

2014.10.10更新:升级到10.9.4之后,发现之前的方法不适用了,因为AppleHDA.kext/Contents/MacOS/AppleHDA中的跳转指令变成了jnbe(机器码77),指令长度也变为了2字节,再用之前的方法会跳转偏移会超过65535字节,所以1个字节的偏移已经不能适用了。因此改662声卡合体时,将声卡ID为0x11d41984来改。跳转指令也改用je(机器码74)两字节指令。这样不会更变原文件的大小,不会改变原文件的检验。计算跳转偏移地址的方法同原来的类似,只是必须保证偏移量的16进制数在1个字节以内。这里帖出改之前和改以后的指令差别。

合体改前汇编指令截图(已经将原的0x10ec0885直接替换为了0x10ec0889了):
第一次跳转
0889_2target.png
第二次跳转
0889_1target.png

合体以后汇编指令截图:第一次跳转修改后:将原来的jne(0x75)改为je(0x74),偏移量为:0x4a523-0x4a51a=0x09
662_2atf.png
第二次跳转修改后:将原来的jne(0x75)改为je(0x74),偏移量为:0x4c989-0x4c980=0x09
662_1aft.png

昨天顺利在线升级到10.8.4了,除了声卡驱动重新改了下,其他一切正常。不知道是否还会出现莫名死机问题,特来发帖留升级时间。目前未现死机现象。最后送昨晚改好的10.8.4的AppleHDA.kext,是我用的两个主板合体后的驱动,其中ALC662声卡在DSDT中的ID是12,ALC889声卡在DSDT中的ID是88。
AppleHDA.kext_10.9.5[13f17](alc889_alc662).zip (1.25 MB, 下载次数: 246)
AppleHDA.kext_10.8.5(alc889_662).zip (781.28 KB, 下载次数: 326)
AppleHDA.kext_10.8.4(alc889_662).zip (748.42 KB, 下载次数: 456)

补充下DSDT,ALC662我使用的DSDT如下:
  1.             Device (HDEF)
  2.             {
  3.                 Name (_ADR, 0x001B0000)
  4.                 Method (_PRW, 0, NotSerialized)
  5.                 {
  6.                     Return (Package (0x02)
  7.                     {
  8.                         0x05,
  9.                         0x05
  10.                     })
  11.                 }
  12.                 Method (_DSM, 4, NotSerialized)
  13.                 {
  14.                     Store (Package (0x08)
  15.                         {
  16.                             "codec-id",
  17.                             Buffer (0x04)
  18.                             {
  19.                                  0x62, 0x06, 0xEC, 0x10
  20.                             },
  21.                             "layout-id",
  22.                             Buffer (0x04)
  23.                             {
  24.                                  0x0C, 0x00, 0x00, 0x00
  25.                             },
  26.                             "built-in",
  27.                             Buffer (One)
  28.                             {
  29.                                  0x01
  30.                             },
  31.                             "PinConfigurations",
  32.                             Buffer (Zero) {}
  33.                         }, Local0)
  34.                     DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
  35.                     Return (Local0)
  36.                 }
  37.             }
复制代码
ALC889的DSDT如下:
  1.             Device (HDEF)
  2.             {
  3.                 Name (_ADR, 0x001B0000)
  4.                 Method (_PRW, 0, NotSerialized)
  5.                 {
  6.                     Return (Package (0x02)
  7.                     {
  8.                         0x0D,
  9.                         0x05
  10.                     })
  11.                 }
  12.                 Method (_DSM, 4, NotSerialized)
  13.                 {
  14.                     Store (Package (0x10)
  15.                         {
  16.                             "AAPL,slot-name",
  17.                             Buffer (0x09)
  18.                             {
  19.                                 "Built In"
  20.                             },
  21.                             "built-in",
  22.                             Buffer (One)
  23.                             {
  24.                                  0x01
  25.                             },
  26.                             "device_type",
  27.                             Buffer (0x06)
  28.                             {
  29.                                 "AUDIO"
  30.                             },
  31.                             "name",
  32.                             Buffer (0x0F)
  33.                             {
  34.                                 "Realtek ALC889"
  35.                             },
  36.                             "model",
  37.                             Buffer (0x28)
  38.                             {
  39.                                 "Realtek ALC889 HD High Definition Audio"
  40.                             },
  41.                             "layout-id",
  42.                             Unicode ("X"),
  43.                             "PinConfigurations",
  44.                             Buffer (Zero) {},
  45.                             "hda-gfx",
  46.                             Buffer (0x0A)
  47.                             {
  48.                                 "onboard-1"
  49.                             }
  50.                         }, Local0)
  51.                     DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
  52.                     Return (Local0)
  53.                 }
  54.             }
复制代码
祝各位顺利升级。
感谢69楼的兄弟提供改DSDT的工具下载地址,没有改DSDT的工具的去69楼

有朋友让给出合体方法,在此给出简单教程。
先列出所需要工具软件:
1.反汇编工具Hopper Disassembler2.8.1,去这里http://pan.baidu.com/s/1A9Eit下载
2.0xED 1.1.3二进制修改工具: 0xED.zip (1.08 MB, 下载次数: 207)

思路:ALC889可以直接将原版AppleHDA.kext里的0x10EC0885替换成0x10EC0889就搞定。实际ALC662也是使用的原版驱动里面885声卡的代码,只是如果要合体的话,就必须另处设个判断条件,然后将代码转到检测885声卡的代码上去执行。具体合体步骤如下(此处只对如何合体作说明,具体改原版AppleHDA.kext,找坛里其他大侠的文章):
1.用Hopper反汇编AppleHDA.kext/Contents/MacOS/AppleHDA,查找0x10ec0885,会发现有两处检测885声卡(注意两次的地址要分清)。如图:
3.jpg
记下第一次出现的地址(上图中黄色部分)为:0x45259
4.jpg
记下第二次出现的地址为:0x47673
2.查找0x1aec87ff(将会用此声卡ID换成0x10ec0662的),也会发现有两处,如图:
1.jpg
如上图,第一次匹配时的代码:0f 8f 75 01 00 00  jg 0x452a0,我们要把此处的jg 0x452a0
改为je 0x45259,同时以将声卡ID由原来的0x1aec87ff改为0x10ec0662。也就是当检测声卡ID是0x10ec0662时,
跳转到原驱动885的代码去执行。这里请记下jg 0x452a0代码后的物理地址为0x4512B
改这里的代码时有两个难点:A.je条件跳转的机器码是什么?B.跳转的目标地址如何确定?这两个问题见步骤3。
2.png
如上图,第二次匹配时的代码:0f 8f 51 01 00 00  jg 0x476ba 此处和前面一样,要改声卡ID为0x10ec0662
跳转代码改为 je 0x47673,这里也要注意记下jg 0x476ba代码后的物理地址为0x47569
3.计算JE 指令的机器码,并用0xed修改。
A.64位程序的JE机器码为84 0f 后面跟具体的跳转地址。
B。如何确定跳转地址?JE指令使用偏移寻址,即跳转目标地址相对于当前的指令的偏移量。只要计算出偏移量,就可以直接修改机器码了。
第一次跳转的偏移量这样计算:0x45259-0x4512B=0x012e
第二次跳转的偏移量这样计算:0x47673-0x47569=0x010a
把上面的计算结果和机器码结合,得到最终的机器码修改如下
第一次跳转:

0f 8f 75 01 00 00  =>0f 84 2e 01 00 00 (也就是汇编代码jg 0x452a0 => je 0x45259)

第二次跳转:

0f 8f 51 01 00 00  =>0f 84 0a 01 00 00 (也就是汇编代码jg 0x476ba => je 0x47673)

4.用0xED软件打开AppleHDA.kext/Contents/MacOS/AppleHDA

查找0f 8f 75 01 00 00 ,并修改为0f 84 2e 01 00 00。

查找0f 8f 51 01 00 00,并修改为0f 84 0a 01 00 00。

5.再次用Hopper反汇编AppleHDA.kext/Contents/MacOS/AppleHDA,发现已经修改正确如下图:

第一次:

5.png

第二次:

6.png


文笔不好,有点乱,对照图理解,你也能合体你想要的驱动了。祝你成功!



Rank: 7Rank: 7Rank: 7

UID
57689
帖子
1419
PB币
348
贡献
0
技术
5
活跃
1211
沙发
发表于 2013-6-6 19:33:26 IP属地上海 |只看该作者
哇!太牛啦!我的两台电脑,刚好一个662和889a.谢谢!

我 是 来 打 浆 糊 的..

UID
1570065
帖子
6366
PB币
96
贡献
0
技术
21
活跃
597

7周年庆典勋章 9周年庆典勋章 8周年庆典勋章

板凳
发表于 2013-6-6 19:38:47 IP属地广东 |只看该作者
不错,谢分享

Rank: 2Rank: 2

UID
2772878
帖子
138
PB币
0
贡献
0
技术
0
活跃
123
4F
发表于 2013-6-6 19:54:27 IP属地广东 |只看该作者
手指一抖,PB到手

Rank: 2Rank: 2

UID
1968735
帖子
104
PB币
204
贡献
0
技术
0
活跃
134
5F
发表于 2013-6-7 16:50:22 IP属地广东 |只看该作者
求10.8.4可用的alc889驱动  谢谢了。

Rank: 2Rank: 2

UID
976412
帖子
431
PB币
503
贡献
0
技术
0
活跃
447
6F
发表于 2013-6-7 20:01:37 IP属地北京 |只看该作者
楼主,太感激了

Rank: 5Rank: 5Rank: 5

UID
3524248
帖子
599
PB币
101
贡献
0
技术
4
活跃
515
7F
发表于 2013-6-8 08:08:56 IP属地台湾 |只看该作者
謝謝分享

Rank: 5Rank: 5Rank: 5

UID
1410376
帖子
773
PB币
425
贡献
0
技术
32
活跃
1276
8F
发表于 2013-6-8 08:57:35 IP属地河北 |只看该作者
是不是配合DSDT 用的? 把这个放在  SLE 里

Rank: 7Rank: 7Rank: 7

UID
503946
帖子
233
PB币
354
贡献
0
技术
26
活跃
209

7周年庆典勋章 8周年庆典勋章

9F
发表于 2013-6-8 21:26:55 IP属地吉林 |只看该作者
楼主,太感激了

Rank: 7Rank: 7Rank: 7

UID
2356228
帖子
1485
PB币
2
贡献
0
技术
0
活跃
2091
10F
发表于 2013-6-8 21:54:22 IP属地加拿大 |只看该作者
感謝分享!!!

Rank: 7Rank: 7Rank: 7

UID
3807225
帖子
1910
PB币
2048
贡献
0
技术
8
活跃
1010
11F
发表于 2013-6-8 22:17:48 IP属地江苏 来自手机 |只看该作者
支持一下。

Rank: 7Rank: 7Rank: 7

UID
3498477
帖子
1938
PB币
830
贡献
0
技术
18
活跃
360
12F
发表于 2013-6-8 23:39:10 IP属地福建 |只看该作者
很久很久没看到663了
头像被屏蔽

UID
2808482
帖子
248
PB币
38
贡献
0
技术
1
活跃
28
13F
发表于 2013-6-9 15:34:53 IP属地福建 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

远景刁民

Rank: 9

UID
1102266
帖子
3965
PB币
2474
贡献
0
技术
33
活跃
1990
14F
发表于 2013-6-9 15:53:26 IP属地未知 |只看该作者
有什么不一样吗?懒得升级了。

Rank: 1

UID
2328285
帖子
93
PB币
3
贡献
0
技术
1
活跃
25
15F
发表于 2013-6-10 13:26:14 IP属地广西 |只看该作者
试试!662+ ICH7苦逼 路过!

Rank: 1

UID
1950728
帖子
84
PB币
0
贡献
0
技术
0
活跃
74
16F
发表于 2013-6-11 19:14:09 IP属地北京 |只看该作者
多谢多谢啊,正赶着活儿升了个级发现声卡不行了~  雪中送炭啊~

Rank: 1

UID
3561128
帖子
47
PB币
16
贡献
0
技术
0
活跃
1
17F
发表于 2013-6-11 19:20:54 IP属地天津 来自手机 |只看该作者
哈哈哈  我的662呀  谢了

Rank: 1

UID
1950728
帖子
84
PB币
0
贡献
0
技术
0
活跃
74
18F
发表于 2013-6-11 22:52:27 IP属地北京 |只看该作者
要加入dsdt么? 用了之后还是不生效啊~

Rank: 2Rank: 2

UID
1834228
帖子
136
PB币
20
贡献
0
技术
0
活跃
52
19F
发表于 2013-6-12 13:23:46 IP属地广东 |只看该作者
谢谢分享!

Rank: 2Rank: 2

UID
2575192
帖子
170
PB币
0
贡献
0
技术
0
活跃
224
20F
发表于 2013-6-13 22:34:15 IP属地湖北 |只看该作者
支持一下
回顶部
Copyright (C) 2005-2024 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛