Kir*_*tev 1 memory windows debugging data-extraction
我有一个应用程序,它显示了一些数据.我需要附加到这个应用程序的进程,在内存中找到我需要的数据(实际上是一个数字),并将其保存在某个地方.这个应用程序似乎没有使用标准的Windows控件,所以事情不会像使用AutoIt或类似的东西读取控件数据那么简单.
目前我是一个自学数据库的人,对Windows应用程序调试知之甚少.甚至不确定我是否正确地问了我的问题.
那么,你能否给我一些入门指南,比如说,我应该先阅读什么,以及我应该做的一般指示?
谢谢.
要读取其他应用程序的内存,您需要打开至少具有访问权限的OpenProcess进程,PROCESS_VM_READ然后使用ReadProcessMemory从进程中读取任何内存地址.如果您是管理员或具有调试权限,则可以打开具有最大访问权限的任何进程,您只需要SeDebugPrivilege在之前启用(请参阅http://support.microsoft.com/kb/131065).
如果您对目标进程的内存知之甚少,则可以枚举与VirtualQueryEx相关的内存块(请参阅如何使用VirtualAllocEx为代码洞穴腾出空间?作为我检查程序代码的示例.你可以用同样的方式检查程序数据).
我看到的最实际的问题是你以过于笼统的方式提问.如果你解释更多你正在寻找的数据类型,我可能会建议你一个更好的方法.例如,如果您可以在某处看到数据,则可以检查与Spy ++(Visual Studio Tools的一部分)相关的窗口和控件.最重要的是窗口(或控件)类以及在显示最有趣窗口时将发送的消息.您还可以使用Process Monitor在显示包含有趣信息的窗口时跟踪所有文件和注册表访问.至少在开始时,您应该使用ReadProcessMemory检查进程的内存 在您正在寻找的数据显示在窗口上的那一刻.
如果您的调查没有成功,我建议您在问题中插入更多信息.
我的主要建议是:尝试找到除此之外的任何其他集成方法.即使您成功了,您也将受到目标进程中任何类型更改的攻击,并且可能在Windows O/S中.您所描述的是大多数病毒扫描程序应该标记和阻碍的行为:如果不是现在,那么将来.
也就是说,你可以看看DLL注入.但是,听起来好像你将不得不在反汇编级别调试目标进程:否则,你将如何知道要读取的内存地址?
| 归档时间: |
|
| 查看次数: |
9021 次 |
| 最近记录: |