ntsd教程

最近要用到ntsd,在網上找了幾個文章都是說用它來結束進程什麼的,其實ntsd是個調試器,功能強大的很呢!

 

ntsd命令詳細的幫助信息:
ntsd自身是一個基於內核的調試器程序。他有很多隱藏功能,都是system權限,可是人們通常使用的只有一個或者數個參數,如 ntsd -c q -p ,ntsd -c q -pn.大家都知道這個命令到底有多強大,我現在把其他的參數給大家介紹以下

參數介紹:
-? 顯示幫助信息
該命令行是基於內核模式的調試器
-aDLLName 設置默認DLL執行頭信息
-c 和調試命令一起執行,執行序列號可以遠程同步
-d 發送所有調試信息到內核調試器,該參數不能用在遠程系統,只能在內核調試器允許的時候纔可以使用。
-g 忽略調試器中初始化斷點
-G 忽略在進程結束是最後的斷點
-hd 對創建的進程提供未使用的堆棧,這種選項只能工作在windows系統底層
-o 把所有的進程調試信息發送調試器
-p 顯示PID,捕獲和進程對應的十進制ID
-pd 執行完成後自動退出調試器
-pe 捕獲任意一個正在執行DUBUG機器所使用的端口
-pn 捕獲並顯示進程名
-pt 超時而中斷,用#表示中斷號
-pv 捕獲任意不活動進程
-r 錯誤級別編號(0-3),在函數(seeseterroleave)中使用
-robp 允許把斷點所表示內存區域設爲只讀
-t 顯示錯誤等級,和-r配合使用
-w 在虛擬機中單獨調試16位應用程序
-X 爲第二個通道的中斷設置AV例外
-x<event> 和參數-e -d -n -i並用,爲一個指定event設置一箇中斷狀態
-2 爲DEBUG創建一個獨立會話窗口
-i 爲制定的進程產生默認的路徑(和(see_NT_EXECUTABLE_IMAGER_PATH)函數的效果相同)
-lines 如果系統接受該請求,線性序列將被使用
-myob 忽略不匹配的DBHELP.DLL版本
-n 允許輸出symob句柄的詳細信息
-noio 爲指定遠程服務禁止所有I/O
-noshell 禁用shell
-QR<[url=file://\\machine]\\machine[/url]> 查詢遠程服務是否開啓
-s 禁止載入空閒的 symbol
-ses 允許嚴格的 symbol載入
-sfce 在搜索文件期間遇到關鍵錯誤,而導致搜索失敗
-sicv 當載入symbol時忽略CV記錄
-snul 遇到非法的名稱,禁止自動載入symobl
-srcpath 指定原搜索路徑
-v 允許輸出調試器的詳細信息
-wake 喚醒一個休眠的調試器,然後退出
-y 指定symbol搜索路徑,和(see _NT_SYMBOL_PATH)函數相同
-z<CrashDumpFile> 對一個crash dump file文件指定一個名字到debug
-zp<CrashDumpFile>指定一個頁面跳轉文件給crash dump文件使用
-remote 讓你可以遠程連接到一個DEBUG處理中心,必須優先同意該請求。
傳輸端口:tcp npipe ssl spipe 1394接口 串口,
名字:創建一個DEBUG所需機器名
端口ID:debug服務所需的端口號
tcp端口:port=<sock port #>
npip端口:pipe=<name of pipe>
1394接口:channel=<channel #>
串口: port=<com port> baud=<baud rate> channel=<channel #>
爲SSL很SPIPE顯示檔案記錄(舉例說明)

NTSD命令的快捷鍵:
ctrl-b:退出調試器
ctrl-c:中斷標記
ctrl-f:前一箇中斷標記
ctrl-p:當前調試器
ctrl-v:切換調試器爲詳細模式
ctrl-w:顯示版本信息



有一個非常重要的參數就是-v參數,我們可以通過它發現一個進程下面掛接了哪些連接庫文件.有很多病毒,木馬,或者惡意軟件,都喜歡把自己做成動態庫,然後註冊到系統正常程序的加載庫列表中,達到隱藏自己的目的.

首先我們需要設置一下ntsd的輸出重定向,最好是重定向到一個文本文件,方便我們分析研究.
c:\>set _NT_DEBUG_LOG_FILE_APPEND=c:\pdw.txt
注意,雖然輸出重定向了,但是我們的輸出依然會繼續顯示在屏幕上,而且會進入到debug模式,我們使用-c q參數,就可以避免這個問題.

c:\>ntsd -c q -v notepad.exe
現在我們的pdw.txt文件中,就可以看見notepad.exe文件的調試信息.

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章