VBKiller使用說明
Killer是一個VB輔助逆向分析的工具。首先聲明,它不能幫你把VB程式反編譯到VB原始碼,只能讓VB程式的反組譯看起來更接近VB程式碼。
配合IDA使用,可以建立VB程式幾乎所有的類別結構、方法表、函數體,並建立方法表結構體;可以辨識VB程式中所引用的COM的CLSID,並使用ProgID命名;可以建立任意COM程式(非VB編譯的也可以)的方法表、函數體,並建立方法表結構體,可以在待分析的VB程式中使用這些結構體。經過這些處理,待分析的VB程式在IDA中就形成了多個很規範類別、方法,離逆向到原始碼已經不遠了。
說用方法:
點選瀏覽按鈕選取一個COM程序,DLL或Exe或ocx,如果不是VB程序,要在「非VB程序」打勾,點選查看。左邊的框框就列出了所選程式的所有COM接口,如果還要看類別和枚舉,可以選取「顯示接口以外的所有類別」。點擊任何一個接口,右邊就顯示了該接口的所有方法,在方法表中地址、方法體的真實地址。如果要顯示前面七個基本方法,則需要選取「顯示基本介面的方法」。如果是非VB程序,右邊有映像基址和虛擬基址,映像基址就是程序的ImageBase,而虛擬基址就是分配到內存空間裡面的起始地址,程序默認大概計算了這個地址,如果不正確,就需要手動修改,因為程式得到的方法表位址是運行空間裡面的,必須知道這兩個基址才能轉成靜態檔案中的位址,所以很重要,不能填寫,否則就會辨識錯誤。點選產生IDC,就可以產生目前選取的介面所對應的IDC文件,類別和枚舉是不能產生IDC的,把這個IDC載入到IDA中,就可以自動辨識處理對應的方法位址了。點選全部生成,就可以產生所有介面的IDC檔案(放到同一個檔案裡面)。選取“生成結構體”,再使用兩個生成按鈕,就可以產生這個COM對應的結構體建立腳本,把這個結構體IDC載入IDA,就會在IDA中產生一批對應的結構體,例如:分析的一個程式用到了資料庫操作和加解密操作,一般要載入ADO和CAPICOM的結構體腳本。
VBKiller還有一個掃描辨識COM的功能尚未完成。
在同一個目錄下,還有另外幾個c檔。
其中,header.c是上面的IDC檔案所要包含的,這是公用函數檔;
vb.c是網路上流傳的那個vb.idc修改後的版本,沒有改多少,感覺很多地方沒有起作用。可以利用該腳本建立VB程式的類別結構和事件表;
vboop.c是專門輔助分析VB物件導向功能的腳本。
裡面的Do_BasicOOP方法主要是根據vb.c建立好的事件表,處理對應的函數體,如果函數沒有建立,則建立函數,並把該函數改名為與事件表的名字一致,同時建立每個類別的方法表結構體,面向以後分析。
ParseAPI用於處理VB內部函數,它將掃描所有指定的函數的交叉引用,給該函數加上可重複註釋,嘗試識別參數,並給各個參數加上註釋,如果參數是寄存器,則再往上尋找暫存器資料的來源,並加上註解。掃描的函數和註解是程式碼裡面指定的,目前指定了大多數函數,大家可以依照自己需求加上新的函數。
ParseNew方法用於掃描所有的_vbaNew和_vbaNew2的交叉引用,並嘗試識別相應的CLSID,如果能識別,則修改為相應的程式名,以方便查看。識別是內建實現的,目前內建的不多,大家可以根據需要添加自己的。掃描是,如果發現無法辨識的CLSID,程式將會把該CLSID寫入到同目錄下的UnKnown.txt中,分析一遍後可以去查看該文件,如果發現有未識別的CLSID,則到註冊表中搜尋該CLSID,得到程式名稱後,在程式對應地方加上即可。