iT邦幫忙

2026 iThome 鐵人賽

DAY 19
0
Security

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

【Day 19】竄改之術!使用 debugger 對函式內容進行 patch

  • 分享至 

  • xImage
  •  

前言

我們已經進行了一番基礎的動態分析,了解了這隻惡意程式的安裝行為,並使用 IDA Pro 對 lab 9-1 的函式參數進行分析,得知在輸入參數時必須提供密碼,為了讓我們的分析可以繼續順利進行,今天就要學習如何將函式中的檢查機制 patch 掉!

lab 9-1

Questions

3. 要如何永久 patch 掉這支惡意程式讓他不再需要密碼?

昨天 的分析中我們已經得知在 0x402510 可以看到要求的密碼為 abcd,我們可以透過使用這個密碼或是把他 patch 掉,而今天就是要嘗試把他 patch 掉。

我們不去逆向他,而是直接 patch 掉執行檔,讓位於 0x402510 的密碼檢查函式永遠回傳代表驗證成功的值,這樣一來,我們就可以繼續分析這個惡意程式真正的核心功能。我們注意到,在位址 0x40251B0x402521 之間有一段 inline 的 strlen 函式呼叫

https://ithelp.ithome.com.tw/upload/images/20260914/20183878LMJX2CZOio.png

如果傳入的參數沒有通過這項檢查,eax 就會被清為 0,接著程式會從 0x4025A0 的 function cleanup 的部分繼續執行。

昨天進行逆向分析後可以發現,只有輸入正確的參數,這個函式才會回傳數值 1,但是我們要修改這個函式,使它無論收到什麼參數,都一律回傳 1,為了做到這一點,我們會插入下圖所顯示的指令。

https://ithelp.ithome.com.tw/upload/images/20260914/20183878WdO8EBz2T3.png

我們使用 x32dbg 的 Assemble 選項來組譯這些指令,得到一段長度為 6 bytes 的機器碼:B8 01 00 00 00 C3。由於 CALL 指令會事先準備好 stack,而 RET 指令會負責在函式返回時處理相應的流程,因此我們可以直接覆寫密碼檢查函式最開頭,也就是位址 0x402510 的指令。要修改這些指令,可以在想開始修改的位址上按右鍵,然後選擇 Binary > Edit,如下圖

https://ithelp.ithome.com.tw/upload/images/20260914/20183878W2ue4qp2OW.png

下圖顯示了在 Edit 對話框中輸入完成後的組譯指令,由於我們想要寫入 6 bytes 的資料,覆蓋掉原本只佔 1 byte 的指令,因此我們取消勾選標示為 Keep size 的選項。接著,我們在 HEX+06 欄位中輸入組譯完成的十六進位數值,然後按下 OK

https://ithelp.ithome.com.tw/upload/images/20260914/20183878cRjBP0gzGC.png

x32dbg 會自動進行組譯,並且在正確的位置顯示新的指令。接下來,我們要把這些修改儲存到執行檔中。方法是在反組譯視窗中按滑鼠右鍵,選擇 Copy to executable → All modifications。接受接下來出現的所有對話框,並將修改後的新版本儲存為 Lab09-01-patched.exe

為了測試密碼檢查函式是否已經成功被停用,我們再次使用命令列參數 -in 來除錯這個程式,這次 malware 成功通過位址 0x402510 的檢查,並跳到位址 0x402B3F。再執行六條指令之後,一個指向第一個命令列參數的指標會被 push 到 stack 上,而它旁邊則會有另一個指向 ASCII 字串「-in」的指標。下圖顯示了此時 stack 的狀態。

https://ithelp.ithome.com.tw/upload/images/20260914/20183878s9K9TMJ8vl.png

結語

學會了如何在 Debugger 中 patch 掉函式以後,在惡意程式分析中會非常有用,因為有時需要操控達到的結果以觀察惡意程式的行為,此時 patch 的功能便會非常實用

參考資料

  • Practical Malware Analysis (Chapter 9)

本日貓味

https://ithelp.ithome.com.tw/upload/images/20260914/2018387808x33QbNwM.jpg


上一篇
【Day 18】動態前的靜態:利用 IDA 對 malware 進行 patch 前調查
下一篇
【Day 20】雜談:想成為 malware analyst 的 roadmap
系列文
《Nyahello!從零開始的 30 天 malware 學習日誌》28
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言