如何查看ollydbg中的堆数据?


2

我有一个C编译的二进制文件,通过HeapAlloc()分配一堆字符到堆中。 我希望能够使用Ollydbg在堆中查看分配的动态数组,以便能够跟踪它并查看它是如何被修改的。

到目前为止,我已经试过:

  1. 例如插入一个唯一的字符串通过二进制**
  2. 进入记忆搜索(ALT + M)r00tr00tr00tr00t...r00t
  3. 搜索(CTRL + B)为ASCII:r00t

我总是无法找到它。我是新来的,所以我采取了正确的方向?如果没有,我怎么能找到堆中的字符串?

**这是注入正常流程的程序,它接受来自用户的数据。假设这是一个为instanc输入的序列号,它被放置在堆中使用HeapAlloc

2

有两个ollydbg插件可以帮助您查看堆数据。

1-堆由Vis Pedram Amini可见
您可能已经注意到在OllyDBG的'查看'菜单下的幻影'堆'选项。该功能仅适用于基于Windows 95的操作系统,应该显示分配的内存块列表。在奥利堆可见插件被写入提供所有现代的Windows操作系统,如Windows 2000,XP和2003年OllyDbg的堆这个功能,更可见插件公开以下功能:

  • 查看堆
  • 搜索堆
  • 跳转到堆组块
  • 创建堆可视化

enter image description here http://www.openrce.org/downloads/details/1/Heap_Vis

2- OllyHeapTrace由Stephen更少
OllyHeapTrace(写于2008年)为OllyDbg的一个插件(版本1.10)来跟踪由过程正在执行的堆操作。它将监控堆分配和释放多堆,以及诸如创建或销毁堆和重新分配等操作。记录所有参数以及返回值,并且跟踪每个被跟踪的堆以独特的颜色突出显示。

该插件的主要目的是帮助调试堆溢出,希望能够控制堆布局以覆盖特定的结构,如块头,临界区结构或某些特定于应用程序的数据。通过跟踪在操作期间执行的堆操作,您可以控制(例如打开连接,发送数据包,关闭连接),您可以开始预测堆操作并控制堆布局。

enter image description here https://github.com/stephenfewer/OllyHeapTrace