首先扔进模拟器里看看是什么情况
感觉逻辑跟Time Remaining那里有关,程序扔进AndroidKiller后搜索Time Remaining,找到相关位置
查看反编译源码,这里有个坑,是AndroidKiller反编译的源码是错的(准确来说是渲染出来是错的)
![](https://img-blog.csdnimg.cn/direct/18bd09975f014f23b3277cae5176909d.png)
![](https://img-blog.csdnimg.cn/direct/20d08f8d2171410d8cf75d5f00bac575.png)
分析了半天不知道这代码在干嘛,遂去找了找WriteUp,结果发现源码是错的,遂用VScode打开.\projects\timer\ProjectSrc
![](https://img-blog.csdnimg.cn/direct/74fd533a23bb4385bf4966cd53bb2d5f.png)
![](https://img-blog.csdnimg.cn/direct/afefb4ef15f149029fa3f1728b330b49.png)
这下看懂了,最后是要一个k值,k值计算过程:判断is2(倒计时),为真k+100,为假k-1。再结合is2,写一段python代码跑k值结果
def is2(var0):
if var0<=3:
if var0<=1:
return False
else:
return True
elif var0 %2 != 0 and var0 %3 != 0:
var1 = 5
while var1 * var1 <= var0:
if var0%var1==0 or var0%(var1+2)==0:
return False
var1 += 6
return True
else:
return False
t = 200000
k = 0
while t > 0:
if is2(t):
k += 100
else:
k -= 1
t -= 1
print(k)
运行得到的结果为1616384,对应十六进制0x18aa00
首先找到Flag打印判断的地方,改判断条件一直为真
![](https://img-blog.csdnimg.cn/direct/3ad4101472064dab8bf5f3250b34851b.png)
![](https://img-blog.csdnimg.cn/direct/dd13b4db68e94366abe1e0a4a95cab5a.png)
这样就能保证一上来就运行打印FLAG的部分,但是别忘了,FLAG还要给个“密码”,不然返回结果是乱码
找到k传参的地方
直接把这句话改成给v3赋值0x18aa00
点击编译,然后将编译后的apk拖到模拟器里安装运行
成功得到FLAG,注意提交格式要求为flag{}