image.png
    image.png
    IDA打开:
    image.png
    代码逻辑如图,if判断语句中的33uLL原本值是十六进制显示的,这里用IDA中的数值转换变成十进制,方便查看上下逻辑。这里说下strncmp函数,比较两段字符串是否相同。
    跟进V3赋值global:
    image.png
    image.png
    上文异或处理的数据就是这一段了。
    选中利用IDA中的Editor中的Export data选项:
    image.png

    1. data=[0x66, 0x0A, 0x6B, 0x0C, 0x77, 0x26, 0x4F, 0x2E, 0x40, 0x11,
    2. 0x78, 0x0D, 0x5A, 0x3B, 0x55, 0x11, 0x70, 0x19, 0x46, 0x1F,
    3. 0x76, 0x22, 0x4D, 0x23, 0x44, 0x0E, 0x67, 0x06, 0x68, 0x0F,
    4. 0x47, 0x32, 0x4F, 0x00]
    5. flag = chr(data[0])
    6. i=1
    7. while True:
    8. if i < len(data):
    9. flag += chr(data[i]^data[i-1])
    10. i += 1
    11. else:
    12. break
    13. print(flag)