Path: blob/master/external/source/exploits/CVE-2015-8103/payloads/util/Reflections.java
19591 views
package ysoserial.payloads.util;12import java.lang.reflect.Constructor;3import java.lang.reflect.Field;45public class Reflections {67public static Field getField(final Class<?> clazz, final String fieldName) throws Exception {8Field field = clazz.getDeclaredField(fieldName);9if (field == null && clazz.getSuperclass() != null) {10field = getField(clazz.getSuperclass(), fieldName);11}12field.setAccessible(true);13return field;14}1516public static void setFieldValue(final Object obj, final String fieldName, final Object value) throws Exception {17final Field field = getField(obj.getClass(), fieldName);18field.set(obj, value);19}2021public static Object getFieldValue(final Object obj, final String fieldName) throws Exception {22final Field field = getField(obj.getClass(), fieldName);23return field.get(obj);24}2526public static Constructor<?> getFirstCtor(final String name) throws Exception {27final Constructor<?> ctor = Class.forName(name).getDeclaredConstructors()[0];28ctor.setAccessible(true);29return ctor;30}3132}333435