pykd中的searchMemory函数

时间:2016-08-09 21:25:03

标签: windbg pykd

我试图了解如何在pybd扩展中使用windbg的searchMemory()函数。

documentation说明如下:

Function searchMemory

searchMemory( (long)arg1, (int)arg2, (list)arg3) -> int :
Search in virtual memory

C++ signature :
unsigned __int64 searchMemory(unsigned __int64,unsigned long,class boost::python::list)

searchMemory( (long)arg1, (int)arg2, (str)arg3) -> int :
Search in virtual memory

C++ signature :
unsigned __int64 searchMemory(unsigned __int64,unsigned long,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)

有人知道参数是什么以及我应该如何使用这个函数?

1 个答案:

答案 0 :(得分:2)

首先,请注意同一方法有2个重载:

searchMemory( (long)arg1, (int)arg2, (list)arg3) -> int

searchMemory( (long)arg1, (int)arg2, (str)arg3) -> int
  • arg1是开始搜索的起始地址或偏移量,
  • arg2是要搜索的内存的长度或数量
  • arg3是搜索字词,可以是
    • 字符串(std::string)或
    • 一个列表(char
  • 返回值是一个偏移量,当然是第一次出现的偏移量,所以要找到下一个出现次数,你必须再次搜索

我已经从pymemaccess.cpp [Codeplex]的来源解释了这一切,但我自己从未使用过它。

我既不熟悉C ++也不熟悉Python,更糟糕的是两者之间的映射,但恕我直言std::string是字节串而不是Unicode字符,所以你可以在那里放置任意字节。它也应该适合ASCII搜索。但是你可能不得不为UTF-16 / UCS文本做一点动作。同样可能适用于char列表,因为它未声明为wchar_t