破解BIOS密码的debug法

来源:互联网 发布:比特精灵for mac版 编辑:程序博客网 时间:2024/05/22 06:06

实际上我们是通过BIOS这个程序,去设置CMOS里的参数的。

CMOS是一块芯片,集成在主板上,里面保存着重要的开机参数,而保存是需要电力来维持的,所以每一块主板上都会有一颗纽扣电池,叫CMOS电池。

CMOS里存放着参数,要设置它,我们必须通过程序把设置好的参数写入CMOS,所以,就利用BIOS程序来读写


电脑的BIOS设置一般是通过70H和71H两个端口进行访问和更改的,端口70H是一个字节的地址端口,用来设置CMOS中数据的地址,而端口71H则是用来读写CMOS地址中的数据单元内容,我们对这两个端口进行错误的赋值,使设置全部清空,恢复成出厂设置。 因此可以用光盘启动计算机,到DOS下输入以下命令: 1进入DOS命令状态。 2执行下列命令。 进入Debug c:\>Debug Debug标志符 执行向端口70写入数据,执行向端口71写入数据 -o 70 16 -o 71 16 退出Debug -q 利用Debug清除BIOS密码1 -o 70 2E -o 71 0 -q 利用Debug清除BIOS密码2 -o 70 FF -o 71 17 -q 利用Debug清除BIOS密码3 -o 70 10 -o 71 0 -q 利用Debug清除BIOS密码4 -o 70 FF -o 71 17 -q 利用Debug清除BIOS密码5 -o 70 11 -o 71 23 -q 利用Debug清除BIOS密码6 -o 70 10 -o 71 11 -q 任选其一试试看。

更改CMOS设置,首先进入系统,在命令行状态下运行DEBUG命令后输入如下命令
-o 70 xx(回车)   
-o 71 xx(回车)
-q (回车)
重新启动计算机后顺利进入CMOS,不用再输入密码。

命令说明:
  1、其中xx为00到99之间的任意数值;
          2、横线(-)为DEBUG命令提示符;
          3、-后面为字母O,为DEBUG的O命令,而不是数字零;
        其命令格式为,-O 端口号 一字节数据 (表示要将一字节的数据输出(写入)到指定端口)
          4、q为DEBUG命令中的退出命令;
          5、70和71分别表示端口号,必须配对使用,且先后顺序不能变动。
          6、进行如上操作后,重新启动计算机,如果进行CMOS设置时仍有密码,说明cmos中的数据没有被破坏,此时可再运行DEBUG,使用类似的O命令,不过应将70和71后面的数据变化一下。


具体的原因
     
  回来后查阅相关资料,终于从一本老古董的DOS书刊上找到了,弄明白了为什么以上操作可以清除CMOS密码,现在写出来与大家分享。
   
     CMOS的寻址规则是:CMOS中有静态的RAM,其容量上百至千字节,从0开始编地址,它不是内存的一部分,要访问时必须进过端口进行,其端口号为70和71。要通过这两个端口访问CMOS中上百字节的数据,不可能直接访问(访问包括读和写)。因此设计者规定访问CMOS的办法是:先向端口70写入需要访问的CMOS中RAM的单元地址,再通过端口71进行访问。
     破坏的原理是:系统BIOS自检时要检查CMOS中的数据是否有效,有效的标准是计算CMOS中所有数据的字节累加和是否为0,为0表示有效,不为0,则表示CMOS中的所有数据无效,正常的CMOS设置程序在改变CMOS中的值后都要计算CMOS中的字节累加和是否为0,如果不为0,则自动进行调整使之为0。破坏的办法是直接写入一随机数到CMOS的某一单元中,而不调整字节和,只要写入的数据与原有数据不同,则下次重新启动时CMOS的字节累加和肯定不为0,因而其中的数据(包括密码数据)将无效,从而达到破坏CMOS密码的目的。

提示:如果是错误的CMOS设置导致系统无法工作且有进入CMOS和进入系统密码,则比较有效的办法就是放电了。


原创粉丝点击