前言
apk的逆向,没有壳,但可能做的不是太多,没能想到整个算法的运作原理
分析
搜索·flag会发现存在这么一个·函数,那么显示flag的时候应该是熊会跳舞显示flag,只要满足熊happy和ecsstatic就可以,happy只要一直存在点击就可以完成,主要ecs函数返回值不能为0
可以发现当这里小熊的三个属性满足对应值即可以执行函数,话说如果这样的话,安卓动调直接改返回值执行不知道可不可以,本来以为运算应该是在getstate函数里面,但啥也没找到,调用函数里是将他们看做一个整体进行加减
可以看到运算就在此处执行,主要和传入的i有关,继续查看引用,发现play,feed,clean三个都有参与,那么从总体来看就是以前玩的那种养成系游戏,每个动作都会对宠物的生理属性造成影响改变,那们可以利用上面所有的关系得到每个动作的执行次数
wp
方程可以用z3解出,当然手算也行
from z3.z3 import Solver, Ints, sat
s =Solver()
clean,feed,play =Ints('clean feed play')
s.add(6*clean + (-1)*feed +(-1)*play ==0)
s.add(10*feed +(-2) *play ==72)
s.add((-1) *clean +2 *feed +4 *play ==30)
if s.check() ==sat:
print(s.model()) #打印计算结果键值对
else:
print(s.check())
th4t_was_be4rly_a_chall3nge@flare-on.com