monkey243 发表于 2009-6-1 21:39

【原创】图文教你如何解除1802、1804和“白清单”限制

像X200、T400新机型解除1802、1804和“白清单”限制方法请见:
http://www.ibmnb.com/viewthread.php?tid=835012&page=1&extra=page%3D2

引言
    这样的的BIOS论坛上就有得下载,为什么要自己搞那么高风险的事情呢?只要是出于两方面的考虑:一方面,某些机型的MOD BIOS论坛上没得下载,就好像我的R61i 8943机型;另一方面,论坛上下载的MOD BIOS很难全面跟得上官方更新速度。从年初开始我一直在关注R61i 8943A18 15寸普屏机型解除1802、1804和“白清单”限制的BIOS,并通过多种方式联系国内、外的高手,但到前两天为止都还没有此机型的MOD BIOS放出来。参考forum.thinkpads.com论坛里Zender网友发表的修改BIOS资料后,决定自己动手。经过这两天日日夜夜的折腾,于今天上午终于完成了对R61i 8943机型BIOS的修改,并在我的机子上测试通过。给机子升级的联想拆机Intel WiFi Link 5100 AGN无线网卡工作完美,无须绝缘第20脚,开机无1802报错,硬件无线开关和Fn+F5组合键,无线指示灯全部工作正常。

可行性研究
    ThinkPad笔记本电脑自从T43起更改了BIOS对无线网卡检测机制,再也不能像之前的机型那简单“跳过”处理来解决非认证网卡使用的问题。经Zender网友的研究发现:新机型,例如我的R61i,BIOS里面对无线网卡检测代码存放在BIOSCODE区域的B.05模块里面。B.05模块的无线网卡相关内容包括两方面主要内容:1、认证的无线网卡数据,即我们所说的“白清单”或者“whitelist”;2、无线网卡检测过程及检测结果数据的传送。由此可以看出实现对非认证无线网卡的使用可以从三方面入一手:1、把非认证的无线网卡数据加入到B.05模块中,但此方法不太实际,非认证的无线网卡实在太多了,对用户来说用哪张无线网卡就加那张卡的数据入去也不容易操作;2、修改B.05模块中对无线网卡检测过程,这个方法看上去不错,但实际操作起来也有非常大的困难,主要因为不同此检测过程不同,而且要修改多处,例如R61i 8943就要修改50多处;3、更改无线网卡检测结果,在B.05模块对无线网卡检测后,无论其检测结果如何都把其检测的结果更改为“是”。所以第三个方法最好,只要更改一处理论上就可以实现对所有非认证的无线网卡的正常使用。
    B.05模块对无线网卡的检测首先检测miniPCI-E插槽有没有无线网卡,如果检测到有无线网卡就读取无线网卡的硬件数据。然后拿这个读取得来的数据在“白清单”查找,查找的结果存放某个状态寄存器里面。此状态寄存器被清除(即清0),表示miniPCI-E插槽上没有无线网卡或者无线网卡是通过认证的;此状态寄存器被设置(即置1),表示此无线网卡非认证的,同时给无线网卡第20脚发送一个无线传输关闭的信号(“radio disable”)。只要在B.05模块对无线网卡的检测后,人为再将这个状态寄存器清0一次即可。

实现过程设计
    在总结forum.thinkpads.com论坛Zender和本论坛cayman网友的经验,并作了一些简化后得出如下实现过程:
    1、获得ThinkPad BIOS的镜像文件。利用官方网站的BIOS升级文件包中WinPhlash.exe程序通过对BIOS进行备份便可以获得BIOS镜像文件。
    2、从BIOS镜像文件中提取BIOSCODE区域的B.05模块。运行phnxdeco.exe后,生成的phoenix_.B5便是BIOSCODE区域的B.05模块。
    3、通过修改phoenix_.B5文件实现在B.05模块对无线网卡的检测后将状态寄存器清0。此过程由phnxpatch.exe完成。
    4、把修改后的phoenix_.B5压缩文件成B.05模块。prepare.exe实现对phoenix_.B5压缩。
    5、把修改后的B.05模块放回BIOS镜像文件中的BIOSCODE区域。此过程由phnxmod.exe完成。
    6、更新修改后的BIOS镜像文件校验码。此过程由phnxcksm.exe完成。
    7、把修改后的BIOS镜像文件刷回ThinkPad中。再次利用WinPhlash.exe刷新BIOS。

