1. 程式人生 > >x64dbg零基礎使用教程

x64dbg零基礎使用教程

原文網址:https://www.52pojie.cn/thread-762711-1-4.html

 

這篇文章主要是為.NET逆向但不會x64dbg的同學準備的,文章基本上零基礎,會一點c#/vb.net就能看懂文章。
文章以visual studio 2017為參照,講解如何像用vs除錯.NET程式集一樣使用x64dbg除錯本機程式碼
x64dbg下載地址:https://github.com/x64dbg/x64dbg/releases
 




x64dbg基本操作:

1.步進
等於vs中的"逐語句"
vs圖示:
 
x64dbg圖示:
 
vs快捷鍵:
F11
x64快捷鍵:


F7

2.步過
等於vs中的"逐過程"
vs圖示:
 
x64dbg圖示:
 
vs快捷鍵:
F10
x64快捷鍵:
F8

3.執行到返回
等於vs中的"跳出"
vs圖示:
 
x64dbg圖示:
 
vs快捷鍵:
Shift+F11
x64快捷鍵:
Ctrl+F9

4.執行
等於vs中的"啟動"/"繼續"
vs圖示:
 
 
x64dbg圖示:
 
vs快捷鍵:
F5
x64dbg快捷鍵:
F9

5.斷點
在想斷下的指令上按下對應快捷鍵即可vs圖示:
啟用:  
禁用:  
x64dbg圖示:
啟用:  
禁用:  
vs快捷鍵:

F9
x64快捷鍵:
F2

x64dbg入門操作:

1.設定符號檔案儲存路徑:
Q:符號檔案是什麼?A:*.pdb檔案,還不知道就百度吧。。。Q:為什麼要設定?
A:符號檔案通常很大,不然x64dbg預設儲存到自身目錄下,導致升級x64dbg,遷移x64dbg到其它位置極為不便
 
 
這樣就設定好了

2.使用符號檔案:
很多情況下,x64dbg不會自動載入符號檔案(不知道為什麼,可能是防止除錯時太卡吧,vs載入過多符號檔案就會卡頓)
這時候就需要我們手動載入了
 
x64dbg沒有載入選項,可以點"下載此模組的符號資訊"(要載入所有符號檔案可以點"下載所有模組的符號資訊")
如果符號檔案快取資料夾中已經有了這個符號檔案,x64dbg直接從本地載入,否則從符號檔案伺服器上下載並載入

右邊顯示了dll自身匯出的函式和符號檔案匯出的函式,左鍵單擊這裡的函式,按下F2,是可以下斷點的

3.安裝外掛:
對於.NET逆向,一般只要裝一個反偵錯程式檢測的外掛就行了
我在用@xjun 的SharpOD:https://www.52pojie.cn/thread-628837-1-1.html
不是打廣告,是這個外掛真的很好用,除錯體驗極佳(用作者的推薦設定)
不扯了,說下怎麼安裝
 
 
把壓縮包裡面的*.dp*檔案拖入對應的資料夾(其實這些*.dp*也是*.dll檔案,只不過改了個字尾名讓x64dbg知道這裡有個外掛)
比如裝32位x64dbg的外掛,就將*.dp32拖入x64dbg\x32\plugins

x64dbg實際操作:

1.檢視函式呼叫時的引數:
首先你需要明白什麼是呼叫約定,這些需要百度
現在我使用32位x64dbg除錯一個unpackme,在mscorwks.dll的AssemblyNative::LoadImage處下了斷點,按下F9,x64dbg在此函式入口處斷下了
 
在符號視窗可以看到這個函式的呼叫約定是fastcall
我們回到CPU,把呼叫約定改成fastcall
 
 
這裡的1,2,3就是代表了第1,2,3個引數
我們剛才已經看到了,這個函式第一個引數是"Array<unsigned char> *",表示指向了一個位元組陣列,這裡的"unsigned char"等同於C#/VB.NET中的"byte",而不是C#/VB.NET中的"char"

2.轉儲記憶體到檔案:
我們在記憶體視窗中按下Ctrl+G,輸入0312BBAC
 
成功跳轉到了一個記憶體區域,儲存了"Array<unsigned char>"
我們點一下4D或者M
 
再將右邊滾動條滾到底部,按住Shift,在左鍵單機一下最後一個位元組
 
右鍵,二進位制編輯->儲存到檔案
 
這樣,你就把一個.NET程式集人工Dump下來了
dnSpy開啟看看,是個沒啥用的程式集(這個僅僅是演示,AssemblyNative::LoadImage斷點有時是很有用的)
 

應該沒什麼要寫的了,對於.NET逆向這些完全足夠了
如果有什麼要補充的,我還會再編輯這個帖子,並且更新標題上的日期,新手可以收藏這個帖子