查壳
用ida打开
题目还给了另外一个文件
里面有数据
根据数据写脚本
脚本如下:
ptr = [198,232,816,200,1536,300,6144,984,51200,570,92160,1200,565248,756,1474560,800,6291456,1782,65536000]
flag=""
for i in range(19):
if ((i+1) & 1):#初始i为0,源程序i为1
flag+=chr(ptr[i] >> (i+1))
else:
flag+=chr(ptr[i] // (i+1))
print(flag)
注释:
从flag读数据到数组ptr中
经过一个for循环和if判断后输出
if (i&1) {i 是 奇数,执行这里} else {.i 是 偶数,执行这里…};
i>>1 是 让 整型数 i 的数值 右移 2 进制 1 位 的运算
即奇数位移,整数乘法
数据为奇数前面的才会执行
我也不太清楚脚本是怎么来的