详细实现过程
    先到ThinkPad官方网站上下载对应最新的BIOS硬盘版升级程序,按官方说明更新BIOS。下载本贴的附件,解压后会成生一个名为bios_mod的文件夹,里面包含修改所需的程序。此过程都在此文件夹里面完成。然后开始修改BIOS。
    1、获得ThinkPad BIOS镜像文件。
    首先找到官方的BIOS升级程序所在的文件夹,一般在C:\DRIVERS\FLASH里面。然后运行WinPhlash.exe程序,并设置为只备份BIOS的操作模式,填入BIOS备份文件名:bios.bak,点击“Browes”按钮找到程序所在的文件夹里面扩展名FL1的BIOS文件,然后点击右下角的“Backup BIOS”按钮进行备份BIOS。程序运行完成后,便会在程序所在文件夹里生成一个名为bios.bak的BIOS镜像文件。把这个bios.bak文件复制到bios_mod的文件夹里面。



      2、从BIOS镜像文件中提取BIOSCODE区域的B.05模块。
    打开命令行窗口,并进入到名为bios_mod的文件夹中。
    输入命令:phnxdeco bios.bak -x
      回车运行。运行完毕后会在bios_mod文件夹中生成几十个文件。在生成的文件中找到名为:phoenix_.B5的文件,并复制到此目录下名为:models的文件夹里面。然后把那些生成的多余的文件删除,以防出错。



      3、修改phoenix_.B5文件
      在命令行窗口里面输入命令:phnxpatch patches models
      回车运行。程序运行完毕后会在models文件夹中生成名为:phoenix_.B5.patched文件。
    此过程不能在Windows Vista下操作。


      4、把修改后的phoenix_.B5文件压缩成B.05模块
      把models文件夹中:
    phoenix_.B5文件重命名为:old.b5
      phoenix_.B5.patched文件重命名为:new.b5


      把models文件夹中old.B5和new.B5两文件复制到bios_mod文件夹中。
      在命令行窗口里面输入命令:prepare old.txt
      回车运行。
      在命令行窗口里面输入命令:prepare new.txt
      回车运行。
      两次命令运行完毕后生成4个文件:OLD.LOG、OLD.MOD、NEW.LOG、NEW.MOD,其中OLD.MOD和NEW.MOD将在后面的操作过程中会用到。


      查看OLD.MOD和NEW.MOD两文件的大小是否一样,如果大小不一样就要用HEX工具把NEW.MOD文件的最后增减“00”,直到与OLD.MOD一样大小为止,否则将无法进行下一步的工作。我的例子中,NEW.MOD文件比OLD.MOD小了7个字节,所以要在其最后增加7个“00”使两文件大小一样。



   5、把修改后名为NEW.MOD文件放回到BIOS镜像文件:bios.bak中
          在命令行窗口里面输入命令:phnxmod bios.bak OLD.MOD NEW.MOD
          回车运行。
   6、更新修改后的BIOS镜像文件校验码          在命令行窗口里面输入命令:phnxcksm bios.bak
          回车运行。运行完毕后,把bios.bak文件重命名为:bios.rom


   7、把修改后的BIOS镜像文件bios.rom刷回ThinkPad BIOS中
      把bios_mod文件夹中名为:bios.rom的修改后的BIOS镜像文件复制到官方BIOS升级程序所在的文件夹,一般在C:\DRIVERS\FLASH里面。然后在此文件中运行WinPhlash.exe程序把修改后的BIOS镜像文件bios.rom刷回ThinkPad。


测试结果
    修改BIOS后的R61i用联想拆机的Intel WiFi Link 5100 AGN无线网卡工作完美,无须绝缘第20脚,开机无1802报错,硬件无线开关和Fn+F5组合键工作正常,无线指示灯工作正常。


总结
    单从结果上看似乎已经是很久很之前的事情了,别人早就做过。可是很多事情别人都做的,看似很容易,如果没有亲身实验,始终是没办体验到那过程的艰辛和乐趣。经过此次动手不但学会了如何修改ThinkPad的BIOS来解除1802、1804和“白清单”限制,同时在前人的基础上对操作过程作了优化,减少了修改过程中两个步骤:解压缩扩展名为FL1的官方BIOS文件和压缩修改后BIOS镜像文件成为FL1文件,并使操作过程更简单一些,全新过程直接在windows XP下实现。

注:
    1、附件中部分文件和程序由forum.thinkpads.com论坛里Zender网友提供,版权为Zender网友所有。
    2、未经本人同意不得转载。

[ Edited bymonkey243 on 2009-6-5 16:21 ]

