第3章 靜態(tài)分析技術(shù)
第一節(jié) 基礎(chǔ)知識
一、虛擬地址和偏移量轉(zhuǎn)換
由于Windows程序是運行在386保護(hù)模式下,在保護(hù)模式下,程序訪問存儲器所使用的邏輯地址稱為虛擬地址(Virual Address,VA)。與實地址模式下的分段地址類似,虛擬地址也可寫成"段:偏移量"的形式,這里的段是指段選擇器。
文件執(zhí)行時將被映像到指定內(nèi)存地址中,這個初始內(nèi)存地址稱為基址(ImageBase)。在Windows NT中,缺省的值是10000h;對于DLLs,缺省值為400000h。在Windows 9x中,10000h不能用來裝入32位的執(zhí)行文件,因為該地址處于所有進(jìn)程共享的線性地址區(qū)域,因此Microsoft將Win32可執(zhí)行文件的缺省基地址改變?yōu)?00000h。
相對虛擬地址(Relative Virual Address,RVA)表示此段代碼在內(nèi)存中相對于基地址的偏移。即:相對虛擬地址(RVA)=虛擬地址(VA)-基址(ImageBase)。
文件中的地址與內(nèi)存中表示不同,它是用偏移量(File offset)來表示的。
在SoftICE和W32Dasm下顯示的地址值是內(nèi)存地址(memory offset),或稱之為虛擬地址(Virual Address,VA)。而十六進(jìn)制工具里,如:Hiew、Hex Workshop等顯示的地址就是文件地址,稱之為偏移量(File offset) 或物理地址(RAW offset)。
在實際操作時,使用 RVA-Offset之類的轉(zhuǎn)換器很容易查出字串RVA和偏移量的值。
以Pc_offset(光盤\tools\offset)此工具為例說說如何將SoftICE下看到的虛擬地址(Virual Address,VA)轉(zhuǎn)換成十六進(jìn)制工具里的偏移量(File offset),運行該軟件打開記事本程序,在Memory Address(內(nèi)存地址)輸入虛擬地址(Virual Address,VA)的值:40117D,點擊"Do it"按鈕將顯示己轉(zhuǎn)換成文件偏移量(File offset),如圖一所示。
(圖一)內(nèi)存虛擬地址轉(zhuǎn)換成文件偏移量
二、文件類型分析
文件分析是靜態(tài)分析程序的第一步,通過相關(guān)工具顯示欲調(diào)試文件的信息,如它是用什么語言寫的,是否加殼等。常用的文件分析工具有TYP、Gtw或FileInfo。其中FileInfo(光盤\tools\file\File analysers)由于識別文件類型較多,使用方便,在這一節(jié)簡單地講講它的用法。
FileInfo運行時是DOS界面,支持Windows長文件名,能識別DOS、NE、PE等各種文件類型和殼。
語法:fi <drive:\path\><*.*> </r> </f> </d-> </l+> </p+>
"fi /r"or "/s" 列出當(dāng)前目錄和子目錄所有的文件信息;
"fi /f" 僅列出能識別的文件
由于每次要進(jìn)入DOS窗口運行程序相當(dāng)不便,在這可創(chuàng)建快捷方式,把要分析的文章復(fù)制到FileInfo目錄下,用鼠標(biāo)雙擊FileInfo主文件即可。FileInfo快捷方式如圖二。在快捷方式中的命令行中可以鍵入相關(guān)參數(shù),如:FI.EXE /l /p+,此后用鼠標(biāo)雙擊FileInfo快捷方式,會自動分析出FileInfo當(dāng)前目錄內(nèi)的所有文件,不包含子目錄。

圖二FileInfo快捷方式中命令參數(shù)配制
雙擊此快捷方式就可執(zhí)行帶參數(shù)的FileInfo,顯示結(jié)果如圖三所示。

圖三 FileInfo分析文件的報告
在此例中,文件CHAP301.EXE被分析出是用VC6.0編譯的, CHAP303.EXE文件類型是Win GUI,就是Windows圖形用戶界面程序(一般FileInfo分析不出類型就報此類型)。另外此工具也可分析出程序是被何種軟件所加密的等。
| 共5頁: 1 [2] [3] [4] [5] 下一頁 | ||
|


