一直以来对 Hackintosh 技术高度崇拜,导致有一日不知不觉发现自己投入得太多,照一照镜子感到自己更是憔悴无比 (?),于是我下定决心退出黑苹果技术圈,但是在结束之前,总是按捺不住自己折腾的心情,决定好好干一把,将自己始终没有完美的无线网卡和蓝牙模块解决。

但是稍微有黑苹果知识的人都知道,对于苹果系统,基本的PC无线网卡模块都是无解的,受限于硬件不支持,只有使用外置USB无线网卡或是拆机更换内置无线网卡才可以真正做到黑苹果功能上面的“完美”。

当下我也没有多想,便买了一块支持黑苹果的无线网卡 BCM4322 ,者块网卡使用的是 M.2 接口,下单时心里完全没有想到这小小的 35 元网卡会给我带来多少新的折腾,只道是一来一拆一换便可以实现 WiFi 功能,甚至完美驱动 5 GHz 和 AirDrop

后来发现,果真太年轻,这黑苹果网卡不知道比自己高到不知道哪里去了

等了好几天,心心念念的无线网卡终于到了,拆开计算机一看,登时傻了眼。。。接口不对!!

原来现在许多新生产的计算机为了节约内部空间提高网卡性能已经摒弃了原来的 M.2 接口转而采用新的 NGFF 接口,简而言之,就是我的 NGFF 接口是插不进 M.2 的网卡的,这张卡就算打水漂了,尴尬 (蒙圈好几分钟)

于是乎,暂时放弃了一阵 回校时一日闲着无聊,一不小心又买了一张网卡,这回可是吸取了上次的教训,买了一张 BCM94352z NGFF 接口网卡,心里想:这回儿应该很简单就可以把我的电脑从有线网的束缚中解脱出来了?

结果肯定还是我 too young……

没错,新的危机又来了!!我这台PC是啥都好,偏偏是联想的主机,基本玩过计算机硬件的人都会知道,联想家和惠普家的笔记本电脑是不可以自己更换第三方硬件的,为什么呢?这样做也是为了广大消费者,为了防止某些计算机厂商私自偷欢硬件,联想和惠普在自己的主板BIOS上面用16进制数字签名构造了一个硬件白名单,只要硬件ID不符合白名单上面所写,都是无法完成开机的,一开机就会显示你含有非认证的无线网卡,立马自动关机。

尴尬(蒙圈又开始了)

但是第二张网卡花了我170软妹币呢!!我怎么能就这样善罢甘休(无奈脸),左思右想,查阅资料,发现这个BIOS白名单也不是不能破解,只是备有这样技术的人不多,基本上都是联想或是惠普专卖店的专业人员(最瞧不起花钱帮别人修电脑的人了…),那,还是研究一下把这块网卡换上好…

好了,比比了一通,自己终于把自己带进一个新坑了 现在讲一下这一个蛋疼的破解过程吧….


破解联想惠普笔记本电脑的 BIOS 白名单,实质就是提取本机的原生 BIOS 加以修改,使得修改后的新BIOS能够兼容我们的第三方网卡,所以首先就得先提取原生BIOS,我们这里使用的工具就是 fpt

这里要说一下,关于 fpt 工具,是 intel 公司最早为了给广大 intel 用户提供一个自由操作 BIOS 的平台所创建的,可以备份计算机的BIOS镜像,并且可以直接刷写 BIOS。其中__fpt__工具是有好多版本的,包括 fpt64fpt32fpt16 等,这里所说的 fpt 其实默认是16位的,如果要使用 fpt 的话,得使用最早的 Dos 来完成我们的 BIOS 刷写工作,我们没有 Dos 系统,所以只能使用 fpt64 在 x64PC 上面完成这一系列的破解工作。

在使用工具之前,我们先打开计算机的“管理”选项,查看属于我们原装计算机的无线网卡硬件id:

硬件id1

点击我们的无线网卡适配器:

硬件id2

这里我们看到一串16进制字符码,选择有三组数字组成的那一串代码:

PCI\VEN_14E4&DEV_43BA &SUBSYS_00201028

