Функция searchMemory в pykd
Я пытаюсь понять, как использовать searchMemory()
функция в расширении pykd для windbg.
В документации сказано следующее:
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 ответ
Во-первых, обратите внимание, что есть 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
это строка байтов, а не символов Юникода, так что вы можете поместить туда произвольные байты. Он также должен быть подходящим для поиска ASCII. Но вам, возможно, придется немного поиграться с текстом UTF-16 / UCS. То же самое относится и к списку char
потому что это не объявлено как wchar_t
,