除錯物件的構建

2022-09-15 08:30:15 字數 1462 閱讀 9503

windows核心分析索引目錄:

除錯物件的構建

一、從感性角度來理解偵錯程式與被除錯程式建立的連線

1)除錯程式與被除錯程式通過什麼來建立連線的呢?

答:debug_object。

2)這 debug_object 是什麼呢?

答:可以認為其是兩個程式之間的中轉站,它不是偵錯程式,也不是被除錯程式的核心物件。

剛開始學習時,老搞不懂 debug_object 到底是偵錯程式物件還是被除錯程式物件。

但現在再來看,其根本不是同一類物件,前面那個是程序物件,而debug_object是除錯物件。

當被除錯程式出現異常時,其被除錯程式不會發往偵錯程式,而是發往除錯物件debug_object,由它負責代為傳送到偵錯程式來進行處理。

二、除錯的構建

1)如何構建除錯程式與被除錯程式的呢?

答:分為兩種情況。

1》建立除錯程序,createprocess中修改flag標誌位。 乙個簡單的建立被除錯程序的案例

2》附加的形式,使用 debugactiveprocess函式。

三、debugactiveprocess函式的逆向分析

(這部分一共有六七個函式,太龐大了,我就直接貼出問題吧)

1. 你對除錯程式與被除錯程式的鏈結存在哪些誤區之前?

2. 檢視 _dbguiconnecttodbg(ntdll.dll) 反彙編**。

1)指出哪個部分是建立 debug_object 物件。

2)指出哪個部分是將該 debug_object 物件放入 teb+0xf24h 處的。

3. 搜尋 wrk,來查詢 debug_object 的結構體的結構,並認真閱讀裡面的內容。

4. 檢視 _dbguidebugactiveprocess(ntdll.dll) 反彙編**

1)指出哪一部分是將 debug_object 與 被除錯程式建立聯絡。

2)指出哪一部分是下系統斷點。

5. 檢視 _ntdebugactiveprocess(ntoskrnl.exe) 反彙編**

1)指出哪一部分是檢測自身(自己不能除錯自己)。

2)指出哪一部分是檢測被除錯程式是否是系統程序。

3)指出哪一部分是將被 debug_object 與 被除錯程式建立聯絡

6.檢視 dbgkpsetprocessdebugobject(ntoskernl.exe) 反彙編**

快速找出哪一部分是 將debug_object 填入 eprocess.debugport中。

Java物件構建

首先,簡單的一句 student student new student 建立乙個叫做student的物件讓student這個引用變數指向。其實,這麼一句 分為5個部分。編譯器從左向右解析 1.student,類載入,解析student 檢視整個文件,發現這個類,就把這個類的位元組碼,載入到記憶體中...

C物件導向 構建物件

一組鬆散的變數是比較難追蹤的,所以一般採用結構體將其封裝起來 structslogstruct 一般我們會選擇直接進行建立,像這樣 static struct slogstruct glogdata 但是如果要讓c 看起來更像物件導向,那麼這個結構體應該在初始化的時候進行建立,分配記憶體,並返回給呼...

Mat物件的基本構建

include include include include using namespace std using namespace cv int main namedwindow test opencv setup cv window autosize imshow test opencv se...