我有一个应用程序,它向我显示一些数据。我需要附加到这个应用程序的进程,在内存中找到我需要的数据(实际上是一个数字),并将其保存在某个地方。该应用程序似乎没有使用标准的 Windows 控件,因此事情不会像使用 AutoIt 或类似的东西读取控件数据那么简单。
目前,我是一名自学数据库的人,对 Windows 应用程序调试的了解相当肤浅。甚至不确定我的问题是否足够正确。
那么,您能否给我一些入门指南,比如我应该首先阅读什么,以及我应该努力的一般方向?
Thanks.
要读取其他应用程序的内存,您需要打开以下进程开放进程 http://msdn.microsoft.com/en-us/library/ms684320.aspx至少有PROCESS_VM_READ
访问权限,然后使用读取进程内存 http://msdn.microsoft.com/en-us/library/ms680553.aspx从进程中读取任何内存地址。如果您是管理员或具有调试权限,您将能够以最大访问权限打开任何进程,您只需启用SeDebugPrivilege
之前(例如参见http://support.microsoft.com/kb/131065 http://support.microsoft.com/kb/131065).
如果您不太了解目标进程的内存,您可以枚举以下方面的内存块:虚拟查询Ex http://msdn.microsoft.com/en-us/library/aa366907.aspx (see 使用 VirtualAllocEx 如何为代码洞腾出空间? https://stackoverflow.com/questions/3010741/how-does-one-use-virtualallocex-do-make-room-for-a-code-cave/3010909#3010909作为我检查程序代码的示例。您可以以相同的方式检查程序数据)。
我看到的最实际的问题是你问你的问题太笼统了方式。如果您更多地解释您正在寻找什么样的数据,我可能会建议您更好的方法。例如,如果您可以在某处看到数据,则可以检查 Spy++(Visual Studio 工具的一部分)的相应窗口和控件。最重要的是窗口(或控件)的类别以及在显示最感兴趣的窗口时发送的消息。您还可以使用过程监控器 http://technet.microsoft.com/de-de/sysinternals/bb896645.aspx当带有有趣信息的窗口显示时,跟踪所有文件和注册表访问。至少在一开始你应该检查进程的内存读取进程内存 http://msdn.microsoft.com/en-us/library/ms680553.aspx当您要查找的数据显示在窗口上时。
如果您的调查没有成功,我建议您在问题中插入更多信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)