十,内存映射窗口[Memory map window]
内存映射窗口显示了被调试程序分配的所有内存块。因为没有标准的方法来完成这项任务,所以OllyDbg可能会把一个大的内存块分成几个部分。然而,在大多数情况下,并非一定要精确处理。如果想查看由应用程序通过调用GlobalAlloc()和LocalAlloc()等申请的内存块列表,请使用堆列表[Heap list]。
如果内存块是可执行模块的一个节,OllyDbg则会报告这个内存块所包含的数据类型:代码、数据、资源等。
Windows95/98 是和WindowsNT/2000是有一些区别的。在Windows95/98下,OllyDbg是不能显示被映射文件的名称的。另外, Windows95/98不允许的访存类型为读和写,然而,在WindowsNT/2000下,OllyDbg却有拥有更多功能,包括执行访问,写复制[copy-on-write]以及监视标志位。OllyDbg忽略写复制[copy-on-write]属性。
如果OllyDbg发现程序分配了新内存或者重新分配了已经存在的内存块,它将在内存映射窗口中高亮显示相应的记录,去掉高亮度显示,可以选择快捷菜单中的刷新[
Actualize]项。
您可以按Alt+M来调用内存窗口。
以下是快捷菜单中可以选择的菜单项:
刷新[Actualize] - 更新已分配内存的列表并去除对新内存块的高亮显示。
在反汇编窗口中查看[View in Disassembler] -在反汇编窗口中查看:在反汇编窗口中打开内存块,这一选项仅在某些模块的内存块中包含可执行代码或者自解压器时可用。
在CPU数据窗口中查看[Dump in CPU] - 在CPU的数据窗口中显示内存块的内容。
数据窗口[Dump] - 在单独窗口中显示内存块内容。如果内存块的类型已知,则OllyDbg会自动选择显示格式。
查看全部资源[View all resources] - 如果内存块包含资源数据,则列出所有资源及相关数据。OllyDbg并不把资源当作单独实体来支持。您可以显示其数据并以二进制的形式进行编辑。
查看资源字符串[View resource strings] - 如果内存块包含资源数据,则列出全部资源字符串及其标识符。
搜索[Search] - 允许搜索所有的内存块,从选择处开始,搜索匹配的二进制串。如果找到,则OllyDbg将显示该内存块。内存映像窗口和数据窗口共享同一种搜索模式,所以您可以在弹出的数据窗口中立即继续搜索该二进制串出现的下一位置。按Esc键可以关闭数据窗口。
搜索下一个[Search next](快捷键:Ctrl+L) - 继续上次搜索。
设置访问中断[Set break-on-access] (快捷键:F2,仅在WindowsNT/2000下可用) - 保护整个内存块。当中断发生后OllyDbg暂停被调试程序并清除断点。这类断点在您想捕捉调用或返回到某个模块的时候特别有用。
清除访问中断[Remove break-on-access] (快捷键:F2) - 从内存块中清除访问中断保护。
设置内存访问断点[Set memory breakpoint on access] - 在整个内存块上设置断点,每当该内存块被访问时程序都将中断。OllyDbg只支持一个内存访问断点。在
Windows95/98下,当系统程序访问含有内存断点的内存块时,可能会导致所被调试程序崩溃,因此,不到万不得已,请不要设置这种断点。
设置内存写入断点[Set memory breakpoint on write] - 在整个内存块上设置断点,每当该内存块被写入数据时程序都将中断。在Windows95/98下,当系统程序访问含有内存断点的内存块时,可能会导致所被调试程序崩溃,因此,不到万不得已,请不要设置这种断点。
清除内存断点[Remove memory breakpoint] - 清除内存断点。
清除自解压内存断点[Remove SFX memory breakpoint] - 停止搜索自解压程序[self-extractable (SFX) program]的真实入口。这个搜索使用了特殊类型的内存断点。
访问设置[Set access] -设置整个内存块的保护属性,可选择的有:
禁止访问[No access]
只读[Read only]
读/写[Read/write]
执行[Execute]
执行/读[Execute/read]
完全访问[Full access]
复制到剪切板[Copy to clipboard]
整行[Whole line] -以多行文本(包括解释)的方式把所选记录复制到剪切板,如果复制时想排除某些列,可将该列的宽度置为最小(该栏剩余的边框将变灰)。
整个表格[Whole table] -以多行文本的方式将整个内存映像信息复制到剪切板,该文本的第一行为窗口标题("内存映射[Memory map]"),第二行为列标题栏,后面几行的内容为内存数据记录。复制将保持列的宽度。如果复制时想排除某些列,可将该列的宽度置为最小(该栏剩余的边框将变灰)。
|