用Python显示其他程序的变量?

时间:2013-07-15 20:14:45

标签: python memory

希望为Mount& amp; Blade游戏系列主要用于练习。基本上是中世纪征服,5~王者各有约18-30~其他全国人民代表大会领主。游戏跟踪你与他们的关系,但不是以非常有效,直观的方式。

我想制作能够跟踪游戏中的各种变量并显示它们的东西,以及其他一些功能。我可以使用作弊引擎等轻松找到变量的偏移等,但我不确定python是否能够自己收集/显示这些变量。

我之前被告知Python缺乏一种直观的方式来“操纵”(我的用法,我将其定义为'监控')内存。那是准确的吗?

1 个答案:

答案 0 :(得分:1)

如果你正在寻找一种从Python中访问另一个程序内存的方法,那么stdlib肯定没有内置的东西。但这并不意味着它不可能。您始终可以使用与作弊程序相同的机制。

您想要做什么是高度依赖平台的。

  • 在Mac上,您要么使用Mach vm_read及相关函数,要么作为调试器附加并使用ptrace API。

  • 在Linux上,您要么通过proc文件系统访问VM,要么作为调试器附加并使用ptrace API。

  • 在Windows上,您希望使用ReadProcessMemory及相关功能,或者附加为调试器......我认为在这种情况下您实际上仍然使用ReadProcessMemory

除了访问proc文件系统(您可以使用常规mmap或常规读取/搜索/等等函数来自os),您将要使用{ {1}}(或者,在Windows上,ctypes)访问本机函数,或编写C扩展模块。

在每个平台上,您都必须使用提升的权限运行,这当然意味着不同平台上的不同内容。

没有人会写一个答案,显示所有5种不同的机制和两种访问方式......但是如果你搜索你想要的那个,你就会找到它。 (至少我知道有两种不同的使用win32api的方法和使用vm_read的两种不同方法的答案。)

但是我为其中一个答案写的here's a proof of concept;我相信提问者把它拿起来,分叉,并进一步改进。