Simple API for using Java Reflection

Related tags

Security Reflector
Overview

Reflector


  • По поводу багов или идей для данного репозитория можно писать в Discord или ВК(обратная связь)

Обратная связь


FieldAccessor

Интерфейс доступа и работы с полями предоставляет базовые методы для получения и установки значений для данного поля

import ru.unlegit.reflector.FieldAccessor;
import ru.unlegit.reflector.Reflector;

import java.util.concurrent.ThreadLocalRandom;

public class FieldAccessTest {

    public static void main(String[] args) {
        String object = "БлаБлаБлаБлаБла"; //Создаём объект для обработки
        //P.S.:Про класс 'Reflector' поговорим немного позднее
        
        FieldAccessor hashAccessor = Reflector.getFieldAccess(object.getClass(), "hash"); 
        //Получаем объект 'FieldAccessor' для работы с полем 'hash' класса 'String'
        
        int hashValue = hashAccessor.getValue(object); //Получаем значение поля для объекта 'Object'

        hashAccessor.setValue(object, ThreadLocalRandom.current().nextInt()); //Устанавливаем значение поля на случайное число

        //P.S.:Если поле является статическим, то передаваемый объект должен быть 'null'
    }
}

MethodAccessor

Интерфейс, похожий на 'FieldAccessor', но для работы с методами. Принцип у него аналогичен с FieldAccessor, так что обойдёмся без примера


ConstructorAccessor

Опять же не сложный интерфейс, но для работы с конструкторами. Работать с ним также не сложно, так что без примера.


ClassAccessor

Интерфейс, для работы с классом и получения доступа к полям, методам и конструкторам данного класса.

import ru.unlegit.reflector.AccessStrategy;
import ru.unlegit.reflector.ClassAccessor;
import ru.unlegit.reflector.FieldAccessor;
import ru.unlegit.reflector.Reflector;

public class ClassAccessorTest {

    public static void main(String[] args) {
        ClassAccessor<String> stringAccessor =
                Reflector.getClassAccess(AccessStrategy.SIMPLE, String.class);
        //Получаем экземпляр для работы с классом 'String'
        //P.S:Про 'AccessStrategy' поговорим немного позднее

        FieldAccessor hashAccessor = stringAccessor.getFieldAccess("hash");
        //Получаем доступ для поля 'hash' для дальнейшей работы с ним
        //Таким образом можно получить доступ и к методам, и к конструкторам
    }
}

ObjectAccessor

Интерфейс для работы непосредственно с объектом класса

import ru.unlegit.reflector.AccessStrategy;
import ru.unlegit.reflector.ObjectAccessor;
import ru.unlegit.reflector.Reflector;

public class ClassAccessorTest {

    public static void main(String[] args) {
        String object = "БлаБлаБлаБлаБла";

        ObjectAccessor<String> stringAccessor =
                Reflector.getObjectAccess(AccessStrategy.SIMPLE, object);
        
        stringAccessor.setFieldValue("hash", 10100); 
        //Установили значение поля 'hash' для обрабатываемого объекта
        
        int hash = stringAccessor.getFieldValue("hash");
        //Получили значение поля
        
        String substring = stringAccessor.invokeMethod("substring", 1, 5);
        //Выполняем метод 'substring' с параметрами '9' и '10', а также получаем результат
    }
}

Reflector

Наконец-то дошла очередь до класса Reflector. Что касается данного класса, то это просто фабрика для удобства работы.


AccessStrategy

Данные enum предназначен для классов 'ClassAccessor' и 'ObjectAccessor'. Это стратегия получения доступа к элементам класса.

  • SIMPLE: каждый раз, при попытке получения доступа к элементам класса будут создаваться новые объекты-accessor'ы
  • CACHING: при такой стратегии все accessor'ы будут кешироваться в хранилище и при дальнейшей попытке использования будут доставаться из хранилища или создаваться новые, если ещё не были созданы
You might also like...

A simple HWID authentication system for your minecraft mod.

HWID-Authentication-System A simple HWID authentication system for your minecraft mod. This is a simple mod which can prevent unwanted users from runn

Dec 10, 2022

A simple HWID authentication system for your minecraft mod.

HWID-Authentication-System A simple HWID authentication system for your minecraft mod. This is a simple mod which can prevent unwanted users from runn

Dec 10, 2022

