如果您正在尋找一種方式從Python內部訪問另一個程序的內存,stdlib當然沒有內置任何東西。但這並不意味着這是不可能的。您始終可以使用您的金手指程序調用的相同機制。
你想要做什麼是高度依賴於平臺的。
在Mac上,你要麼要使用的馬赫vm_read
和相關功能,或附加爲調試和使用ptrace
的API。
在Linux上,您要麼通過proc
文件系統訪問虛擬機,要麼作爲調試器進行連接,並使用ptrace
API。
在Windows上,您想使用ReadProcessMemory
及相關函數,或者將其作爲調試程序並且...我認爲在這種情況下您實際上仍然使用ReadProcessMemory
。
除了訪問proc
文件系統(它可以定期mmap
或通常讀做/搜索/等。從os
功能),你會希望用(或者,在Windows上,win32api
)訪問本地函數,或者編寫一個C擴展模塊。
而且在每個平臺上,您都必須使用提升的權限運行,這在不同的平臺上意味着不同的事情。
沒有人會寫出一個答案,顯示所有5種不同的機制和訪問它們的兩種方式......但是如果您搜索所需的那個,您會找到它。 (至少我知道有使用vm_read
的兩種不同的方式,並使用ReadProcessMemory
的兩種不同方式的回答。)
但here's a proof of concept,我寫了這些問題的答案之一;我相信提問者把它撿起來了,並且進一步改進了它。
感謝您的快速回復。我在Win7上,我絕不是'專業人士'。我只是根據業餘愛好者的需求來編寫程序。然後我會研究RPM。再次感謝。 –
@MattMcCarthy:[這個問題](http://stackoverflow.com/questions/12712585/readprocessmemory-with-ctypes)有一些使用它的示例代碼,也解釋了Win7添加的新障礙。它使用['win32api'](http://sourceforge.net/projects/pywin32/)和'ctypes'的組合,所以你需要安裝前者。另外,從快速掃描中,我不確定他們是否真的告訴你如何解決「SE_DEBUG_NAME」問題。但這至少是一個很好的起點。 – abarnert