Mmc秒杀圈百科 

klassptr:版本对比 v1 → v2

v1(2026-10-03 23:13,zy)→ v2(2026-10-03 23:59,mcst12345)

共 13 行变更 · 新增 9 行 · 删除 1 行(左右分栏:左为旧版本,右为新版本)

⋯ 省略 5 行未变内容 ⋯
6 {{#F9D949|"}"}} {{#AADAFB|_metadata}};6 {{#F9D949|"}"}} {{#AADAFB|_metadata}};
7{{#F9D949|"}"}};7{{#F9D949|"}"}};
8oopDesc是每一个java对象头部都有的结构,_metadata这个联合体保存的就是java对象的类型,所以通过更改_metadata可以控制java对象的行为
8
9 oopDesc是每一个java对象头部都有的结构,_metadata这个联合体保存的就是java对象的类型,所以通过更改_metadata可以控制java对象的行为。
10
11 oopDesc is part of the metadata of a Java object. Field _klass (or _compressed_klass depending on the environment) stores the type of the object. Change it can spoof the JVM of the object's type. For example
12
13<code>Unsafe unsafe = getUnsafe(); Object o = new Object(); unsafe.putInt(o,8L,unsafe.getInt(new ArrayList<>(),8L)); System.out.println(o.getClass());</code>
14should print "class java.util.ArrayList".
15**Sorry but I can't figure out how to nextline inside <code> block in this wiki
16Unfortunately, changing an object's klass metadata is an undefined behaviour which will corrupt the gc state that it can easily crash JVM. I personally don't recommend anyone to use it.

其他版本