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