##Java, Cracked
Java, Cracked
import java.lang.reflect.*;
public class Main{
public static void main(String... args){
System.setOut(null);
System.setErr(null);
/*Your code here*/
}
}
This should be was very easy to crack.
##Intended solution
Intended solution
import java.lang.reflect.*;
public class Main{
public static void main(String... args){
System.setOut(null);
System.setErr(null);
try{
Class<?> cistream = Class.forName("java.io.InputStream");
Class<?> cfostream = Class.forName("java.io.FileOutputStream");
Class<?> costream = Class.forName("java.io.OutputStream");
Class<?> cfdescriptor = Class.forName("java.io.FileDescriptor");
Object sout = cfostream.getConstructor(cfdescriptor).newInstance(cfdescriptor.getField("out").get(null));
Class<?> csys = Class.forName("java.lang.System");
Field mod = Field.class.getDeclaredField("modifiers");
mod.setAccessible(true);
Field stdout = csys.getField("out");
mod.set(stdout,Integer.class.cast(mod.get(stdout) )&~ Modifier.FINAL);
stdout.set(null,Class.forName("java.io.PrintStream").getConstructor(costream).newInstance(sout));
Class<?> cscanner = Class.forName("java.util.Scanner");
Object scanner = cscanner.getConstructor(cistream).newInstance(System.in);
Method nextInt = cscanner.getMethod("nextInt");
int f = Integer.class.cast(nextInt.invoke(scanner));
int s = Integer.class.cast(nextInt.invoke(scanner));
int sum = s + f;
System.out.println(sum);
}catch(Throwable t){t.printStackTrace();}
}
}