使用x64dbg調試dll程序

使用x64dbg調試dll程序

這篇筆記是根據Lab16使用x64dbg調試帶參數程序新增加的,記錄瞭如何調試一個dll文件。

在很多時候一些程序會將核心功能放在dll文件內來完成,這樣避免程序被查殺或者被逆向分析,主要手段是通過LoadLibrayA函數來加載一個dll文件,同時這個dllDllMain函數會被調用以此來達到執行dll的程序。

Windows上要獨立執行一個dll程序,那麼需要用到rundl32.exe來完成,因此可以藉助這個程序來達到調試dll的目的。

分析dll程序的啓動方式

這個樣本使用的是《惡意代碼分析實戰》第三章的Lab03-02.dll,查看這個dll的導出符號

在這裏插入圖片描述

這個dll的啓動方式可以使用rundll32.exe dllname,ExportName arguments的格式來啓動,啓動如下

rundll32.exe Lab03-02.dll,installA

下面用調試器來加載調試。

調試方式加載dll

爲了能調試成功,先檢查一下調試器的配置,開啓system breakpoints Entry point的選項

在這裏插入圖片描述

如果不開啓程序不能被正確中斷下來,接着開始調試dll

  • 打開rundll32.exe

在這裏插入圖片描述

  • 配置調試參數

    將要調試的dll和dll要使用的參數配置並啓動,在啓動參數的後面配置常規的rundll32.exe dllname,exportName argumetns的格式即可

在這裏插入圖片描述

接着打開斷點窗口右鍵選擇Add Dll breakpoint然後輸入要調試的dll名稱,如下

在這裏插入圖片描述

設置好斷點後如下

在這裏插入圖片描述

接着按下F9逐個加載dll,觀察好加載的狀態,當被調試的dll執行到入口處就表示程序已經啓動成功

在這裏插入圖片描述

如果沒有提示來到入口就一次一次的按下F9,接着就能正確調試了。

注意

這裏加載的dll最好放在C:\myDir等這樣的目錄,例如我這裏的是

在這裏插入圖片描述

加載的參數也要寫對同樣的路徑

在這裏插入圖片描述

程序中斷下來後,接着在關鍵位置設置斷點分析,例如這裏要觀察dll的程序在入口的睡眠時間是否一致,

在這裏插入圖片描述
在調試器內設置這個斷點並運行查看

在這裏插入圖片描述
這樣就能正確調試dll程序了,後續有別的再繼續補充。

總結

調試dll程序的步驟是

  • 使用x64dbg打開rundll32.exe

  • 接着設置命令行參數爲

    C:\WINDOWS\system32\rundll32.exe C:\malwaredll\dllName,exportDllFunctionName arg1 arg2,...,argn
    
  • 設置好命令參數之後,打開斷點窗口,右鍵Add Dll breakpoint寫入要調試的dll的名稱

    這裏需要注意的是這個dll最好在C:\malwaredll這個目錄下

  • 最後按下F9運行觀察加載的dll,當加載到目標的dll的入口時就表示程序加載成功並且可以正常調試

  • 最後按照正常的調試思路進行即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章