# VirtualJava
## Description
There's nothing like executing my own code in Java in my own special way.
[VirtualJava.java](VirtualJava.java)
## Solution
The [class](VirtualJava.java) operates like some kind of assembly code.
It parses through the input characters and obtain an output. If the output in each step falls to owo[1], it would be wrong.
It's too tedious to reverse it artificially, so I reversed it using the given [code](VirtualJavaSolve.java) with some modification. Each step I at a printable character to the string and check the outcome. If the output was good, add it to the answer and move on to next word.
```        for (int i = 32; i < 127; ++i){            String aa = Character.toString((char)i);            String a = ans + aa;            ...            boolean right=true;            for (int j = 0; j < c.length; j++) {                String s = getOutput(Math.abs(java.run(j, (int) c[j])));                if (s.equals(owo[1])) {                    right = false;                    break;                }            }            if (right == true){                System.out.println("yes");                ans = ans + aa;            }```
Finally, it split out the answer automatically.
```hsctf{y0u_d3f34t3d_th3_b4by_vm}```