题目比较简单, 直接简单解释下不多说.
Overview
不需要Overview,直接看代码逻辑即可
Analyse
根据惯例对apk反编译,直接看Java代码
if (1000 == MainActivity.this.cnt)
localTextView.setText("SECCON{" + String.valueOf(107 * (MainActivity.this.cnt + MainActivity.this.calc())) + "}");
可以看出flag是形如SECCON{107*(1000 + calc)}
形式,只有一个未知量是函数calc返回值,而这个函数是native函数,将lib中任意一个so文件拖入IDA,找到对应函数形式如下所示
public Java_com_example_seccon2015_rock_1paper_1scissors_MainActivity_calc
Java_com_example_seccon2015_rock_1paper_1scissors_MainActivity_calc proc near
mov eax, 7
retn
Java_com_example_seccon2015_rock_1paper_1scissors_MainActivity_calc endp
_text ends
竟然直接返回7!
Solve
107*1007=107749
flag is SECCON{107749}
网友评论