轉載:如何生成SoftICE可用的除錯符號檔案*.NMS (1千字)

看雪資料發表於2001-04-15

除了可以直接從PE檔案中提取出其Export Table中的函式符號名之外,SoftICE可以直接使用的除錯符號檔案只有*.NMS。

得到可執行程式的NMS檔案的途徑如下:

1、DBG/PDB->NMS
如果在編譯時生成了*.DBG/*.PDB檔案,直接用SoftICE Symbol Loader開啟*.DBG檔案,然後選擇選單Module->Translate即可生成*.NMS。在Translate選項中選擇Include source則生成的*.NMS中包含有程式原始碼(當然前提是*.DBG/*.PDB中有原始碼),就可以在原始碼一級進行除錯,否則NMS檔案只包含符號名而沒有原始碼。Windows系統本身的符號檔案在其安裝光碟上有。

SoftICE自帶的命令列工具(在其util16目錄下)dbg2map.exe還可以將DBG轉換成MAP檔案,參考下面的3。

2、SYM->NMS
可以用SoftICE自帶的命令列工具nmsym.exe將*.SYM轉換成*.NMS。

3、MAP->NMS
如果沒有可執行程式的原始碼,也沒有*.DBG/*.PDB檔案,可以先用IDA對程式進行反彙編,IDA可以識別出常用的庫函式並生成*.MAP檔案(連結器link.exe、tlink.exe也可以生成MAP檔案,當然必須是自己寫的程式)。再利用SoftICE自帶的命令列工具msym.exe將MAP轉換成SYM檔案,然後參考上面的2得到NMS檔案。
對於沒有原始碼的COM元件,還可以利用Matt Pietrek寫的TLBDBG(http://www.microsoft.com/msj/0399/code/TLBDBG.zip)根據其TypeLib得到MAP/DBG檔案,進而再得到NMS檔案。注意TLBDBG只能處理程式內COM伺服器。

當然上述檔案格式的轉換還可以用其它工具來完成。

要載入*.NMS檔案,只需在SoftICE Symbol Loader的選單Edit->SoftICE Initialize Settings->Symbols中指定相應的NMS檔案並重啟即可。

作者;Netguy

相關文章