IDA打开:
代码逻辑如图,if判断语句中的33uLL原本值是十六进制显示的,这里用IDA中的数值转换变成十进制,方便查看上下逻辑。这里说下strncmp函数,比较两段字符串是否相同。
跟进V3赋值global:
上文异或处理的数据就是这一段了。
选中利用IDA中的Editor中的Export data选项:
data=[0x66, 0x0A, 0x6B, 0x0C, 0x77, 0x26, 0x4F, 0x2E, 0x40, 0x11,
0x78, 0x0D, 0x5A, 0x3B, 0x55, 0x11, 0x70, 0x19, 0x46, 0x1F,
0x76, 0x22, 0x4D, 0x23, 0x44, 0x0E, 0x67, 0x06, 0x68, 0x0F,
0x47, 0x32, 0x4F, 0x00]
flag = chr(data[0])
i=1
while True:
if i < len(data):
flag += chr(data[i]^data[i-1])
i += 1
else:
break
print(flag)