Debug工具的使用
實驗一 Debug工具的使用
1)、什么是Debug?
實模式( 8086 方式)程序的調試工具??梢杂盟榭?CPU 各種寄存器中的內容、內存的情況和在機器碼級跟蹤程序的運行。還可以滿足你作為Hentai的偷窺欲望,想想透過這個小小的dos窗口CPU和RAM在你面前一覽無余的樣子,是不是一下子就沖…滿了熱情呢 (并沒有)
2)、我們用到的Debug功能
-
用 Debug 的 R 命令查看、改變CPU寄存器的內容。
-
用 Debug 的 D 命令查看內存中的內容。
-
用 Debug 的 E 命令改寫內存中的內容。
-
用 Debug 的 U 命令將內存中的機器指令翻譯成匯編指令。
-
用 Debug 的 T 命令執行一條機器指令。
-
用 Debug 的 A 命令以匯編指令的格式在內存中寫入一條機器指令。
3)、進入Debug
在運行輸入框輸入**“command”** (不是cmd),打開cmd窗口后,輸入**“debug”**。
(這個功能在win10不能直接用,當然也不推薦在自己的電腦上直接用,哪次要是不小心改了個重要寄存器的參數,電腦就gg了,建議使用 win xp 或 win7 的虛擬機)
debug.exe一般在c:\winnt\system目錄下,但是由于系統配置了系統路徑,所以在任何一個路徑下都可以運行。
4)、用 R 命令查看、改變 CPU 寄存器的內容
debug程序提供了多種指令來訪問或改變寄存器的值,其中,R 命令的作用為查看、改變 CPU 各寄存器中儲存的值。
輸入 R 命令,CPU 所有寄存器的值將會被輸出到窗口中。
還可以用 R 命令來改變寄存器中的內容。
輸入 “r 寄存器的編號” 后按 Enter 鍵,將出現 “ : ” 作為輸入提示,輸入要寫入的數據后按 Enter 鍵即完成修改,若需確認修改的結果,可再用 R 命令查看。此處以 AX、CS、IP 寄存器為例,其他寄存器同理。
5)、用 Debug 的 D 命令查看內存中的內容
用 Debug 的 D 命令,可以查看內存中的內容,D 命令的格式較多,此處只介紹在本次實驗中使用的格式。
輸入d指令可以查看Debug默認位置的內存內容:
如果要查看內存 10000(H) 中的內容,首先將這個內存地址表示為 “段地址:偏移地址” 的格式,如 “1000:0”,然后輸入 “d 1000:0” 列出 1000:0 處的內容。
此處輸出的內存內容具體分為3部分
-
**從指定地址開始的128個內存單元的內容:**就是中間的主體部分,用十六進制的數字表示,沒看的輸出從16的整數倍的地址開始,最多輸出16個單元的內容。為了便于閱讀,每行的中間有一個 “ - ” 符號,將每行的輸出分為兩部分
-
**每行的起始地址:**就是輸出的左邊部分,同樣以 “段地址:偏移地址” 的格式顯示
-
**內存單元中的數據對應的可顯示的ASCII字符:**右邊的字符串就是內存單元數據對應的ASCII字符,如果沒有對應的可顯示的ASCII字符,則用 “ . ” 代替。
如果用 “d 1000:9” 查看1000:9處的內容,Debug輸出如下:
在使用 “d 段地址:偏移地址” 指令后,接著使用d命令,可列出后續的內容。
也可以指定 D 命令的查看范圍,此時采用 “d 段地址:起始偏移地址 結尾偏移地址” 的格式。比如要查看 1000:0~1000:f中的內容,可以用 “d 1000:0 f ” 實現。
如果只想查看某一內存單元比如說 10000(H) 中的內容,可以用以下任一種方法達到目的:
6)、用 Debug 的 E 命令改寫內存中的內容
可以使用 E 命令來改寫內存中的內容,使用 “e 起始地址 數據 數據 數據…” 格式來達到目標,數據可以是 16 進制數字,也可以是字符。
不要什么奇怪的東西都塞到內存里啊混蛋
也可以逐個修改內存單元的內容,以從 1000 : 10 單元開始為例,步驟如下:
7)、用 E 命令寫入機器碼,U 命令查看含義,T 命令執行
用e指令寫入十六進制的機器碼(其實和寫入數據是一模一樣的操作,從這里我們也可以看出來,數據與指令其實在內存里的儲存形式是一樣的,只有把這些十六進制數字放進CPU中時,才體現出區別。)
寫入機器碼指令后想要執行怎么辦?
需要讓CS、IP兩個寄存器指向我們剛寫入的內存空間,只有這樣,才能讓CPU把我們輸入的數據解釋為機器指令
所以,需要用 R 命令修改CS、IP中的內容,然后使用 T 命令執行我們寫入的指令。注意:指令執行后,IP 的值自增了 3,因為剛剛我們執行的指令長 3 個字節。使得 CS:IP 指向下一條指令
8)、用 A 命令以匯編指令的格式在內存中寫入機器指令
使用 A 命令寫入匯編指令時,在給出的的起始地址后直接按 Enter 鍵表示操作結束。
同樣可以通過 R 命令與 T 命令配合執行所寫入的匯編指令。
強行總結,匯編學得好,牢飯吃到飽(doge)
總結
以上是生活随笔為你收集整理的Debug工具的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IDEA中Debug的使用
- 下一篇: debug使用方法(概念篇)