Forest_tracker - Help protect the environment with such a simple app.

Forest Tracker 🌳 🌲 🌱 Introduction Hey there! This app is all about protecting the environment! A unique method. Deforestation is happening at an al

May 11, 2022

Employee Management System using Spring Boot, Spring Security, Thymeleaf and MySQL database.

Employee Management System Employee Management System using Spring Boot, Spring Security, Thymeleaf and MySQL database. YouTube Video Series Employee

Jan 1, 2023

A command-line tool to securely encrypt passwords and notes using AES encryption.

Treasury A command-line tool to securely encrypt passwords and notes using AES encryption. Installation Usage Technology Built solely in Java Picocli

Oct 17, 2022

Log4Shell RCE exploit using a gadget class. Not dependent on an old JDK version to work.

Log4Shell RCE exploit using a gadget class. Not dependent on an old JDK version to work.

Jan 4, 2022

Java JWT: JSON Web Token for Java and Android

Java JWT: JSON Web Token for Java and Android JJWT aims to be the easiest to use and understand library for creating and verifying JSON Web Tokens (JW

Dec 30, 2022

A mitigation for CVE-2021-44228 (log4shell) that works by patching the vulnerability at runtime. (Works with any vulnerable java software, tested with java 6 and newer)

Log4jPatcher A Java Agent based mitigation for Log4j2 JNDI exploits. This agent employs 2 patches: Disabling all Lookup conversions (on supported Log4

Dec 16, 2022

Java binding to the Networking and Cryptography (NaCl) library with the awesomeness of libsodium

kalium - Java binding to the Networking and Cryptography (NaCl) library A Java binding to Networking and Cryptography library by Daniel J. Bernstein.

Oct 5, 2022
Owner
null
Java Project based on Java and Encryption using Cryptography algorithms

Symmetric-Encryption-Cryptography-in-Java Java Project based on Java and Encryption using Cryptography algorithms Project Aim Develop Java program to

Muhammad Asad 6 Feb 3, 2022
Amazon Selling Partner JAVA SDK SP API

amazon-sp-api amazon sp api java sdk 背景: 亚马逊(amazon)在2020年10月推出了新的替代mws的api方案,称为Selling Partner API(SP-API)。sp-api在修改原mws的接口方式的基础上引入了aws的IAM权限管理,增加了开发

penghp 93 Nov 20, 2022
A library for bypassing all of Java's security mechanisms, visibility checks, and encapsulation measures via the JNI API

Narcissus: thwart strong encapsulation in JDK 16+ Narcissus is a JNI native code library that provides a small subset of the Java reflection API, whil

ToolFactory 29 Nov 3, 2022
A Twitter-API library JAVA

Tweety A Twitter-API library for JAVA. Code for Authorization (Oauth 1) can be found here :Authorization This api conta

Rohit Kumar 2 Apr 26, 2022
Simple Hospital Managers Project GUI Java

Hospital-Managers-GUI-Java Simple Hospital Managers Project GUI Java To Run Code You just need to run MainClass.java in any IDE I make a YouTube Video

Ali Abdollahian Noghabi 2 Feb 4, 2022
Disables JNDI lookup globally using Java agent instrumentation, mitigation for Log4Shell attacks.

NoJNDI This is a simple proof of concept agent that disables JNDI lookups globally across the JVM. This is useful for mitigating the Log4Shell attack,

Will Sargent 9 Dec 29, 2021
Fluent builders with typesafe API for the JCA

Security Builders This library implements a set of "fluent" API builders for the java.security classes, and provides more typesafe, intuitive API to a

Terse Systems 44 Sep 13, 2022
Toloka has a powerful open API, it allows you to integrate an on-demand workforce directly into your processes, and to build scalable and fully automated human-in-the-loop ML pipelines.

Toloka Java SDK Documentation Website | API Documentation | Platform Designed by engineers for engineers, Toloka lets you integrate an on-demand workf

Toloka 10 Apr 27, 2022
Library to easily configure API Key authentication in (parts of) your Spring Boot Application

42 API Key Authentication A library to easily configure API Key authentication in (parts of) your Spring Boot Application. Features Easily configure A

null 2 Dec 8, 2021
simple interface to verify user authenticity

React Native Simple Biometrics A simple and straight forward API to ask a user to authenticate with on device biometrics. This can be used to quickly

smallcase 135 Dec 29, 2022