2013-07-15 48 views
-2

尋找個人使用的小型小程序爲裝載&刀片遊戲系列主要用於練習。基本上是中世紀的征服,每個王國大約有18-30個其他NPC領主。遊戲類追蹤你與他們的關係,但不是以一種非常有效,直觀的方式。用Python顯示其他程序的變量?

我想做一些能夠跟蹤遊戲中的各種變量並顯示它們的功能,以及其他一些功能。我可以很容易地通過cheat engine等找到變量的偏移量等,但我不確定python是如何自己收集/顯示這些變量的。

在Python沒有直觀的方式來「操縱」(對於我的用法,我將其定義爲'監視')內存之前,我已經被告知。這是否準確?

回答

1

如果您正在尋找一種方式從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,我寫了這些問題的答案之一;我相信提問者把它撿起來了,並且進一步改進了它。

+0

感謝您的快速回復。我在Win7上,我絕不是'專業人士'。我只是根據業餘愛好者的需求來編寫程序。然後我會研究RPM。再次感謝。 –

+0

@MattMcCarthy:[這個問題](http://stackoverflow.com/questions/12712585/readprocessmemory-with-ctypes)有一些使用它的示例代碼,也解釋了Win7添加的新障礙。它使用['win32api'](http://sourceforge.net/projects/pywin32/)和'ctypes'的組合,所以你需要安裝前者。另外,從快速掃描中,我不確定他們是否真的告訴你如何解決「SE_DEBUG_NAME」問題。但這至少是一個很好的起點。 – abarnert

相關問題