这3串代码分别是 硬件码 PCI\VEN : 14E4 转化为16进制写法应该是:E4 14

DEV : 43BA 转化为16进制写法因该是:BA 43

SUBSYS : 00201028 转化为16进制写法应该是:28 10 20 00

将上述三串代码拼接起来就是我们最后要修改的HEX值:E4 14 BA 43 28 10 20 00

当然我这里是已经换好了的无线网卡的硬件id ,最早查询这个硬件 id 的话是要先进入系统,查到你所需要的待替换的硬件id ,你要更换的无线网卡硬件 id 得自己上网查询,这里我是直接询问购买这张网卡的淘宝商家。

在查询到自己待替换的无线网卡硬件 id 和自己要写进 BIOS 的新网卡的硬件 id 以后,我们就开始使用 fpt工具备份BIOS镜像。

在这一步,我们不仅仅需要 fpt 工具,还需要 :

  • winHEX 16 进制编辑工具
  • EzH2O BIOS 镜像加载工具,用于将 BIOS 镜像加载到计算机的内存

首先,我们使用__fpt64__ 备份 BIOS,下载好 fpt64 工具,用管理员权限打开命令提示符,cd 到 fpt64 所在的目录,执行备份 BIOS 命令:

fpt64 -d biosbackup.rom -bios

在这里我们将备份的文件命名为 biosbackup.rom

fpt

命令显示我们备份成功。

然后修改我们提取出的 biosbackup.rom 打开 EzH2O.exe,点击“载入”:

h2o

这里我们选择的是 BIOS 名称是 flash.rom 显示载入成功:

这个时候点击确定,不要关闭 EzH2O 让它在后台保持运行,如果关闭了它,将会把载入的BIOS镜像从内存中释放出来,这样就无法再次更改 BIOS 了。

加载完成以后,我们打开 winHEX 这个修改16进制代码的文件,点击如图所示的按钮,选择加载一块内存地址:

找到刚才使用 EzH2O 加载的内存地址:

倒数第三个,点击展开,选择主存储结构完成加载:

加载完以后就会发现一堆 16 进制代码:

在这么多代码里面怎么准确地查找出我们计算机的无线网卡名单地址呢? 点击上面那个查找的按钮,输入我们之前通过自己计算机查找到的原生无线网卡硬件 id 定位无线网卡白名单的内存地址:

它自动给我们定位到了内存地址,通过比对我们发现了自己的那行无线网卡代码地址,将上面得到的新网卡的硬件 id 输入,替换原生网卡:E4 14 BA 43 28 10 20 00

保存,关闭 winHEX 继而保存,关闭 EzH2O ,这样我们就完成了提取原生BIOS并且手动修改16进制白名单的过程了,现在要使用 fpt64 刷写新的 BIOS 进入计算机,并且手动拆机替换无线网卡硬件模块。

打开 fpt64 还是在刚才的工作目录,我们输入以下的命令:

fpt64 -f biosbackup.rom -bios 完成新的 BIOS 刷写,完成破解。

可就是在这时,fpt 报出了一个新的错误:计算机的主板不支持手动刷写BIOS!!

在查阅各种资料以后,发现这个地区锁是没有办法破解的,看着自己前功尽弃,我呆呆地不知道怎么办才好。电脑的屏幕不知不觉已经进入睡眠…….

我唤醒计算机,抱着GG的心情又再次试了一遍 fpt 的刷写命令,发现….莫名其妙成功了! 原来这是联想主板的一个小漏洞:在计算机休眠再次唤醒之后,BIOS 防刷写机制就会莫名其妙的被绕过。

我…..

不过总算成功将这个网卡安装进去啦,打开计算机,发现黑苹果的无线模块已经完美驱动,而且其他系统下这张网卡的工作依然完美,速度超赞,也算不枉我这一次蛋疼的折腾。

现在本机黑苹果已经完美,于是退出黑苹果界,不再折腾。 经历这许许多多,感觉花费了大把光阴,但是收获了查找解决难题的技巧与耐心,也不算没有收获,遂将所学技术加以书写,一来分享,二来记录。