2011年8月12日星期五

Ollydbg 2.01 alpha 4 試用報告:.Net程式調試

拿到最新版的Ollydbg 2.01 alpha 4 之後,試用了它的功能,Ollydbg作者升級它可謂精益求精,經過幾年的升級現在才開始支持插件,Ollydbg在各方面有了很大的提升,而且有些佈局上也做了較大的改變,今天我簡單的試用了一下.Net程式調試,總體感覺一個字-爽!

先拿一個沒有混淆的.Net程式來調試
程式默認暫停在系統的入口:
7900B183  /$  55            PUSH EBP                                 ; INT mscoree._CorExeMain(void)

記住無論什麼樣的.Net程式都是暫停在這個地址滴.

我對.Net調試不是很熟悉,所以我試用go to-Expreession命令直接來到這個程式的code段,這裡就有個驚喜給我們.

哈哈,看到下面的匹配標籤Matching labels,以後我們下斷點的時候可以直接到達斷點位置了,而且,它的自動匹配功能到達函數非常方便.

我們輸入00402000,這個程式的Text段得地址:

00402000   .  83B10079      DD 7900B183
00402004   .  00000000      DD 00000000
00402008  /.  48000000      DD 00000048                              ; cb = 72.
0040200C  |.  0200          DW 2                                     ; 


再往下拉,可以看到激動人心的IL匯編指令了:


CPU Disasm
Address   Hex dump          Command                                  Comments
00402051  /$  02            ldarg.0
00402052  |.  14            ldnull
00402053  |.  7D 01000004   stfld components
00402058  |.  02            ldarg.0
00402059  |.  28 1100000A   call .ctor
0040205E  |.  00            nop
0040205F  |.  00            nop
00402060  |.  02            ldarg.0
00402061  |.  28 03000006   call InitializeComponent
00402066  |.  00            nop
00402067  |.  00            nop
00402068  \.  2A            ret

.Net程式調試還是比較麻煩的,不過我們可以結合IDA來調試,在Ollydbg 2.01中Edit-Select all,接著Ctrl + C複製出來,然後按照IDA中的字串可以搜索到每個函數所在地址,比如
我搜索MainForm_Load地址:
IDA中:
 .method private hidebysig instance void MainForm_Load(object sender, class [mscorlib]System.EventArgs e)
                                        // DATA XREF: sub_3560+411Fr
  {
    .maxstack 2
    nop
    ldarg.0
    ldfld    class [System.Windows.Forms]System.Windows.Forms.WebBrowser ArticlesRewriteAssistant.MainForm::previewWebBrowser
    ldstr    "about:blank"
    callvirt instance void [System.Windows.Forms]System.Windows.Forms.WebBrowser::Navigate(string)
    nop

找到about:blank字串,接著在複製出來的Ollydbg代碼中搜索它
00409CB4  /$  00            nop
00409CB5  |.  02            ldarg.0
00409CB6  |.  7B 73000004   ldfld previewWebBrowser
00409CBB  |.  72 C22C0070   ldstr "about:blank"                      ; UNICODE "about:blank"
00409CC0  |.  6F 0301000A   callvirt Navigate
00409CC5  |.  00            nop

看到了嗎00409CB4就是函數MainForm_Load的地址了.

没有评论:

发表评论