CTF攻防赛java反编译题
Reverse.class
已知Reverse.class文件
打开方式:idea,eclipse等java工具,记事本打开乱码
// // Source code recreated from a .class file by IntelliJ IDEA // (powered by Fernflower decompiler) // import java.util.ArrayList; import java.util.Scanner; public class Reverse { public Reverse() { } public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.println("Please input the flag :"); String str = s.next(); System.out.println("Your input is :"); System.out.println(str); char[] stringArr = str.toCharArray(); Encrypt(stringArr); } public static void Encrypt(char[] arr) { ArrayList<Integer> Resultlist = new ArrayList(); for(int i = 0; i < arr.length; ++i) { int result = arr[i] + 64 ^ 32; Resultlist.add(result); } int[] KEY = new int[]{180, 136, 137, 147, 191, 137, 147, 191, 148, 136, 133, 191, 134, 140, 129, 135, 191, 65}; ArrayList<Integer> KEYList = new ArrayList(); for(int j = 0; j < KEY.length; ++j) { KEYList.add(KEY[j]); } System.out.println("Result:"); if (Resultlist.equals(KEYList)) { System.out.println("Congratulations!"); } else { System.err.println("Error!"); }  } }
新建一个java文件,比如main.java 将上面Reverse.class文件里面的构造方法下面的代码复制到main.java里面去 如图 在这个地方插入一行输出代码 然后运行,就会发现你需要输入值 将键盘上的字母数字符号一个一个组合, 和上面int[] KEY = new int[]{180, 136, 137, 147, 191, 137, 147, 191, 148, 136, 133, 191, 134, 140, 129, 135, 191, 65}; 匹配,得出180=T,136=h,137=i,147=s,191=_,133=e,134=f,140=l,129=a,135=g,65=! 所以最后的flag是This_is_the_flag_!
上一篇:
通过多线程提高代码的执行效率例子
下一篇:
教你如何正确学习JAVASE