CMOS密码的破解
有关CMOS密码的破解,我们已看到了很多文章,多数破解方法如下:
在dos下输入debug命令 -o 70 1 -o 71 1 -q
但这实际上只是针对比较老的386,486机器,而对于现在586,686的机器可以说基本上无效,不信你可以在你的机器上试一试. 在这里我首先必须谈一谈有关CMOS密码破解的原理.基于IBM PC的机器分配了70H和71H端口给CMOS,通过这两个端口我们可以访问或者修改CMOS的配置信息.首先通过访问70H,确定访问CMOS的地址(0H-80H),然后通过向确定后的CMOS地址输入适当的数据,来达到破坏CMOS校验和的目的.在这里我必须还要说明一下,大多数AWARD BIOS在CMOS地址38H-3DH保存经过HASH算法加密的密码,但这并不一定,所以我们不需要确定CMOS保存密码的地址,只需破坏CMOS校验和,即可达到CMOS密码的破解,下面我给出破解程序: 在dos下输入debug命令 -A 100 -15D2:0100 MOV AL,10 (此处为0-100的任意值) -15D2:0102 OUT 70,AL (直接访问I/O端口必须通过AL寄存器) -15D2:0104 OUT 71,AL (破坏校验和) -15D2:0106 INT 20 (结束程序) -15D2:0108 (回车) -G=0100 (执行程序) -Q 此程序在多台AWARD或AMI机器上通过.请注意:在windowsNT,windows2000下,很多破解程序都无法使用,原因在于WindowsNT的DOS是模拟的,禁止对CMOS写入.
CMOS的备份和恢复
CMOS设置对于一般的电脑使用者是一件比较头疼的事,别人帮你把CMOS设置好,但当突然停电或者忘记了密码,需要重新设置CMOS,对于初学者是一件比较头疼的事,只好又去求教别人.正是基于此,为什么不能将配置好的CMOS保存起来,当需要重新设置时,再运行程序恢复即可,就可免去了重新配置之苦.当然我们还可从读出cmos的信息文件中得到我们想要的"东东". CMOS是一个128字节大小的储存区, 它存放了有关机器BIOS配置的重要信息,而BIOS内有CMOS的设置程序.基于IBM PC的机器分配了70H和71H端口给CMOS,通过这两个端口我们可以访问或者修改CMOS的配置信息.访问70H,确定访问CMOS的地址(0H-80H),然后通过向已确定后的CMOS地址来访问71H数据端口,从而达到访问或者修改CMOS内数据的目的.而汇编程序正是对CMOS访问或者修改的最佳选择,以下两个程序cmos.exe和restore.exe即是用汇编语言写出来的,cmos.exe是备份你的cmos配置程序,restore.exe是恢复你所备份cmos的程序.
;*********************************************** ;this is cmos asm file,it could backup your cmos ;*********************************************** title first data segment na db 'cmos.dat',0 buffer db 80H dup(?) handle dw ? data ends code segment assume ds:data,cs:code main proc far start: push ds sub ax,ax push ax mov ax,data mov ds,ax mov cx,0 lea bx,buffer mov ax,0 get: out 70H,al ;get your cmos configuration(得到你的cmos配置信息) in al,71H mov [bx],al inc cx inc bx mov ax,cx cmp cx,80H jb get mov ah,3cH ;create a new file(调用int21H新建一个文件) lea dx,na mov cx,20H int 21H mov handle,ax mov ah,40H ;write to the new file(调用int21H向这个文件写cmos的配置信息) mov bx,handle lea dx,buffer mov cx,80H int 21H ret main endp code ends end start
;*************************************************** ;this is restore asm file,it could restore your cmos ;*************************************************** title restore data segment na db "cmos.dat",0 buffers db 80H dup(?) data ends code segment assume cs:code,ds:data main proc far begin: push ds sub ax,ax push ax mov ax,data mov ds,ax lea dx,na ;get the file handle and open the file(得到cmos.dat文件的文件号后,打开该文件) mov al,0 mov ah,3dH int 21H mov bx,ax ;read the file(读文件内容) mov cx,80H mov ah,3fH lea dx,buffers int 21H mov cx,0 mov ax,0 lea bx,buffers write: out 70H,al ;restore cmos (恢复cmos的配置) mov ax,[bx] out 71H,al inc cx inc bx mov ax,cx cmp cx,80H jb write ret main endp code ends end begin
这两个程序在我的AWARD BIOS的机上调试通过,支持目前大多数IBM兼容PC机.我用masm编译器得到了cmos.exe,restore.exe两个可执行文件.必须注意的是,当你运行cmos.exe之后,在程序所在的目录下得到了一个128字节的cmos.dat文件,这个文件既是CMOS的配置文件,这个文件是个二进制文件,需要用二进制编辑器如winhex来查看,可以很方便得查看cmos的配置.运行恢复程序restore.exe程序时,需要将cmos.dat文件拷贝到restore.exe程序所在的目录.如果大家没有汇编编辑器可以到我的网站去下载(http://owlbird.xiloo.com/download.htm),提供了汇编编辑器及已编译好的程序. 请注意:在windowsNT,windows2000下,很多直接访问cmos程序都无法使用,原因在于WindowsNT的DOS是模拟的,禁止对CMOS写入.
owlbird工作室版权所有,若要转载请务必与我们联系

|