我试图了解如何在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> >)
有人知道参数是什么以及我应该如何使用这个函数?
答案 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
。