iT邦幫忙

2026 iThome 鐵人賽

DAY 13
0
Security

《Nyahello!從零開始的 30 天 malware 學習日誌》系列 第 13

【Day 13】開啟 x64dbg!認識 Debugger 的基本操作介面

  • 分享至 

  • xImage
  •  

前言

我們已經了解何謂 Debugger,於是,今天要來介紹一款非常常用的 Debugger──x64dbg,他是一個免費的開源軟體,支援 64-bit 和 32-bit(x32dbg),取代了以前古老且只支援 32-bit 的 OllyDbg。

載入惡意程式

要載入惡意程式,可以直接將執行檔或是 DLL 檔案直接載入,如果惡意程式已經在跑了,也可以 attach 到 process。

打開執行檔

打開 x64dbg 以後,選擇

File > Open

然後選取要載入的執行檔

https://ithelp.ithome.com.tw/upload/images/20260908/20183878Ymczj3gJuU.png

如果要加上參數,可以去修改

File > Change Command Line

打開執行檔以後,x64dbg 會用自己的 loader 載入這隻檔案,就像 Windows OS 一樣。預設情況下,如果 x64dbg 有找到程式開發者所設定的 Entry Point(通常是 WinMain),它就會在 WinMain 開始執行之前暫停,如果 OllyDbg 找不到 WinMain,就會停在 PE Header 所記錄的 Entry Point。

然後也可以自己修改第一次要停在哪,舉例來說,如果要在程式碼都還沒開始執行之前就停下來,就選 System Breakpoint 當開始的斷點

Attach to a running process

除了直接打開執行檔,也可以把 x64dbg attach 到一個正在跑的 process,這樣在 Debug 一個正在跑的 malware 的時候非常實用。

選取

File > Attach

就會跳出選單讓你選正在跑的 process

https://ithelp.ithome.com.tw/upload/images/20260908/20183878R9oPpOKEUE.png

找到以後按 Attach,x64dbg 就會進入並停止程式與所有 threads。

Attach 完以後,正在執行的 thread 會被暫停,除錯器會顯示目前 CPU 正在執行的那一條指令,如果剛好停在 Windows 的系統 DLL(例如 kernel32.dll、ntdll.dll)裡,我們通常不需要去分析 Windows 本身的程式,而是希望回到惡意程式自己的程式碼。因此,可以在惡意程式的 Code Section(通常是 .text) 設定 Breakpoint on Access/Execution。之後當 CPU 再次開始執行(存取)這個程式碼區段時,Debugger 就會自動停下來,然後就可以分析惡意程式本身。

使用介面

將程式載入到 x64dbg 以後,就會看到四個顯示資訊的視窗,如下圖

https://ithelp.ithome.com.tw/upload/images/20260908/20183878bH1A1PX1aM.png

1. Disassembler window

這個視窗會顯示正在除錯程式的組合語言程式碼,而且會以目前的 Instruction Pointer 為中心顯示他之前跟他之後的幾條指令,像是畫面上的 eip(64-bit 的話是 rip),並且通常要被執行的下一個指令會被反白起來,然後在視窗中按空白鍵就可以修改指令或資料。

2. Registers window

這個視窗會顯示被 Debug 的程式的目前暫存器們的狀態,當程式碼被 Debug 的時候,如果上一個執行的指令有修改到這些暫存器的值,顯示的顏色就會從黑色變紅色,如果要修改暫存器的值,可以直接按右鍵修改。

https://ithelp.ithome.com.tw/upload/images/20260908/20183878Xr7bFUNpPZ.png

3. Stack window

這個視窗會顯示目前正在除錯的 Thread,其 Stack 目前的內容,並且永遠都是從目前 Stack 的最上方開始顯示,然後直接對一個 Stack 的位址按右鍵選 Modify 就可以修改,而且 x64dbg 會在某些 Stack 位址新增有用的註解去描述在 API call 之前放進 Stack 中的參數,讓分析更方便。

4. Memory dump window

這個視窗會顯示目前程式正在使用的記憶體內容,如果要跳到某個特定的記憶體位址,按 Ctrl+G 並輸入記憶體位址就會直接跳過去,或者對記憶體位址按右鍵選 Follow in Dump 就會跳過去。如果要修改記憶體的話,按右鍵並選取 Binary > Edit 就可以修改,這樣可以修改惡意程式存在 RAM 中的全域變數和其他資料。

結語

今天認識了 x64dbg 的功能與基本的操作頁面,明天會繼續介紹分析的步驟!因為時間關係來不及今天先水一下QQ

參考資料

  • Practical Malware Analysis (Chapter 9)

本日貓味

https://ithelp.ithome.com.tw/upload/images/20260908/20183878HMzj0sxulO.jpg


上一篇
【Day 12】認識 Debugger!開始學習 malware 進階動態分析
下一篇
【Day 14】動態分析地圖:程式的記憶體配置、位址與執行緒
系列文
《Nyahello!從零開始的 30 天 malware 學習日誌》17
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言