2009-11-25 13 views
10

मैं एक पायथन लिपि लिखने की कोशिश कर रहा हूं जो किसी विशेष प्रक्रिया के स्मृति स्थानों की श्रृंखला पढ़ता है।मैं विंडोज़ में पाइथन में किसी अन्य प्रक्रिया की स्मृति को कैसे पढ़ सकता हूं?

मैं पायथन में यह कैसे कर सकता हूं?

यदि मायने रखता है तो मैं विंडोज का उपयोग करूँगा। मेरे पास प्रक्रिया पीआईडी ​​है कि मैं पढ़ने/संपादित करने का प्रयास कर रहा हूं।

क्या मुझे ReadProcessMemory() को कॉल करने और ctypes का उपयोग करने के लिए वापस जाना होगा?

उत्तर

15

मैं मानक अजगर पुस्तकालयों में कुछ नहीं देखा है, लेकिन मैं एक उदाहरण ctypes का उपयोग कर की तरह यदि आप किसी अन्य साइट पर सुझाव पाया:

from ctypes import * 
from ctypes.wintypes import * 

OpenProcess = windll.kernel32.OpenProcess 
ReadProcessMemory = windll.kernel32.ReadProcessMemory 
CloseHandle = windll.kernel32.CloseHandle 

PROCESS_ALL_ACCESS = 0x1F0FFF 

pid = 4044 # I assume you have this from somewhere. 
address = 0x1000000 # Likewise; for illustration I'll get the .exe header. 

buffer = c_char_p("The data goes here") 
bufferSize = len(buffer.value) 
bytesRead = c_ulong(0) 

processHandle = OpenProcess(PROCESS_ALL_ACCESS, False, pid) 
if ReadProcessMemory(processHandle, address, buffer, bufferSize, byref(bytesRead)): 
    print "Success:", buffer 
else: 
    print "Failed." 

CloseHandle(processHandle) 
0

हाँ, ctypes (या win32all) और ReadProcessMemory वास्तव में करने के लिए जिस तरह से कर रहे हैं चले जाओ। क्या आप कुछ अतिरिक्त/अलग खोज रहे थे? क्या, विशेष रूप से?

+0

वह आर्टमोनी क्लोन करना चाहता है: पी – YOU

+0

मुझे लगता है कि मैं पाइथन पुस्तकालयों में कुछ ढूंढ रहा था जो अनिवार्य रूप से सीटीपीएस का उपयोग करने से बचने के प्रयास में एक रैपर था। जानकारी के लिए धन्यवाद! –

-1

http://www.windowsreference.com/windows-xp/dos-commands-and-equivalent-linux-commands/

देखें आप, tasklist.exe का उपयोग प्रक्रियाओं को सूचीबद्ध करने के कर सकते हैं तो परिणाम स्क्रैप। फिर उन्हें समाप्त करने के लिए taskkill.exe (या tstskill.exe) का उपयोग करें।

लेकिन सीटीपीएस और कर्नल 32 शायद सुरक्षित है।

संबंधित मुद्दे

 संबंधित मुद्दे