1. 程式人生 > >windbg下在kd模式也可以除錯使用者模式程式

windbg下在kd模式也可以除錯使用者模式程式

之前的試winlogon程式,要在系統登錄檔做些設定。後來看到網上除錯lsass程式

只要按如下方法:

!process 0 0 lsass.exe

.process /p /r 815196c0

我發覺按上面的方法做,連設定登錄檔都不需要了,非常方便。

接著我們就可以按呼叫戶模式的程式一樣下斷點除錯了。

舉個例子,我們在登入的過程中需要輸入使用者名稱、密碼,按如下過程就可以看到輸入的內容了。

我在user32!GetDlgItemTextW下了個斷點,這個API我是在OD下看它的呼叫參考得來的

(你可以複製一份,不執行它,只用來看反彙編,OD反出來的彙編碼還是蠻好的)。

kd>!process 0 0 winlogon.exe 找程序
PROCESS 821661c8  SessionId: 0  Cid: 018c    Peb: 7ffd9000  ParentCid: 0138
    DirBase: 0ceb5000  ObjectTable: e14b1220  HandleCount: 392.
    Image: WINLOGON.EXE

kd> .process /p /r 821661c8 置為當前程序,這樣就可以操作它的虛擬空間了
Implicit process is now 821661c8
.cache forcedecodeuser done
Loading User Symbols
.......................................................
kd> bp user32!GetDlgItemTextW 下斷點
kd> bl
 0 e 77d24305     0001 (0001) USER32!GetDlgItemTextW

kd> g 繼續執行,點選使用者名稱並輸入密碼
Breakpoint 0 hit
USER32!GetDlgItemTextW:
001b:77d24305 8bff            mov     edi,edi
kd> kn 檢視一下堆疊
 # ChildEBP RetAddr 
00 0006e778 758d7f60 USER32!GetDlgItemTextW
01 0006e7c8 758d7e1d MSGINA!AttemptLogon+0x4f
*** WARNING: Unable to verify checksum for winlogon.exe
02 0006e974 0103acc7 MSGINA!LogonDlgProc+0xc61
03 0006e998 77d18734 winlogon!RootDlgProc+0x6e
04 0006e9c4 77d23ce4 USER32!InternalCallWinProc+0x28
05 0006ea30 77d23b30 USER32!UserCallDlgProcCheckWow+0x146
06 0006ea78 77d23d5c USER32!DefDlgProcWorker+0xa8
07 0006ea94 77d18734 USER32!DefDlgProcW+0x22
08 0006eac0 77d18816 USER32!InternalCallWinProc+0x28
09 0006eb28 77d2927b USER32!UserCallWinProcCheckWow+0x150
0a 0006eb64 77d292e3 USER32!SendMessageWorker+0x4a5
0b 0006eb84 758f29c8 USER32!SendMessageW+0x7f
0c 0006ebb0 758f2e0d MSGINA!CLogonDialog::Handle_LOGON_LOGON_USER+0x9f
0d 0006f004 758e39bf MSGINA!CLogonDialog::Handle_WM_LOGONSERVICEREQUEST+0x89
0e 0006f018 758d6c3a MSGINA!_Shell_LogonDialog_DlgProc+0x58
0f 0006f1d0 0103acc7 MSGINA!LogonDlgProc+0x93b
10 0006f1f4 77d18734 winlogon!RootDlgProc+0x6e
11 0006f220 77d23ce4 USER32!InternalCallWinProc+0x28
12 0006f28c 77d23b30 USER32!UserCallDlgProcCheckWow+0x146
13 0006f2d4 77d23d5c USER32!DefDlgProcWorker+0xa8
kd> dd esp 檢視返回地址($ra)及引數
0006e77c  758d7f60 0003002a 000005df 00b20800
0006e78c  00000200 0003002a 00000000 0008cd10
0006e79c  00000001 0006e7ac 77d1971c 00000000
0006e7ac  0006e7c4 758d7c4e 0002004a 00000000
0006e7bc  0003002a 00b20000 00b20400 0006e974
0006e7cc  758d7e1d 0003002a 0007e368 0007e3f8
0006e7dc  00000111 00000000 0006edf4 771a3dda
0006e7ec  dcbaabcd 00000000 0006e838 771a3dda
kd> g 758d7f60 把這個API執行完才能得到內容
MSGINA!AttemptLogon+0x4f:
001b:758d7f60 57              push    edi
kd> du 00b20800
00b20800  "111222" 這個就是我輸入的密碼
kd> g
Breakpoint 0 hit
USER32!GetDlgItemTextW:
001b:77d24305 8bff            mov     edi,edi
kd> dd esp  檢視返回地址($ra)及引數
0006e77c  758d7fd1 0003002a 000005de 00b20000
0006e78c  00000200 0003002a 00000000 0008cd10
0006e79c  00000001 0006e7ac 77d1971c 00000000
0006e7ac  0006e7c4 758d7c4e 0002004a 0002004a
0006e7bc  00000000 00b20000 00b20400 0006e974
0006e7cc  758d7e1d 0003002a 0007e368 0007e3f8
0006e7dc  00000111 00000000 0006edf4 771a3dda
0006e7ec  dcbaabcd 00000000 0006e838 771a3dda
kd> g 758d7fd1  把這個API執行完才能得到內容
MSGINA!AttemptLogon+0xb8:
001b:758d7fd1 53              push    ebx
kd> du 00b20000

