我正在尝试从内存中读取变量。变量,不属于我自己的程序。例如,假设我在浏览器中运行了这个Adobe Shockwave(.dcr)应用程序,我想从中读取不同的变量。怎么做?我需要挂钩过程吗?但是它在虚拟机下运行,所以我不知道该怎么做。
这个任务在普通的w32应用程序中非常简单(因为它主要是正常的) CBT-hook / subclassing),但正如我之前提到的,我不知道它是如何形成的 用flash / shockwave完成。
我正在使用C ++(VS9)作为我的开发环境,以防您想知道。
任何提示都将受到高度赞赏,所以提前谢谢你。
祝你好运, nhaa123
答案 0 :(得分:1)
如果您尝试手动进行一两次实验,则很容易。 尝试像Cheat engine这样的工具,就像一个免费,快速,简单的流程偷看。基本上它会扫描进程的内存空间以获取给定的键值。然后,您也可以稍后过滤这些初始搜索命中。您还可以更改您找到的那些值,直播。上面的链接显示了一个快速示例,用于在游戏中查找分数或金钱价值,并在游戏运行时进行实时编辑。
答案 1 :(得分:0)
没有应用程序的调试二进制文件/ DLL,你唯一的机会是询问一些黑客。
通常,您可以使用调试器连接到进程,但如果没有二进制文件的调试符号,则看不到任何变量名称 - 只是内存地址。
此外,Flash / Shockwave代码在浏览器内的沙箱内运行,以防止操纵Flash代码导致安全漏洞。因此,您没有真正的机会可以访问正在运行的Flash代码/执行Flash代码的插件 - 除非您有这样一个插件的操作版本。
因此,如果不使用较少的合法方法,您的任务很难解决。下一个难点是虚拟机 - 这可以通过将您的应用程序实现为客户端/服务器解决方案来解决,其中“检查器”/监视程序作为虚拟机内的服务器运行,客户端请求运行您的变量状态/内容正常的主人。通信可以作为简单的套接字连接完成。
如果你有机会编写自己的Flash / Shockwave插件,你或许可以看到变量的内容。
抱歉,我无法再帮助你了。
侨, 3DH