[SWPU2019] Android3
先反编译出java代码查看,发现没有坑,直接调用了库文件里的check
把so文件直接丢到ida中查找check函数,看到
这是说明flag是11位,刚好发现11个ascii码
60,108,51,79,129,56,44,94,84,69,64
这里也有 11个值,拿下来
6,2,5,0,7,3,10,9,1,4,8
往下发现一个判断,令v1=x,v3*v5=y
,则有(x^2-y^2)/(x+y)
即x-y
就是对应的data
后面想了半天都不知道如何继续了,因为有个pow不知道如何解
后来再去翻so文件,发现有的so文件大小并不一样,我这个开的是 10kb的,还有个18kb的。。。
把18kb的so文件放入ida,就明了了
看了别人的wp说是取i和i在之前列表里的下标,但是也搞不懂为什么是这样。。问了学re的大佬,也是一知半解。。。
那按照下标的话,就能得到代码:
a = [60,108,51,79,129,56,44,94,84,69,64] index = [6,2,5,0,7,3,10,9,1,4,8] res = [] for i in range(len(a)): y1 = pow(-1,(index.index(i)+i)%2) res.append(chr(a[i]+y1*(index.index(i)+i))) for v in index: print(res[v],end="")
得到结果2019SWPUctf