zhangyongtao 发表于 2009-6-1 21:40

很不错
谢谢分享

hs123456 发表于 2009-6-1 21:44

:) 顶技术贴

HOPE 发表于 2009-6-1 21:50

恭喜楼主获得1分积分,感谢楼主好文。
专门网又多了一位初级会员。

monkey243 发表于 2009-6-1 22:00

多谢HOPE老大奖励!
多谢zhangyongtao版主帮顶!

同时多谢TVB,多谢我的经理人funy,多谢我的家人对我的支持,最后我的fans......

搞搞气氛:D

wjhjlove 发表于 2009-6-1 22:03

留个记号

linkwind 发表于 2009-6-1 22:13

很不错,看的有点想试一试了。
不过1804错误也是这样操作吗?

UFO-BUG 发表于 2009-6-1 22:16

不错..回头改bios去...

monkey243 发表于 2009-6-1 22:20

Posted by linkwind on 2009-6-1 22:13 http://www.ibmnb.com/images/common/back.gif
很不错,看的有点想试一试了。
不过1804错误也是这样操作吗?

此操作理论上一次性把1802、1804和“白清单”限制搞掂。

省油的灯 发表于 2009-6-1 22:44

好文.多谢分享.

croclly 发表于 2009-6-1 22:53

好文,支持

liu_yueyue 发表于 2009-6-1 22:57

强烈支持技术贴

Remon 发表于 2009-6-1 23:06

这个命令是什么原理?

在命令行窗口里面输入命令:phnxpatch patches models

tsinghua 发表于 2009-6-1 23:22

谢谢!兰州

monkey243 发表于 2009-6-1 23:33

Posted by Remon on 2009-6-1 23:06 http://www.ibmnb.com/images/common/back.gif
这个命令是什么原理?



命令:phnxpatch patches models
phnxpatch 为修改BIOSCODE模块中的状态寄存器程序。
patches是文件夹名,存放检测BIOSCODE模块中关于状态寄存器代码识别信息。
models是文件夹名,把BIOS镜像文件中提取BIOSCODE模块的相关文件放进此文件。
运行phnxpatch patches models此命令时,phnxpatch先读入patches文件夹中识别信息,然后以models文件夹中的文件一一搜索代码信息,如果发现匹配则进行修改。

85069496 发表于 2009-6-1 23:52

顶技术贴 ,
要顶!
要狂顶!
狂要顶!

fallslight 发表于 2009-6-2 00:00

T400新型BIOS怎么改啊?

sunday 发表于 2009-6-2 00:08

好文章!

用我的X61 T9300 AFFS SXGA+发帖顶一下。:)

ZSTMF 发表于 2009-6-2 00:20

好帖,收藏,有空测试。

蓝柯梦 发表于 2009-6-2 00:35

楼主,0192如何解决呢?郁闷啊。。。。。。。。。。。。。。

zqlzx 发表于 2009-6-2 00:51

技术贴啊,这样的能不能加SLIC的

weerush 发表于 2009-6-2 00:54

不错,值得使用

ljd_118 发表于 2009-6-2 03:23

强人,顶顶

ustp 发表于 2009-6-2 07:34

牛人!自己动手丰衣足食!

刚把T61p的2.26 BIOS加上破解

[ Edited byustp on 2009-6-2 08:11 ]

ligi1215 发表于 2009-6-2 07:45

顶技术贴

Sagger 发表于 2009-6-2 07:45

牛!厉害!支持!学习!

xinhuaking 发表于 2009-6-2 11:57

楼主牛人,先顶贴,慢慢学习

wsir 发表于 2009-6-2 12:06

技术贴,留名.

xzhls 发表于 2009-6-2 12:15

x61t的 bios无法 使用此方法   那个 phnxdeco 就没法 成功

在三台机器上均尝试过

xzhls 发表于 2009-6-2 12:18

Posted by monkey243 on 2009-6-1 21:39 http://www.ibmnb.com/images/common/back.gif
引言
    这样的的BIOS论坛上就有得下载,为什么要自己搞那么高风险的事情呢?只要是出于两方面的考虑:一方面,某些机型的MOD BIOS论坛上没得下载,就好像我的R61i 8943机型;另一方面,论坛上下载的MOD BIOS ...


好像不是原创

是翻译别人的成果哦

http://www.endeer.cz/bios.tools/bios.html
页: [1] 2 3 4 5 6 7
查看完整版本: 【原创】图文教你如何解除1802、1804和“白清单”限制