Skip to content

gra1n's blog

梦里有时身化鹤,人间无数草为萤。

Menu
Menu

java web笔记(2)

Posted on 2022年3月9日2022年3月9日 by gra1n

sun.misc.Unsafe

java底层的某个类,属于sun.* API中的类,做一些比较底层的操作,可以有一些神奇的利用姿势。

Unsafe是内部专用 API,获取Unsafe对象的方法:

不能继承

不能被new

使用反射实例化sun.misc.Unsafe

Field f = Unsafe.class.getDeclaredField("theUnsafe"); //Internal reference
f.setAccessible(true);
Unsafe unsafe = (Unsafe) f.get(null);

@CallerSensitive
// 获取Unsafe无参构造方法
Constructor constructor = Unsafe.class.getDeclaredConstructor();

// 修改构造方法访问权限
constructor.setAccessible(true);

// 反射创建Unsafe类实例,等价于 Unsafe unsafe1 = new Unsafe();
Unsafe unsafe1 = (Unsafe) constructor.newInstance();

sun.misc.Unsafe的使用

1.突破限制创造实例

allocateInstance方法无视构造方法创建实例

2.直接获取内存,实现浅克隆

3.读取密码

https://blog.csdn.net/fenglibing/article/details/17138079

当限制了classloader 无法在jvm注册类,unsafe.defineclass也可

public native Class defineClass(String var1, byte[] var2, int var3, int var4);

public native Class<?> defineClass(String var1, byte[] var2, int var3, int var4, ClassLoader var5, ProtectionDomain var6);

Java动态代理

发表评论 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注

分类

  • blockchain
  • crypto
  • java
  • web
  • 专业课
  • 2022年5月
  • 2022年4月
  • 2022年3月
  • 2022年2月
  • 2022年1月
  • 2021年12月

近期文章

  • hnp on ecdsa
  • CryptoZombies 题解

近期评论

  • gra1n发表在《AMM开根》
©2022 gra1n's blog | Built using WordPress and Responsive Blogily theme by Superb