Like Share Discussion Bookmark Smile

J.J. Huang   2019-07-18   OllyDBG   瀏覽次數:

OllyDBG - 第十四章 | 反匯編練習 (四) 下

前面幾篇都是使用NOP法,或是jmp跳轉法,再不然就是透過分析找到計算的方式來做暴破和破解。

在這邊要特別提一個比較特別方法,是根據分析函數的特性來做的修改。

檔案下載

相關的目的程式和使用的工具,請直接至OllyDBG - 第十三章 | 反匯編練習 (四) 上,這邊下載

補充知識

  • GetModuleHandleA函數:檢索指定模組的模組句柄。該模組必須已由調用進程加載。
  • MessageBoxA函數:顯示模式對話框,其中包含系統圖標,一組按鈕和簡要的特定於應用程序的消息,例如狀態或錯誤訊息。消息框返回一個整數值,指示用戶單擊的按鈕。

    注意:第一個參數HWND:要建立的消息框的所有者窗口的句柄。如果此參數為NULL,則消息框沒有所有者窗口。

  • 所有call調用的函數,最後都是將回傳儲存在eax裡面

使用OllyDBG分析

  • 啟動OllyDBG
  • 按下快捷鍵F3
  • 選擇RegisterMe.Oops.fixPE.exe
  • 在入口點地址後面加上註解 (良好的註解有助於分析)

  • 看到分別兩個的Nag視窗的代碼,傳入的第一個參數push 0表示,在MessageBoxA函數中hOwner是傳送NULL

    說明:該訊息視窗不屬於任何視窗

  • 我們需要做的就是傳入一個不存在的視窗地址
  • MessageBoxA函數,在找不到父視窗的狀態下,就不會產生訊息視窗

  • 修改完畢F8一步一步觀察
  • 恭喜兩個Nag視窗都沒有在跳出

總結

這邊的修改是針對函數的一個了解進行修改,所以在做反匯編的時候,函數的Documentation,是不可獲缺的。

然後在反匯編的過程中,看到任何函數調用,建議都可以去看看該函數的Documentation說明,多看多學。


註:我這邊提供一些可以參考的文章
CSDN billvsme的专栏OllyDbg 使用笔记 (四)