《逆向工程實戰》 windbg相關學習記錄

2021-09-09 05:21:40 字數 3057 閱讀 2460

這篇我主要記錄一些windbg的常用命令,在書中都可以找到這些知識點,就是記錄下,防止自己在使用過程中有時記不起來自己想用的命令是什麼。

t(f11)--step into

p(f10)--step over

gu(shift+f11)--go up,執行到當前函式直到結束,返回到呼叫者

g(f5)--go,恢復程式執行

~命令可以列出所有執行緒

使用-o引數除錯某路徑下程序

可以使用sx命令列出所有事件

通過下面命令可以控制事件/異常的處理方式:

sxe event--為某個事件開啟斷點

sxd event--為某個事件關閉斷點

sxr event--只為某個事件開啟輸出

sxi event--忽略某個事件

命令sxe或sxd非常有用的用途就是捕獲模組的載入或解除安裝。進行核心除錯的時候,想要在某個驅動程式或者dll載入的時候停下偵錯程式,可以使用如下命令:

sxe ld:driver_name.sys
可以通過sx- -c command event命令把乙個命令與事件關聯。如果想要在每次載入乙個模組的時候顯示棧內容,可以使用如下命令:

sx- -c 「k」 ld
r命令顯示當前暫存器的值

以浮點格式顯示暫存器

r eax:f(這裡假設eax是浮點值)
顯示記憶體內容,在dp、dd、dq後面加上s時,就會顯示與位址對應的符號。這對於發現在陣列或虛表中的函式指標是非常有幫助的。

d[a|b|c|d|d|f|p|q|u|w|w]

b\w\d\q--分別是位元組、字、雙字、四字

f\d--分別是單精度和雙精度浮點值

a\u--分別用於顯示ascii字元和unicode記憶體內容

p--顯示指標值

檢視符號和結構化資料

dt [type] [address]

dt unicode_string 0x18fef4

dv [flags] [pattern]--顯示區域性變數資訊

!dh [options] address--轉儲pe映像頭

!drvobj driverobjectptr [flags]--顯示driver_object物件資訊

!heap--顯示堆資訊

!pool--顯示記憶體池資訊

記憶體命令雜項

s [-[flags]type] range pattern--在記憶體中搜尋指定模式

c range_for_address1 address2--比較兩段記憶體區域

.dvalloc [options] size--在偵錯程式程序空間分配記憶體

建立斷點的簡單語法,bl 列出所有斷點,bd命令關閉斷點,be命令開啟斷點,bc命令清除斷點

bp address [「commandstring」]

bu address "commandstring"

bm symbolpattern ["commandstring"]

條件斷點,當eax的值為5的時候,斷點會停止程式執行,否則會繼續執行

bp address ".if @eax!=5 "
使用lm命令得到已載入和解除安裝的模組列表

在核心模式下檢視所有執行的程序,這等同於不加任何引數的擴充套件命令!for_each_process

!process 0 0
使用核心模式偵錯程式在使用者模式程序中設定斷點。首先需要切換到正確的程序上下文,這需要知道eprocess值:

然後使用.process /r /p eprocess命令切換到需要的程序上下文,這時使用lm命令不但可以列出已載入核心驅動,還可以列出使用者模式模組:

.process /r /p 81e68558
.printf命令是用於顯示來自於指令碼或命令的資訊的最有用的命令之一。

.printf

%p--顯示指標值

%d,%x,%u--顯示整型值

%ma/%mu--顯示指定指標處的ascii/unicode字串

%msa/%msu--顯示指定指標處的ansi_string/unicode_string值

%y--顯示指定指標處的符號名稱(及布局,如果有的話)

示例:.printf 「%mu\n」, poi(@esp+4);

.printf "t0=%d t1=%d eax=%x ebx=%d\n", @$t0,@$t1,@eax,@ebx

其他一些更有用的命令

#--搜尋某個反彙編模式

!gle--返回最後的錯誤碼

.load--載入偵錯程式擴充套件

.cls--清空偵錯程式輸出視窗

.effmach--修改或顯示偵錯程式使用的處理器模式

逆向工程學習記錄

od基本指令 指令快捷鍵 含義restart ctrl f2 重新開始除錯 step info 單步步入 f7執行一句op code 操作碼 若遇到呼叫命令 call 將進入函式 內部 step over 單步步過 f8執行一句op code 操作碼 若遇到呼叫命令 call 將進入函式自身,不跟隨...

新書《iOS應用逆向工程 分析與實戰》

前無古人!小白福音!國內第一本ios應用逆向工程類圖書 ios應用逆向工程 分析與實戰 就要空降啦 你是否曾因應用上線的第一天即遭破解而無奈苦惱,想要加以防範,卻又束手無策?你是否曾為某一應用深深折服,想要借鑑學習,卻又無從下手?你是否已不滿足於public api,想要進軍cydia開發,卻又求學...

軟體逆向工程學習(一)

本專題學習軟體逆向的基本原理 方法,並針對具體案例進行逆向分析,從而學習一套完整 系統的軟體逆向的方法並獲取相關經驗。ollydbg 常用於動態除錯程式,無法除錯核心,ui功能強大。softice 工作在ring0態的偵錯程式,常用於除錯驅動程式,功能強大的命令列工具。windbg 介於上兩者之間的...