名称:ctf.bobdylan
包名:ctf.bobdylan
程序入口:ctf.bobbydylan.M
图标:
1.运行界面:
2.使用android killer 反编译后查看,在主活动中找到按钮监听调用
a.smali中
在check()方法中是进行解码的方法,那只要把分析这个函数,就可以破解这个ctf了。
这个函数大致的逻辑是解码下面这一数组,进而和输入的值进行比较,那么只要把这组数组解码出来就可以得到正确的答案了。
v2[0] = 0; v2[1] = 3; v2[2] = 13; v2[3] = 19; v2[4] = 85; v2[5] = 5; v2[6] = 15; v2[7] = 78; v2[8] = 22; v2[9] = 7; v2[10] = 7; v2[11] = 68; v2[12] = 14; v2[13] = 5; v2[14] = 15; v2[15] = 42;
解码代码:
public static void parse(){ int [] intArray = new int[]{0,3,13,19,85,5,15,78,22,7,7,68,14,5,15,42}; String key = "bobdylan"; StringBuffer buffer = new StringBuffer(); for (int i = 0; i < intArray.length; i++) { int num = 0; int number = -1; while (true){ if ((intArray[i] & 255) ==( ( number^key.charAt(i % key.length())) &255)){ System.out.printf("%c",number); break; } number++; } } System.out.println(); }
解码结果:
blow,in the winD
测试答案: