转载:如何生成SoftICE可用的调试符号文件*.NMS (1千字)

发布者:Editor
发布于:2001-04-15 22:12

除了可以直接从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(878K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3#2A6j5%4u0G2M7$3!0X3N6q4)9J5k6h3y4G2L8g2)9J5c8X3#2K6K9W2)9J5c8U0l9K6z5e0W2Q4x3V1k6U0L8$3c8W2i4K6u0r3g2p5I4n7c8p5u0s2i4K6u0W2P5X3W2H3i4@1g2r3i4@1u0o6i4K6R3&6i4@1f1$3i4@1p5H3i4@1t1&6i4@1f1$3i4K6S2p5i4@1q4q4i4@1f1#2i4K6R3#2i4@1t1$3g2s2W2H3k6f1I4A6j5W2!0q4y4g2!0n7c8g2)9&6y4#2!0q4y4g2)9^5z5q4!0n7x3p5#2m8f1q4)9J5c8V1c8n7c8#2!0q4y4W2)9&6y4W2)9^5y4#2!0q4y4q4!0n7b7W2!0n7y4W2!0q4c8W2!0n7b7#2)9^5b7#2!0q4z5q4!0n7c8W2)9&6b7W2!0q4z5q4)9^5x3q4)9^5b7#2!0q4y4g2)9^5y4W2)9^5c8q4!0q4y4g2!0n7c8g2)9&6y4#2!0q4y4g2)9^5z5q4!0n7x3p5&6y4f1#2!0q4y4W2)9&6y4W2)9^5y4#2!0q4y4q4!0n7b7W2!0n7y4W2!0q4x3#2)9^5x3q4)9^5x3W2!0q4y4W2!0n7x3#2!0m8z5q4!0q4y4W2)9^5y4q4)9^5c8W2c8x3b7V1c8n7c8#2!0q4y4g2)9^5c8W2!0m8b7g2!0q4z5q4)9^5x3#2!0n7c8q4!0q4y4g2!0m8y4q4)9^5y4q4!0q4y4#2)9&6x3q4)9^5y4W2!0q4z5q4!0n7c8W2)9&6b7W2!0q4y4#2!0m8z5q4)9^5b7W2!0q4y4g2)9^5y4W2)9^5y4f1y4a6e0g2!0q4y4W2)9&6b7#2)9^5c8q4!0q4y4g2)9^5b7g2!0m8x3g2!0q4y4g2)9&6z5g2!0m8z5q4!0q4x3#2)9^5x3q4)9^5x3R3`.`.

当然上述文件格式的转换还可以用其它工具来完成。

要加载*.NMS文件,只需在SoftICE Symbol Loader的菜单Edit->SoftICE Initialize Settings->Symbols中指定相应的NMS文件并重启即可。

作者;Netguy


声明:该文观点仅代表作者本人,转载请注明来自看雪