00b20000  "Administrator" 顯示使用者名稱

相關推薦

PHP設計模式之中介模式(Mediator Pattern)瞭解

咱們先來看下中介者模式(Mediator Pattern)的定義,它就是,用一箇中介物件來封裝一系列的物件互動,中介者使各物件不需要顯式地相互引用,從而使其耦合鬆散,而且可以獨立地改變它們之間的互動,這種模式又稱為調停者模式,它是一種物件行為型模式。 我們先來看使用者與使用

PHP設計模式之建造模式(Builder)瞭解

這個建造者模式,我們也可以稱為生成器模式,核心思想是將一個複雜物件的構造與它的表示分離,使同樣的構建過程可以建立不同的表示,這樣的設計模式被稱為建造者模式,簡單點來說就是為了消除其它物件複雜的建立過程。 例如:汽車,他的發動機引擎有好多品牌,輪胎也有各種材質,內飾更是千奇百

大話設計模式之觀察模式

arm eve his watermark observer cts 多個 放下 們的 從前,有個放羊娃。每天都去山上放羊,一天,他認為十分無聊。就想了個捉弄大家尋開心的主意。他向著山下正在種田的農夫們大聲喊:“狼來了!狼來了!救命啊!”農夫們聽到喊聲

2015-03-12---外觀模式,建造模式(附代碼),觀察模式(附代碼),boost庫應用

思想 err map 函數 成功 each clu all 說我 今天白天主要看了boost庫的應用,主要是經常使用的一些庫,array,bind,function,regex,thread,unordered,ref,smartpointers庫,晚上看了看設計模式。

設計模式之建造模式(Builder)

人的 做出 字體 存在 分享 定義 固定 也不會 抽象方法 一個人活到70歲以上,都會經歷這樣的幾個階段:嬰兒,少年,青年,中年,老年。並且每個人在各個階段肯定是不一樣的呀,我覺得可以說世界上不存在兩個人在人生的這5個階段的生活完全一樣,但是活到70歲以上的人,都經歷了這幾

設計模式之裝飾模式

一點 ron 測試類 實現類 stub generated class void nbsp 一.裝飾者模式特點:1.裝飾者和被裝飾者對象有相同的超類2.可以用一個或多個裝飾者包裝一個對象3.由於裝飾者和被裝飾者具有相同超類,所以任何需要被包裝對象的場合,可以用裝飾過的對象代

設計模式之中介模式

中介者對象1、中介者模式的簡介: a、中介者模式的核心: - 如果一個系統中對象之間的聯系是呈現為網狀結構,對象之間存在大量多對多關系,將導致關系極其復雜,這些對象稱為“同事對象”。 - 我們可以引入一個中介者對象,使各個同事對象只跟中介者對象打交道,將復雜的網絡結構解為如下的星

