JAVA层
入口为SplashActivity
SplashActivity
启动了MainActivity
MainActivity
百度搜索com.iflytek.cloud.RecognizerListener是科大讯飞的一个语音识别模块
识别到"你好"
后进行Toast弹窗"haha"
background
onTouch
根据字符串提示找到这里
查看this.check()
方法
this.check()
public boolean check() {
return this.matrix[1][1].getStatus() == 1 && this.matrix[1][2].getStatus() == 1 && this.matrix[1][7].getStatus() == 1 && this.matrix[1][8].getStatus() == 1 && this.matrix[2][0].getStatus() == 1 && this.matrix[2][3].getStatus() == 1 && this.matrix[2][6].getStatus() == 1 && this.matrix[2][9].getStatus() == 1 && this.matrix[3][0].getStatus() == 1 && this.matrix[3][4].getStatus() == 1 && this.matrix[3][5].getStatus() == 1 && this.matrix[3][9].getStatus() == 1 && this.matrix[4][0].getStatus() == 1 && this.matrix[4][9].getStatus() == 1 && this.matrix[5][1].getStatus() == 1 && this.matrix[5][8].getStatus() == 1 && this.matrix[6][2].getStatus() == 1 && this.matrix[6][7].getStatus() == 1 && this.matrix[7][3].getStatus() == 1 && this.matrix[7][6].getStatus() == 1 && this.matrix[8][4].getStatus() == 1 && this.matrix[8][5].getStatus() == 1;
}
其中this.matrix会被初始化为0,在initGame
方法
也就是说点击一下就改status为1
根据二维数组点击出来是个爱心
initGame
onResult
将语音识别后的字符串传给了 getsna方法
getsna
将每个字符转成int后排序
You get the sorted flag:20667 25105 26159 36924
flag
java写脚本
public void TiTest() {
int[] as = new int[4];
as[0] = 0x50BB;
as[1] = 25105;
as[2] = 0x662F;
as[3] = 0x903C;
for(int i=0;i<4;i++){
char ch = (char) as[i];
System.out.println(ch);
}
得到输出
傻
我
是
逼
其中这里要用java写脚本,因为java的char类型是UTF-16编码
可以识别汉字
排序后
25105 26159 20667 36924
则flag为flag{25105 26159 20667 36924}