如何从内存中读取 3rd 方应用程序的变量?
Posted
技术标签:
【中文标题】如何从内存中读取 3rd 方应用程序的变量?【英文标题】:How to read 3rd party application's variables from memory? 【发布时间】:2009-05-11 09:11:45 【问题描述】:我正在尝试从内存中读取变量。变量,不属于我自己的程序。例如,假设我在浏览器中运行了这个 Adobe Shockwave (.dcr) 应用程序,我想从中读取不同的变量。它是如何进行的?我需要挂钩这个过程吗?但它是在虚拟机下运行的,所以我不知道该怎么做。
这个任务在普通的 w32 应用程序中几乎是微不足道的(因为它主要只是 CBT 挂钩/子类化),但正如我之前提到的,我不知道它是怎么回事 用闪光/冲击波完成。
如果您想知道,我使用 C++ (VS9) 作为我的开发环境。
任何提示将不胜感激,因此提前感谢您。
最好的问候, nhaa123
【问题讨论】:
【参考方案1】:如果您只是为了一两个实验而尝试手动进行,这很容易。 尝试像Cheat engine 这样的工具,它就像一个免费、快速和简单的过程查看器。基本上,它会扫描进程的内存空间以获取给定的键值。然后,您也可以稍后过滤这些初始搜索命中。您还可以更改您确实找到的那些价值观,活下去。上面的链接显示了一个使用它来查找游戏中的分数或金钱价值的快速示例,并在游戏运行时对其进行实时编辑。
【讨论】:
非常感谢您的链接。【参考方案2】:如果没有调试应用程序的二进制文件/DLL,您唯一的机会就是询问一些黑客。
通常您可以使用调试器连接到进程,但如果没有二进制文件的调试符号,您将看不到任何变量名称 - 只是内存地址。
此外,Flash/Shockwave 代码在浏览器内的沙箱内运行,以防止受操纵的 Flash 代码造成安全漏洞。因此,您没有真正的机会访问正在运行的 Flash 代码/执行 Flash 代码的插件 - 除非您拥有此类插件的操纵版本。
因此,如果不使用不太合法的方法,您的任务将很难解决。下一个难题是虚拟机——这可以通过将您的应用程序实现为客户端/服务器解决方案来解决,其中“检查器”/看门狗作为虚拟机内的服务器运行,客户端请求在您的服务器上运行的变量状态/内容正常主机。通信可以通过简单的套接字连接来完成。
如果你有机会编写自己的 Flash/Shockwave 插件,你也许可以看到变量的内容。
对不起,我不能再帮你了。
乔, 3DH
【讨论】:
以上是关于如何从内存中读取 3rd 方应用程序的变量?的主要内容,如果未能解决你的问题,请参考以下文章
Chromecast 内置:如何从硬件用户界面的角度与 3rd 方接收器应用程序交互?
寻找可以从移动 safari 启动的 3rd 方原生 iphone 应用程序示例
如何在自己的应用程序中使用 3rd 方 TvProvider 对象?