OllyDbg完全教程 内存映射窗口[Memory map window]

转载 2006年06月10日 08:53:00

十,内存映射窗口[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]"), 第二行为列标题栏,后面几行的内容为内存数据记录。复制将保持列的宽度。如果复制时想排除某些列,可将该列的宽度置为最小(该栏剩余的边框将变灰)。

相关文章推荐

OllyDbg完全教程

OllyDbg完全教程 目录 第一章概述.................................................................. 1 第二章组件.....

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

OllyDbg命令行命令

 以下命令适用于 OllyDbg 的命令行插件 Cmdline.dll(显示于程序的插件菜单中)====================================================...
  • kgdiwss
  • kgdiwss
  • 2006年08月16日 20:24
  • 4357

OD的内存映射窗口是怎么实现的?

我怎么不能直接贴图啊,图中OD的内存映射是怎么实现的?是OD直接读取进程内存还是因为进程在创建的时候就由OD监控。 我想dump 指定进程的一段内存,但这段内存是动态分配的,我只能通过内存段的大...

STMP3770内存映射(Memory map)小结

在做底层开发的时候,我们经常会关注到内存映射的问题,今天我们讨论的就是STMP3770内存映射方面话题,并且会结合.map文档一起来看看。 首先,我们来看一张STMP3770的内存映射图,如下 ...
  • jgw2008
  • jgw2008
  • 2016年11月14日 10:30
  • 610

OllyDbg完全教程 单步执行与自动执行[Step-by-step execution and animation] Hit跟踪[Hit trace]

二十,单步执行与自动执行[Step-by-step execution and animation] 您可以通过按 F7(单步步入)或 F8(单步步过),对程序进行单步调试。这两个单步执行操作的...

Memory Map(Linux 存储映射IO)

本文主要总结自UNIX环境高级编程以及RedHat6.5系统man函数 存储映射IO函数说明 mmap#include void *mmap(void *addr,//指定映射区的起始地址。通常设置...
  • a931040
  • a931040
  • 2016年07月19日 14:40
  • 1629

X86 内存布局分析(Memory map)

来自@huangkangying,侵删 This article describes the contents of the computer's physical memory a...

X86 内存布局分析(Memory map)

This article describes the contents of the computer's physical memory at the moment that the BIOS ju...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:OllyDbg完全教程 内存映射窗口[Memory map window]
举报原因:
原因补充:

(最多只允许输入30个字)