使用Java访问内存

我在内存中加载了一个程序。 现在我想直接访问内存并更改该程序内存中的OPCODE和DATA。 为此,我需要编写一个Java程序。

你能告诉我这是否可行? 如果是,请告诉我如何编写这样的程序。

提前致谢!

Java不是为此而设计的。
Java的主要目的是让JVM为您管理内存。 因此,您的程序是沙盒。

但是,HotSpot JVM似乎有一个后门:

Java最初设计为安全的托管环境。 尽管如此,Java HotSpot VM包含一个“后门”,它提供了许多低级操作来直接操作内存和线程。 这个后门 – sun.misc.Unsafe – 被JDK本身广泛用于java.nio或java.util.concurrent这样的包中。 很难想象Java开发人员在任何常规开发中使用此后门程序,因为此API非常危险,不可移植且易变。 尽管如此,Unsafe提供了一种简单的方法来查看HotSpot JVM内部并做一些技巧。 有时它很有趣,有时它可以用来研究VM内部而无需C ++代码调试,有时它可以用于分析和开发工具。

资料来源: http : //highlyscalable.wordpress.com/2012/02/02/direct-memory-access-in-java/

但是, Unsafe类没有文档。 您可能需要查看此SO答案以获取更多详细信息: https : //stackoverflow.com/questions/5574241/interesting-uses-of-sun-misc-unsafe

非官方文件 : http : //mishadoff.github.io/blog/java-magic-part-4-sun-dot-misc-dot-unsafe/
绝对新手指南 http://java-performance.info/string-packing-converting-characters-to-bytes/
http://javapapers.com/core-java/address-of-a-java-object/

PS我知道我必须在这里发布链接的一些内容,但由于文章非常详细,我跳过了那部分

你不能直接引用java中的内存,因为它们不是像c / c ++这样的java中的指针概念

您必须通过此引用内存地址

希望能帮助到你。