查壳,发现是64位 进ida分析
看看都有些啥 发现只有patch_me有东西
分析一下patch_me
当为奇数时,程序会说 just finished //这不是我们想要的
当为偶数时,会进入get_flag函数
用 r 键将那串看不懂的东西转换成 char 类型
因为时小端存储 所以字符应该为 icug`of\x7F \\ x7F反过来好像是因为ascii码表x7F代表的是del键 x7f不用带入也能算出flag可能也是这个原因
分析一下
发现case4 将 s 与 f2 拼接 但是s2 里面什么都没有
case5 对 f2 进行处理
case1 把 f1 和 f2 进行拼接并告诉你这是flag
去看看 f1 是啥
这是在hex-view 里的,不用进行小端存储 //好像是内存?
把对 f2 的处理写一个脚本并与 f1 拼接得出flag
s = 'icug`of' #千万要注意IDA的字符是反向存储的!!!
str = list(s) #将s进行分割转化为元组
flag = 'GXY{do_not_'
for j in range(len(str)):
if j % 2 == 1:
flag += chr(ord(str[j]) - 2)
else:
flag += chr(ord(str[j]) - 1)
print(flag)