一.查壳
发现是64位的Linux文件(ELF可以看出是linux的文件)
二.拖入ida64,静态分析
注意这里两个坑:
1.strcpy是复制字符串的意思,前面定义的v8数组只有8个,但是后面的字符串是超过8个的,所以有可能这个v8定义是反编译错误的(算了一遍,确实是错的,不需要管这个数组,直接用原字符串就好了)
2._int 64 v7
先将v7转换成字符串,这步个人理解是BYTE是字节型的指针,刚好对应的是一个字符,同时这个字符需要倒过来,因为是小端存储。
三。算法分析,写出脚本
v7="harambe"
v6=7
v8=":"AL_RT^L*.?+6/46"
str=""
for i in range(0,len(v8)):
str+=chr(ord((v7[i%7]))^ord(v8[i]))
print(str)
得到flag