मैं यह समझने की कोशिश कर रहा हूं कि विंडबग के लिए pykd एक्सटेंशन में searchMemory() फ़ंक्शन का उपयोग कैसे करें।

दस्तावेज़ीकरण निम्नलिखित कहता है:

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> >)

क्या कोई जानता है कि तर्क क्या हैं और मुझे इस फ़ंक्शन का उपयोग कैसे करना चाहिए?

2
rrrrr 10 अगस्त 2016, 00:25

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 [ के स्रोतों से लिया है। कोडप्लेक्स] और अभी तक खुद इसका इस्तेमाल कभी नहीं किया।

    मैं न तो सी ++ से परिचित हूं और न ही पायथन के साथ और दोनों के बीच मैपिंग के लिए और भी बदतर, लेकिन आईएमएचओ std::string बाइट्स की एक स्ट्रिंग है और यूनिकोड वर्ण नहीं है, इसलिए आप वहां मनमानी बाइट्स डाल सकते हैं। यह ASCII खोज के लिए भी उपयुक्त होना चाहिए। लेकिन आपको UTF-16 / UCS टेक्स्ट के लिए थोड़ा फील करना पड़ सकता है। यह संभवतः char की सूची के लिए लागू होता है, क्योंकि इसे wchar_t के रूप में घोषित नहीं किया गया है।

    2
    Thomas Weller 10 अगस्त 2016, 02:16