windbgpreview詳解

一、從windbgpreview下載

windbgpreview是微軟官方推出的一款調試工具,可以用於調試Windows系統和應用程序,其界面友好,功能強大。它可以管理運行的進程,監視線程,跟蹤系統內核函數的執行情況,診斷內存泄漏和損壞等問題。

windbgpreview可以從Windows Store下載,也可以從官方網站https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk和https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/debugger-download-tools下載。下載後,安裝即可使用。

二、windbgpreview怎麼用

首先,需要以管理員許可權啟動windbgpreview。啟動後,菜單欄上的File可以用於打開要調試的應用程序或數據文件。如果要調試進程,可以按下F6或使用Attach to Process菜單項。如果要調試內核,需要在啟動時使用-c參數,並以管理員身份啟動。在windbgpreview中,還可以使用以下命令列出進程或線程、查看調試目標狀態、設置斷點、跟蹤堆棧、查看內存內容等:

?或help:列出可用命令幫助
~或~*:列出所有線程信息
~tid:列出指定tid的線程信息
.dp /m:列出內存分頁信息
.dump /ma /u /f filename:將調試目標的內存轉儲到指定文件
!analyze:分析調試目標崩潰的原因

三、windbgpreview堆棧溢出調試

當程序在執行過程中發生錯誤,windbgpreview可以跟蹤堆棧,並查找是否發生堆棧溢出。下面是一個簡單的堆棧溢出漏洞實例:

#include <stdio.h>
#include <string.h>

void vuln(char *str)
{
    char buf[100];
    strcpy(buf, str);
}

void main(int argc, char **argv)
{
    vuln(argv[1]);
    printf("Over!\n");
}

上述代碼定義了一個函數vuln,其中調用了strcpy函數將輸入的字元串拷貝至buf緩衝區,存在緩衝區溢出漏洞。如果在調用vuln函數時傳入長度超過100的字元串,那麼溢出就會發生。

要在windbgpreview中調試該漏洞,需要將代碼編譯為可執行文件,並在命令行傳入惡意輸入。在windbgpreview中,首先需要輸入以下命令:

windbg -g -Q

然後,使用File/Open Executable菜單項打開編譯好的可執行文件。

輸入以下命令以啟動程序:

g

接著,輸入以下命令設置斷點:

bp vuln

然後,輸入以下命令以執行在斷點處停止的程序:

g AAAABBBBCCCCDDDD...

其中,AAAABBBBCCCCDDDD是要傳入的惡意輸入。程序會在調用vuln函數時停止。輸入k命令查看當前的函數堆棧:

k

堆棧信息中,可以看到vuln函數的返回地址被覆蓋,即發生了堆棧溢出。

四、windbgpreview為何打不開

如果在打開windbgpreview時發生錯誤,可以嘗試以下步驟解決問題:

1、檢查是否安裝了Visual Studio,Visual Studio是使用windbgpreview的前提條件之一。

2、檢查是否安裝了對應版本的Windows軟體開發工具包,在使用windbgpreview時需要使用對應版本的工具包。

3、嘗試重新安裝windbgpreview。

4、查找並修復可能導致問題的Windows更新或驅動程序。

五、windbgpreview為何沒有lanalyze

在windbgpreview中,與LANalyze類似的功能是在Detours庫中實現的。Detours庫是微軟官方推出的一款鉤子技術庫,可以對任意函數進行攔截、重定向、跟蹤等操作,包含了LANalyze類似的堆追蹤功能。要在windbgpreview中使用Detours庫,可以按照以下步驟操作:

1、下載Detours庫,將其解壓縮到合適的位置。

2、在windbgpreview中輸入以下命令:

.load \detours.dll

其中,是Detours庫所在目錄的路徑。

3、輸入以下命令,使windbgpreview能夠載入Detours庫的符號:

.symfix+ \detours.pdb

其中,是Detours庫pdb文件所在目錄的路徑。

4、使用Detours庫調試想要攔截的函數。

六、windbgpreview調試內核設置選取

要在windbgpreview中調試內核,需要進行以下設置:

1、打開目標Windows機器的調試功能,具體方式與版本相關。

2、在啟動Windows時選取啟動項:啟用調試選取(DEBUG)。

3、連接windbgpreview與目標Windows機器,可以使用串口、網路等方式連接。

4、啟動windbgpreview,菜單欄上的File/Open Kernel Dump可以用於打開內核轉儲文件,選擇正確的機器架構,打開文件。

5、使用當地符號伺服器,可以輸入命令.symfix或.symfix+避免符號載入的問題。

6、在非常低的內核級別,可以使用dp(Display Page)命令查看內存頁的內容。

總之,windbgpreview作為一款強大的調試工具,可以在多種場景下使用。通過學習windbgpreview的使用方法,可以提高Windows系統和應用程序的調試效率。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/156816.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-18 01:57
下一篇 2024-11-18 01:57

相關推薦

  • 神經網路代碼詳解

    神經網路作為一種人工智慧技術,被廣泛應用於語音識別、圖像識別、自然語言處理等領域。而神經網路的模型編寫,離不開代碼。本文將從多個方面詳細闡述神經網路模型編寫的代碼技術。 一、神經網…

    編程 2025-04-25
  • Linux sync詳解

    一、sync概述 sync是Linux中一個非常重要的命令,它可以將文件系統緩存中的內容,強制寫入磁碟中。在執行sync之前,所有的文件系統更新將不會立即寫入磁碟,而是先緩存在內存…

    編程 2025-04-25
  • Linux修改文件名命令詳解

    在Linux系統中,修改文件名是一個很常見的操作。Linux提供了多種方式來修改文件名,這篇文章將介紹Linux修改文件名的詳細操作。 一、mv命令 mv命令是Linux下的常用命…

    編程 2025-04-25
  • Python輸入輸出詳解

    一、文件讀寫 Python中文件的讀寫操作是必不可少的基本技能之一。讀寫文件分別使用open()函數中的’r’和’w’參數,讀取文件…

    編程 2025-04-25
  • nginx與apache應用開發詳解

    一、概述 nginx和apache都是常見的web伺服器。nginx是一個高性能的反向代理web伺服器,將負載均衡和緩存集成在了一起,可以動靜分離。apache是一個可擴展的web…

    編程 2025-04-25
  • MPU6050工作原理詳解

    一、什麼是MPU6050 MPU6050是一種六軸慣性感測器,能夠同時測量加速度和角速度。它由三個感測器組成:一個三軸加速度計和一個三軸陀螺儀。這個組合提供了非常精細的姿態解算,其…

    編程 2025-04-25
  • C語言貪吃蛇詳解

    一、數據結構和演算法 C語言貪吃蛇主要運用了以下數據結構和演算法: 1. 鏈表 typedef struct body { int x; int y; struct body *nex…

    編程 2025-04-25
  • Python安裝OS庫詳解

    一、OS簡介 OS庫是Python標準庫的一部分,它提供了跨平台的操作系統功能,使得Python可以進行文件操作、進程管理、環境變數讀取等系統級操作。 OS庫中包含了大量的文件和目…

    編程 2025-04-25
  • Java BigDecimal 精度詳解

    一、基礎概念 Java BigDecimal 是一個用於高精度計算的類。普通的 double 或 float 類型只能精確表示有限的數字,而對於需要高精度計算的場景,BigDeci…

    編程 2025-04-25
  • git config user.name的詳解

    一、為什麼要使用git config user.name? git是一個非常流行的分散式版本控制系統,很多程序員都會用到它。在使用git commit提交代碼時,需要記錄commi…

    編程 2025-04-25

發表回復

登錄後才能評論