版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiangshangbashaonian/article/details/82870253
题目信息:
拿到apk 载入jeb
双击MainActivity 然后tab键可以反汇编成java代码
大体可以看出 通过Random()每次生成一个随机数v9
通过这个v9再构造一个字符串数组 v1[]
下面对数组元素进行赋值
所以n对应的就是CPU的取值 m就是我们的选择
为方便查看下面我截了关键部分 run()方法就是关键
可以看到只有两种情况才可以win! cnt++
那么cnt很显然就是记录我们win的次数
而再看最后一个if语句 可以知道当cnt = 1000时 我们就可以拿到flag
取值就是SECCON{(cnt + calc) * 107}
那么cnt当然就是1000 那么就差calc的值了
将rps.apk解压 找到libcalc.so
IDA载入
如果看不明白 就F5
那就很清楚咯 calc就是7
那么flag就是SECCON{(1000+7)* 107} -->SECCON{107749}
提交正确