ida打开,找到主函数,发现题目让你输入幸运数字获得falg,打开patch_me()函数,发现如果你输入的数是偶数,就可以得到flag,再进入get_flag()函数,函数会生成一个随机数然后对200取余,有六种情况,第一种,把s和f1拼接,双击发现f1是GXY{do_not_,然后再把f2和s拼接,而f2未知,继续往下看,第四种情况是给s赋值,但是由于ida会把储存数据到过来所以应该把s倒过来才是真正的s,然后再把s给f2,第五种情况对f2处理,若索引为奇数,把ASCLL码值减2,若为偶数,把ASCLL码值减1,然后又回到第一种情况,因为随机数会随着时间产生其实就是一个循环6次的结构,把处理后的f2 f1接起来就是flag
l1=[0x69,0x63,0x75,0x67,0x60,0x6F,0x66,0x7F]
for j in range(0,8):
if(j % 2 == 1):
l1[j]=l1[j]-2
else:
l1[j]=l1[j]-1
print(l1)
for j in range(0,8):
l1[j]=chr(l1[j])
print(l1)
s=''.join(l1)
print(s)