豪华绚丽的Windows让人们把DOS抛到遥远的记忆角落。然而,真正有价值的东西不会轻易退出历史的舞台,Debug就是这样的经典作品之一。从古老的DOS到现今的Windows XP,Debug一直紧紧跟随着微软的操作系统,静静躺在系统文件夹里。也许你平时对它不闻不问,但要想成为人人羡慕的系统高手,我们就得唤醒这个沉睡已久的命令行工具了,通过阅读本文对它的研究,相信你会同笔者一样的感觉到:姜,还是老的辣!
一、寻根溯源:世界第一只计算机BUG和Debug
霍德华·艾肯在哈佛大学攻读物理学博士学位时,开始梦想制作一台计算机帮他解决数学难题,工作后,他找到IBM公司为其投资100万美元研制计算机,第一台成品艾肯把它取名为:马克Ⅰ号,又叫“自动序列受控计算机”,从这时起IBM公司由生产制表机、肉铺磅秤、咖啡碾磨机等乱七八糟玩意的行业,正式跨进了计算机“领地”。
1945年9月9日,为马克II号编制计算程序的女数学家格雷斯·霍波在调试程序时出现了故障,拆开继电器后,发现有只飞蛾被夹扁在触点中间,从而“卡”住了机器的运行。于是霍波把这只飞蛾粘在了计算机的工作日志中,并恢谐地把程序故障统称为“臭虫”(bug),自此以后,只要这台计算机一停止运转(那时候是经常的事),同事们就会开玩笑地对霍德华·艾肯说,我们正在“Debug”(除虫)呢!后来“bug”成为计算机领域的专业行话,如DOS系统中的调试程序,程序名称就叫Debug。
目前那只飞蛾还保存在美国史密森尼博物院的美国历史国家博物馆中,如果你想一睹它的芳容,那么就到http://www.history.navy.mil/photos/images/h96000/h96566k.jpg看看吧。
1981年,第一个PC DOS(即DOS 1.00)面世时就已经带上了Debug.com。不过,到目前为止,Debug一直没有大的变动——当然,这是指Debug提供给用户的功能,Debug本身代码、内部运行机制必然随着操作系统的变化而不断改变。然而,无论是Windows 98、2000还是XP,Debug的操作方式与纯DOS环境下基本一样。
二、初学乍练:短短几行命令学用Debug
Debug.exe文件位于Windows\system32目录(Windows XP)或Windows\command目录(Windows 9x)下。基本使用方法如下:
Step 1:点击“开始→运行”,输入“CMD”(windows 2000/XP)或“Command”(Windows 9x)打开命令提示符窗口。
Step 2:输入“Debug”并回车,出现提示符“-”,现在你已经开启了神秘的Debug世界了。
小提示
执行“?”命令可以参看Debug主要命令及参数。
Step 3:输入“D FE00:0”,回车后可以看到结果(见图1),这个就是主板BIOS的厂商信息。接着再输入“D FFFF:5 L 8”,回车后,主板的BIOS版本日期也出来了。
Step 4:现在再输入“Q”命令,回车后就退出了Debug程序。
小提示
★要想精通Debug的应用,除了解Debug命令相关参数外,最好对汇编语言的基本知识要有所了解,可以参考相关资料。比如:http://wlbookwl.myrice.com/jck/1026Debug.htm。
★将http://yanexp.Html.533.net/dprogram.htm中提供的这段Debug代码复制到Debug的“-”命令提示符下后回车,体验一下高手的Debug杰作(一段3D演示,且带音乐)!
Photoshop教程
数据结构
五笔输入法专题
QQ病毒专题
共享上网专题
Google工具和服务专题
三、继续深入:Debug经典实例秀
在操作以下实例之前,提醒您要注意操作安全,因为Debug命令有一定风险,如果输入错误,有可能对系统造成一定破坏,这点请您一定注意。
实例1:查看你的显卡信息
输入“D C000:0090”命令并回车,这时右侧部分可以看到系统中显卡的显存、生产厂商等信息。
实例2:制作BIOS密码破解器
忘记BIOS密码,一般都采用放电法来清空密码,但这对普通用户有一定难度,并且还得开机箱。其实利用Debug的0命令则简单得多!请在“-”后输入以下命令:
o 70 19
o 71 15
q
重启电脑,系统提示CMOS校验和出错,并要求重新进入BIOS设置CMOS。
小提示:70和71是CMOS的两个端口,我们可以在它们的后面随意写入一些错误数据(如19、16、17等),就会清空CMOS里所有设置,如果不见效不妨多用几个数据试试。
如果觉得每次输入Debug命令太麻烦,可以用下面的方法把命令存成一个COM文件,需要解除密码时只要运行一下就行了。请在Debug中命令提示符“-”后输入以下命令:
A 100
MOV DX,70
MOV AL,10
OUT DX,AL
MOV DX,71
MOV AL,01
OUT DX,AL(这里要两次回车,接着会出现“-”提示符,然后再输入下面的命令)
R CX(回车后会出现“CX 0000”,然后再次按回车)
0C
N pass.COM
W
Q
这样就会在Debug当前目录下生成pass.com,是一个清除BIOS口令设置的程序,只要在DOS提示符下键入“pass”,然后按回车即可。经我们测试,其实在Windows下面运行也可以成功。知识不太稳定,有时会重新启动计算机。
实例3:检测LCD显示器的坏点
购买LCD显示器最忌有亮点或暗点,我们可以借助相关的检测软件来辅助查看,但在配电脑时,老板常常不让我们装软件,其实利用Debug中的F命令就可以看得清清楚楚!
为了检测LCD屏幕是否存在坏点,可以将整个屏幕填充为红、绿、蓝、白等纯色,以便检查。下面给出几个常用的显示屏检测F命令(Debug窗口一般较小,按Alt+Enter将它放大到整个屏幕):
F B800:00 F9F 20 70 全屏白色
F B800:00 F9F 20 40 全屏红色
F B800:00 F9F 20 20 全屏绿色
F B800:00 F9F 20 10 全屏蓝色
F B800:00 F9F C5 07 C4 07 全屏白色十字网格
F B800:00 F9F C5 04 C4 04 全屏红色十字网格
F B800:00 F9F C5 02 C4 02 全屏绿色十字网格
F B800:00 F9F C5 01 C4 01 全屏蓝色十字网格
实例4:用Debug恢复Windows 98启动
在同时装有Windows 98和Windows 2000的电脑上,有时在Windows 98下整理C盘的磁盘碎片后(假设Windows 98装在C盘),下次很有可能启动不了Windows 98。这时必须重新生成BOOTSECT.DOS(此文件是用来引导Windows 98的),Windows 98才可以重新引导。可以用Debug生成BOOTSECT.DOS文件,先用软盘启动到DOS状态:
C:>Debug
L 100 2 0 1
N BOOTSECT (BOOTSECT表示Windows 98引导记录的文件名)
RCX
CX 0000
200
W
Q
现在将C:\BOOTSECT改名为BOOTSECT.DOS,覆盖原来的BOOTSECT.DOS即可。
小资料
做个死循环炸弹玩玩
所谓死循环,实际上是编程上一种失误,造成的程序反复执行同样指令,造成软件死锁。利用Debug,我们可以做一个小小的死循环。在Debug的命令提示符“-”后输入以下命令:
a100
mov dl,1
mov ah,2
int 21
inc dl
jmp 102(按两次回车)
nboot.com
rbx(接着按两次回车,可能会出现出错信息,不要管它,再输入一遍即可)
rcx
a
-w
好了,现在可以在DOS下面执行生成的boot.com试试效果吧,同时按ctrl+break或ctrl+c可以强制停止。如果是在windows下,强制退出即可,不过PC喇叭的声音可能得过段时间才能停下来。
Photoshop教程
数据结构
五笔输入法专题
QQ病毒专题
共享上网专题
Google工具和服务专题
三、硬盘救命稻草:用Debug玩转磁盘
特别提醒:由于以下操作非常危险,所以建议你三思而行,并且最好在电脑中只挂接要操作的硬盘,以免误操作了其他硬盘。
实例1:清除硬盘驱动器的所有信息
本来清除硬盘信息用Fdisk便可以轻松搞定,可如果当你碰上用FDISK命令无法删除分区信息的情况,甚至是一运行FDISK就死机,那么就不得不求助于Debug了。通过下面的命令,可以清除硬盘上所有分区信息(注意:黑体字部分是需要键盘输入的,非黑体部分为自动返回的信息)。
小提示:危险操作!请慎重执行!
C:\>Debug
F 200 L1000 0
A CS:100
xxxx:0100 MOV AX,301
xxxx:0103 MOV BX,200
xxxx:0106 MOV CX,1
xxxx:0109 MOV DX,80 (注意:80代表主盘,81代表从盘)
xxxx:010C INT 13
xxxx:010E INT 20
xxxx:0110
g
Program terminated normally
q
以上程序执行完毕后,重启电脑,此时硬盘的分区信息都已经被清除,我们便可以使用Fdisk为硬盘进行重新分区,然后格式化即可正常使用了。
小提示
删除所有分区
如果想快速删除所有分区,那么可将以下命令保存到一个文本文件中(比如:Delpart.txt ):
a 100 int13rax
0301
rbx
0200
f 200 l 200 0
rcx
0001
rdx
0080
p
q
然后在纯DOS(比如用启动软盘启动系统)中执行“Debug