MFVDASM:可视化多格式反编译器
MFVDasm不仅仅是个汇编列表生成器 。事实上,它比汇编代码浏览器增加了多个很不错的导航特性 。如图1-8所示,那是我使用MFVDasm察看Windows 2000 I/O管理函数IoDetachDevice()的截图 。图中并没有显示出屏幕上的颜色 。例如,所有的函数表以及特定地址的jumps和calls都被显示为红色 。针对其余地址(没有相关导出符号的地址)的jumps和calls显示为蓝色 。引用了从其他模块动态导出的符号的显示为紫色 。所有可到达的目标地址(reachable destinations)都加上了下划线,这意味着你可以通过单击他们来滚动代码窗口到达其地址 。使用工具栏上的Back和Forward按钮,你能回顾看过的东东 。这很像在IE中察看浏览过的网页 。
在右边,你可以随意选择你想跳到的符号或目标地址 。当然,通过单击列头你可以进行排序 。在最底层,MFVDasm提供了Tab页来分别显示符号、16进制转储(HexDump)和重定位(Relocations) 。对包含嵌入字符串的代码段进行反编译时16进制转储视图会显得很有用 。在分析很大的文件如ntoskrnl.exe时,MFVDasm不会阻塞住,和其他流行的反编译工具一样,得到的汇编代码可以保存到文本文件中 。
PEView --- PE和COFF文件察看器
尽管MFVDasm展示了PE(Portable Executable)文件的很多内部结构的细节,但其侧重于代码的查看 。另一方面,PEView虽然不能展示比代码段的16进制码更进一步的细节,但它能非常详细的显示文件结构的细节 。如图1-9所示 。这是我用PEView察看ntoskrnl.exe的截图 。可以看出PEView采用三种形式来显示ntoskrnl.exe的多个部分 。如果你单击左边的一个叶结点,在右面就会显示与该项相关的所有信息 。在图1-9种,我选择了IMAGE_OPTIONAL_HEADER结构,该结构是IMAGE_NT_HEADERS结构的成员之一 。
译注:还有两段我没有译,和本书讨论的主题无关,感兴趣的话,去看原文吧 。J
Windows 2000调试接口
对于喜欢研究系统内核的人来说,内核调试器是一个非常强大的工具 。不过,它的界面有些简单 。有时你可能希望有更强大的命令 。很幸运,Windows 2000提供了两个完整的调试接口文档,使得你可以在你的程序中加入调试功能 。这些接口远算不上豪华(但他们得到了微软官方文档的祝福 J) 。在本节中,我将带你进行调试接口一日游,向你展示这些文档可以为你做什么以及你如何从这些文档中得到更多东东 。
psapi.dll、imagehlp.dll和dbghelp.dll
长久以来,Windows NT由于缺乏对Windows 95的ToolHelp32接口的支持而备受指责 。可能评论家们并不都知道Windows NT 4.0提供了其独有的调试接口---内建于系统组件psapi.dll(随Win32 SDK一起发布)中 。随此DLL一起发布的还有imagehlp.dll和dbghelp.dll以及针对NT/2000的调试接口的官方文档 。PSAPI是Process Status Application Programming Interface的首字母缩写,此接口提供了14个函数用于获取有关设备驱动程序、进程、进程的内存使用情况和其加载的模块、工作集、内存映射文件的系统信息 。psapi.dll同时支持ANSI和Unicode字符串 。
【1 《Undocumented Windows 2000 Secrets》翻译 --- 2】其余两个调试DLLs---imagehlp.dll和dgbhelp.dll涵盖了不同的工作范围 。二者都导出了相似的函数集合,区别较大的是imagehlp.dll,它提供了更多函数,但dbghelp.dll提供了可重新发布的组件 。这意味着微软允许你将dbghelp.dll放入你自己的调试程序的安装包中 。如果选择使用imagehlp.dll,你必须获取在目标系统已安装的一个 。这两个DLL都提供了丰富的函数来分析和维护PE文件 。二者最显著的特性是能很好的使用符号文件(就是你为内核调试器准备的那些) 。为了指导你该选择哪个DLL,我将这两个DLL的所有导出函数汇总到了表1-1,N/A表示不支持 。
推荐阅读
- 圣斗士里的教皇
- 交房需要带什么手续
- 在Windows NT域和Windows 2000域之间建立信任关系
- 移花接木 解决Windows 2000无法启动的问题
- 使用命令行参数为系统打补丁
- 生子文勋鹿古风重生
- 克隆windows 2000管理员帐号
- Windows 2000 优化完全攻略
- 请回答1988正峰生什么病
- Win2000模块解析工具
