kaj*_*igd 6 java memory opcode
我有一个程序加载在内存中.现在我想直接访问内存并更改该程序内存中的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回答更多的细节:/sf/ask/390196901/
非官方文档:http://mishadoff.github.io/blog/java-magic-part-4-sun-dot-misc-dot-unsafe/
Absolute Beginners'Guide http://java-performance.info/string-packing -converting-characters-to-bytes/
http://javapapers.com/core-java/address-of-a-java-object/
PS我知道我必须在这里发布链接的一些内容,但由于文章非常详细,我跳过了那部分
| 归档时间: |
|
| 查看次数: |
6113 次 |
| 最近记录: |