简单的CTF题学习记录

名称: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

测试答案:

原文地址:https://www.cnblogs.com/NigelX/p/6523107.html