是否可以读取正在运行的 Java 应用程序的内存?

2022-09-03 16:01:36

我想学习如何,或者是否有可能以编程方式与黑匣子java应用程序交互(通过读取其数据)。以前有没有做过这类事情的研究/工作?

我可以想象在JVM上运行会使事情变得非常复杂。

@anon:使用任何JVM执行此操作都是相关的。您是否必须了解或控制 JVM 如何分配内存以从 Java 应用程序中提取数据的细节?


答案 1

你可以看看java.lang.instrument。只要您了解应用程序的类结构,它就允许您修改已经运行的JVM中的方法,并且您可能能够炮制一种方法,允许您提取或插入足以进行通信的数据(当然,这取决于可用的方法)。


答案 2

麦吉尔大学的Sable小组为Java世界贡献了大量的研究。

大部分工作都已经过时了,但你可能会在他们的EVolve项目中找到一些帮助,该项目的目标是可视化面向对象的程序。他们的一些项目似乎得到了积极的维护(例如他们的Java优化框架Soute),所以你可能会发现直接与他们联系很幸运。