我有一个应用程序,它显示了一些数据。我需要附加此应用程序的过程,在内存中找到所需的数据(实际上是一个数字),然后将其保存在某个地方。该应用程序似乎不使用标准的Windows控件,因此事情不会像使用AutoIT或类似内容的数据控制数据那样简单。

目前,我是一个自我学习者数据库的人,并且对Windows应用程序调试有相当浅的知识。甚至不确定我是否正确地问了我的问题。

因此,您能否给我一些有关首先阅读的入门指南,以及我应该努力的一般方向?

谢谢。

有帮助吗?

解决方案

我的主要建议是:尝试查找 任何 除此之外,其他集成方法。即使成功,您也会成为目标过程中以及Windows O/S中的任何更改的人质。您所描述的是行为,大多数病毒扫描仪都应该标记并阻碍:如果不是现在,那么将来。

也就是说,你可以看看 DLL注射. 。但是,听起来好像您将不得不在拆卸级别中调试目标过程中的heck:否则,您将如何知道要阅读的内存地址?

其他提示

要读取其他应用程序的记忆,您需要根据 OpenProcess 至少有 PROCESS_VM_READ 访问权利,然后使用 ReadProcessMemory 读取过程中的任何内存地址。如果您是管理员或具有调试特权,则可以打开具有最大访问权限的任何过程,您只需要启用 SeDebugPrivilege 之前(例如 http://support.microsoft.com/kb/131065).

如果您对目标过程的内存不太了解 VirtualQueryEx (看 如何使用VirtualAlloCex为代码洞穴腾出空间? 作为研究程序代码的示例。您可以以相同方式检查的程序数据)。

我看到的最实用的问题是您在 太一般了 方式。如果您更多地说明您正在寻找的数据,我可能会建议您更好。例如,如果您可以在某个地方看到数据,则可以根据间谍++(Visual Studio工具的一部分)检查相应的窗口和控件。最重要的是窗口(或控件)类别以及在显示最有趣的窗口时发送的消息。您也可以使用 过程监视器 要在显示带有有趣信息的窗口时跟踪所有文件和注册表访问。至少在一开始您应该检查过程的记忆 ReadProcessMemory 在您要查找的数据时显示在窗口上。

如果您在调查中没有成功,我建议您在问题中插入更多信息。

我曾经知道Windows调试API,但长期以来失去了记忆。如何使用ollydbg:

http://www.ollydbg.de/

并使用OllydBG脚本和自动启动来控制它?

听起来很有趣...但是很难。既然您说这是“一次性”,那么这样的事情呢?

  • 进行此应用程序的屏幕截图。
  • 通过OCR程序运行屏幕截图
  • 如果您能够以可预测的方式阅读您正在寻找的文本,那么您就是其中的一半!

因此,如果您可以阅读应用程序的OCR屏幕截图,那么编写程序的简单问题是:

  • 脚本屏幕上获取数据的步骤
  • 创建有关数据的屏幕截图
  • 通过像OCR程序一样运行它 Microsoft Office文档成像
  • 提取相关文本并对其进行“任何事情”。

我以前做过这样的事情,结果很好,但我想说这是一个脆弱的解决方案。如果应用程序更改,则停止工作。如果OCR无法阅读文本,则停止工作。如果OCR读了错误的文本,那可能比停止工作更糟糕的事情...

正如其他海报所说的那样,进入记忆并拿出数据是一个非常高级的话题……如果您能找到一种方法来做到这一点!

我知道这可能不是一个受欢迎的答案,因为该软件的使用性质,但是类似的程序 作弊Artmoney 允许您搜索通过进程保留的所有内存以获取给定值,然后完善结果,直到找到所需的值的地址为止。

最初,我在试图学习如何更好地保护自己的游戏的同时了解了这一点,但在调试时发现该技术偶尔有用。

这是上述技术中所述技术的示例: https://www.youtube.com/watch?v=nv04gyx2jmw&t=265

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top