發新話題

[分享] 喚醒經典:Debug應用實例秀

喚醒經典:Debug應用實例秀

  豪華絢麗的Windows讓人們把DOS拋到遙遠的記憶角落。然而,真正有價值的東西不會輕易退出歷史的舞台,Debug就是這樣的經典作品之一。從古老的DOS到現今的Windows XP,Debug一直緊緊跟隨著微軟的操作系統,靜靜躺在系統文件夾裡。也許你平時對它不聞不問,但要想成為人人羨慕的系統高手,我們就得喚醒這個沉睡已久的命令行工具了,通過閱讀本文對它的研究,相信你會同筆者一樣的感覺到:姜,還是老的辣!

  一、尋根溯源:世界第一隻計算機BUG和Debug

  霍德華·艾肯在哈佛大學攻讀物理學博士學位時,開始夢想製作一台計算機幫他解決數學難題,工作後,他找到IBM公司為其投資100萬美元研製計算機,第一台成品艾肯把它取名為:馬克Ⅰ號,又叫「自動序列受控計算機」,從這時起IBM公司由生產製表機、肉鋪磅秤、咖啡碾磨機等亂七八糟玩意的行業,正式跨進了計算機「領地」。

  1945年9月9日,為馬克II號編製計算程序的女數學家格雷斯·霍波在調試程序時出現了故障,拆開繼電器後,發現有只飛蛾被夾扁在觸點中間,從而「卡」住了機器的運行。於是霍波把這只飛蛾粘在了計算機的工作日誌中,並恢諧地把程序故障統稱為「臭蟲」(bug),自此以後,只要這台計算機一停止運轉(那時候是經常的事),同事們就會開玩笑地對霍德華·艾肯說,我們正在「Debug」(除蟲)呢!後來「bug」成為計算機領域的專業行話,如DOS系統中的調試程序,程序名稱就叫Debug。

  目前那只飛蛾還保存在美國史密森尼博物院的美國歷史國家博物館中呢。

  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命令有一定風險,如果輸入錯誤,有可能對系統造成一定破壞,這點請您一定注意。

  實例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喇叭的聲音可能得過段時間才能停下來。

  四、硬盤救命稻草:用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

  實例2:拯救軟盤數據

  一分鐘前還打得開的軟盤,一分鐘後就說「該軟盤沒有格式化,要格式化麼?」但這裡面卻偏偏保存著重要數據,其實出現這種情況往往是軟盤的0面0道1扇區邏輯損壞的原因,這時可以試試以下方法:

  Step 1:將一張好的軟盤插入軟驅。

  Step 2:執行Debug,並在提示符「-」後輸入以下命令:
  
  -L 100 0 0 1

  Step 3:將好的軟盤取出,插入需要恢復的軟盤,再輸入以下命令:

  -W 100 0 0 1

  不過,如果0面0道1扇是物理損壞,DEBUG會告訴我們不能寫盤,這時,你只能再嘗試HD-COPY等工具軟件了。

  實例3:清除硬盤的主引導記錄

  如果你遇到了FDISK不能識別硬盤,或在電腦啟動時出現沒有硬盤的錯誤提示,比如:「Fixed disk 0 Failure」,那麼可以試試下面的方法,但是要注意的是,這樣會刪除所有硬盤分區(包括非DOS分區),當然數據也會全部丟失。

  Step 1:製作一張啟動軟盤,其中包括:DEBUG、FDISK、FORMAT等程序。用它啟動電腦,輸入「Debug」並回車。

  Step 2:在Debug的命令提示符「-」後輸入以下命令:
引用:
  FCS:200 400 0
  RAX
  0301
  RBX
  0600
  RCX
  0001
  RDX
  0080
  E 100 CD 13
  P
  Q
  Step 3:完成後分別運行FDISK和Format進行分區和格式化即可。

  實例4:低格硬盤

  方法一:完全低格
引用:
  -a 100
  mov ax,0703
  mov cx,0001
  mov dx,0080
  int 13
  int 3
  010D
  G 100
  小提示:有些主板的BIOS中已經存放著低格程序,因此可以直接用Debug來調用,命令為「g c800:0005」。

  方法二:快速低格
引用:
  -a 100
  mov ax,0500
  mov bx,0180
  mov cx,0001
  mov dx,0080
  int 13
  int 3
  E 0180 0 0 0002
  G 100
  你知道嗎?

  Windows 2000/XP的Debug模式

  打開啟動分區的「boot.ini」文件,接著在「multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows 2000 Professional" /fastdetect」語句後面加一個空格,然後再輸入「/DEBUG」,在啟動Windows 2000/XP時調入系統中的除錯程序,它可以在任何時間激活,這個參數可以用來解決有規律發生的錯誤。

  如果換為「/CRASHDEBUG」,那麼在系統核心沒有發生錯誤之前不會生效,如果遇到隨機的內核錯誤,它就會幫你除錯了。

TOP

發新話題

本站所有圖文均屬網友發表,僅代表作者的觀點與本站無關,如有侵權請通知版主會盡快刪除。