如何从Java程序中清除字符串';什么是记忆?

如何从Java程序中清除字符串';什么是记忆?,java,jvm,Java,Jvm,我正在努力学习JVM连接。我已经学会了如何将代理连接到JVM,而且一切都很好。我的问题是,连接后是否可以从目标的内存中删除字符串?如果您使用Process Hacker 2搜索.jar,您可以在内存中找到它的路径。例子: 我见过做类似事情的程序,比如LSquad(这是一个清除地雷工艺黑客字符串的程序)。我试着用Luyten反编译它,我看到它使用了一个外部DLL。您可以在本机java中执行此操作,或者需要一个外部库吗?您可以通过不再引用该字符串(并执行GC,很可能需要完全GC)来删除该字符串或任

我正在努力学习JVM连接。我已经学会了如何将代理连接到JVM,而且一切都很好。我的问题是,连接后是否可以从目标的内存中删除字符串?如果您使用Process Hacker 2搜索.jar,您可以在内存中找到它的路径。例子:


我见过做类似事情的程序,比如LSquad(这是一个清除地雷工艺黑客字符串的程序)。我试着用Luyten反编译它,我看到它使用了一个外部DLL。您可以在本机java中执行此操作,或者需要一个外部库吗?

您可以通过不再引用该字符串(并执行GC,很可能需要完全GC)来删除该字符串或任何对象


在您的例子中,突出显示的字符串是一个jar,您很可能需要卸载该DLL来释放它。(我不知道是否或者如何在JVM中做到这一点)

您可以通过不再引用该字符串来删除该字符串(并且执行GC,很可能需要完整的GC)@PeterLawrey:但是您怎么知道它也已从字符串池中删除/GC?将执行System.GC()在代理帮助中?@HovercraftFullOfEels执行堆转储并查找字符串。改为使用敏感数据的字符数组。它实际上不是一个.dll文件,它只是一个.jar文件,其中包含一个主类和代理类。代理类通过创建一个新的VirtualMachine加载到JVM中,该VirtualMachine连接到目标,在成功加载后将分离。我不知道如何卸下那门课though@TsvetomirBonev要卸载一个类,您需要卸载加载它的类加载器(以及对该类加载器加载的任何实例的所有引用),您能给我举个例子吗?我在Java方面没有那么丰富的经验(这可能是显而易见的)@TsvetomirBonev最有可能的是,有一种更简单的方法来实现您想要实现的目标。e、 卸载类的最简单方法是重新启动JVM。我见过其他人做过类似的事情,实际的程序没有关闭,但它有点重新加载,我可能会尝试查找如何做到这一点。