設計模式之觀察模式

觀察者模式 observer 監聽器的底層實現 observable 群發消息 轉發機制 1、觀察者模式的簡單介紹: a、核心: - 觀察者模式主要用於 1 : N 的通知中。當一個對象(目標對象 Subject 或者 Objservable )的狀態變化時,他需要及時告知

設計模式_中介模式

normal args current auto 管理 override prompt 耦合 小系統 定義 Define an object that encapsulates how a set of objects interact. Mediator pro

PHP模式設計之單例模式、工廠模式、註冊樹模式、適配器模式、觀察模式

操作符 unset 關系 玩具 ati ase color 只有一個 bsp php模式設計之單例模式   什麽是單例模式?   單例模式是指在整個應用中只有一個實例對象的設計模式   為什麽要用單例模式?   php經常要鏈接數據庫,如果在一個項目中頻繁建立連接數據庫,會

javaScript 設計模式之中介模式示例

ava 設計模式 cti rip type color function div this 飛機把註冊信息放到鐵塔裏,發送數據到鐵塔,報告其它的飛機一些信息。 var feiji = function( name ){ this.name = name; }

Java設計模式補充:回調模式、事件監聽器模式、觀察模式(轉)

應該 hand 關閉 lan china 關註 update 使用 event 一、回調函數 為什麽首先會講回調函數呢?因為這個是理解監聽器、觀察者模式的關鍵。 什麽是回調函數 所謂的回調,用於回調的函數。 回調函數只是一個功能片段,由用戶按照回調函數調用約定來實現的

設計模式之觀察模式詳解

http 通知 stat 發布-訂閱 () class arraylist nag .cn 觀察者模式又稱為發布-訂閱模式,涉及的角色有:   ●  抽象主題   ●  具體主題   ●  抽象觀察者   ●  具體觀察者 案例演示:公司發放工資的時候通知所有觀察者工資已發

【設計模式】建造模式

object lan pat alt pri 創建對象 private 關心 turn 1、定義 1.1 標準定義 建造者模式( Builder Pattern) 也叫做生成器模式, 其定義如下: Separate the construction of a complex

【Unity3D與23種設計模式】建造模式(Builder)

產出 private 一個 gof 行為 並且 bstr reac 定義 GoF中定義: “將一個復雜的構建流程與它的對象表現分離出來,讓相同的構建流程可以產生不同的對象行為表現。” 建造者模式可以分為兩個步驟來實施: 1.將復雜的構建流程獨立出來,並將整個流程分成

【設計模式】中介模式

col com fin 每一個 mediator std 一對一 類的方法 -1 1、 定義 1.1 標準定義 中介者模式的定義為:Define an object that encapsulates how a set of objectsinteract.Med

【設計模式】 觀察模式

new mes 一對多 建議 ios between 生存 兩個 開始 1、定義 1.1 標準定義 觀察者模式(Observer Pattern)也叫做發布訂閱模式(Publish/subscribe),它是一個在項目中經常使用的模式,其定義如下:Define a one-

23種設計模式之觀察模式

主題 一個 server bsp 監聽 images 關系 .com 自動更新 觀察者模式(Observer):定義了一種一對多的關系,讓多個觀察者對象同時監聽某一個主題對象。這個主題對象在狀態發生變化時,會通知所有觀察者對象,使它們能夠自動更新自己。 23種設計模式之

09.設計模式_裝飾模式

9.png 組件 復雜 2-2 就會 蘋果手機 apple pat 轉載 轉載自 http://www.cnblogs.com/zhili/p/DecoratorPattern.html 一、引言 在軟件開發中,我們經常想要對一類對象添加不同的功能,例如要給手機添加貼膜

【設計模式】裝飾模式-明月裝飾了你的窗子

return rgs light 刪除 clas pan net public 不改變 裝飾者模式   使用裝飾者模式,可以動態的給一個對象添加一些額外的職責。這適用於,我們只希望給某個對象而不是整個類添加一些功能的場景。通過使用含有某個特定功能的類來“包裹”原始的類,提