2010-09-19 77 views
2

我有一个应用程序,它显示我一些数据。我需要附加到这个应用程序的进程,找到我需要的内存(实际上是一个单一的数字),并将其保存在某个地方。这个应用程序似乎没有使用标准的Windows控件,所以事情不会像使用AutoIt或类似的东西读取控件数据那么简单。如何从Windows应用程序内存读取一些数据?

目前我是一个自学习者数据库家伙,并且对Windows应用程序调试的知识还很浅。甚至不知道我是否正确地问了我的问题。

那么,你能给我一些关于我应该先读什么的启动指南,以及我应该处理的一般指导吗?

谢谢。

回答

5

我的主要建议是:试图找到任何其他方法的整合比这个。即使你成功了,你也会被目标进程中的任何变化所劫持,甚至可能在Windows操作系统中。你所描述的是大多数病毒扫描程序应该标记和阻碍的行为:如果不是现在,那么将来。

这就是说,你可以看看DLL injection。然而,听起来好像你将不得不在反汇编级别上调试目标进程:否则,你将如何知道要读取什么内存地址?

+0

1避免这种不惜一切代价。 – SLaks 2010-09-19 16:10:33

+0

我不关心任何问题,因为这将是一次性工作 - 我只需要收集一些不变的数据并忘记它。我可以使用这个应用程序的API来收集它,但它并不能为我提供一种以不明原因获取这些数字的方法。 – 2010-09-19 16:15:04

+0

根据我的经验,这是一种快速ñ肮脏的做它一次,得到它,这六个月的工作,这真的**转动需要永远支持六个月。祝你好运... – 2010-09-19 18:18:00

0

我曾经知道Windows调试API,但它很长时间的内存丢失。如何使用OllyDbg的:

http://www.ollydbg.de/

以及控制既OllyDbg的脚本和AutoIt的?

+0

这里的一些财富约knowleedge的奥利:http://reversengineering.wordpress.com/ – user376403 2010-09-19 16:10:36

0

听起来很有趣...但非常困难。既然你说这是'一次性',那么这样的事情呢?

  • 截取这个应用程序的截图。
  • 通过OCR程序运行屏幕截图
  • 如果您能够以可预测的方式阅读正在查找的文本,那么您已经达到了一半!

所以,现在,如果你能读你的应用程序的OCR'd截图,它是写一个程序,它下面的一个简单的问题:

  • 脚本步骤获得的数据屏幕
  • 通过像Microsoft Office Document Imaging
  • 提取物的OCR程序创建的数据有问题的截图
  • 运行它的相关文字和做“什么”吧。

我已经做了类似的事情,但结果相当不错,但我会说这是一个脆弱的解决方案。如果应用程序发生更改,则停止工作。如果OCR无法读取文本,则停止工作。如果OCR读取错误的文本,它可能会比停止工作更糟糕...

正如其他海报所说,进入内存并提取数据是一个相当先进的主题......如果你能找到一种方法来做到这一点!

+0

我没有意识到你是为了好玩而做的。无论如何,我会留下我的答案作为替代方法。 – mpeterson 2010-09-19 21:09:49

7

要读取其他应用程序的内存,您需要打开OpenProcess的进程,至少使用PROCESS_VM_READ访问权限,然后使用ReadProcessMemory从进程中读取任何内存地址。如果您是管理员或具有调试权限,您将能够打开任何具有最大访问权限的进程,您只需在之前启用SeDebugPrivilege(例如参见http://support.microsoft.com/kb/131065)。

如果你不太了解目标进程的内存,你可以列举关于VirtualQueryEx的内存块(参见How does one use VirtualAllocEx do make room for a code cave?)作为一个例子,我检查程序代码。一样的方法)。

我看到的最实际的问题是你问你的问题太一般的方式。如果你更多地解释你正在寻找什么样的数据,我可能会建议你一个更好的方法。例如,如果您可以在某处查看数据,则可以通过Spy ++(Visual Studio Tools的一部分)检查相应的窗口和控件。最重要的是窗口(或控件)的类别以及在显示最有趣的窗口时将发送的消息。您还可以使用Process Monitor来追踪所有文件和注册表访问,当时将显示带有有趣信息的窗口。至少在一开始,您应该在您正在查找的数据显示在窗口上的那一刻用ReadProcessMemory检查该过程的内存。

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

+0

+1 ..这看起来像一些有希望的信息。 – mpeterson 2010-09-19 21:10:58

0

我知道这可能不是一个受欢迎的答案,由于该软件的用途,但CheatEngineArtMoney等程序允许您搜索某个给定值的进程保留的所有内存,然后改进结果直到找到要查找的值的地址。

我最初在学习如何在遇到培训师遇到其中一人后更好地保护我的游戏时学会了这一点,但在调试时发现该技术偶尔有用。

以下是在使用上面描述的技术的一个示例:https://www.youtube.com/watch?v=Nv04gYx2jMw&t=265

相关问题