高版本JDK反射绕过
静态常量修改
public class FinalTest {
private static final String secret = "Y0U_C4nNot_M0d1fy_M3";
}
Field modifierField = Class.forName("java.lang.reflect.Field").getDeclaredField("modifiers");
modifierField.setAccessible(true);
Field secret = FinalTest.class.getDeclaredField("secret");
secret.setAccessible(true);
modifierField.setInt(secret, secret.getModifiers() & ~Modifier.FINAL);
secret.set(null, "G0T_Y0U");
System.out.println(secret.get(null)); // G0T_Y0U



反射加载字节码
JDK11


modifiers Bypass
override field Bypass
JDK 12/13/14
fieldFilterMap Bypass
defineAnonymousClass Bypass
JDK17
SumUp
Reference
Last updated