最终结果:flag{equation}
通过ida可以看到第一个字符是0x66,也就是f,后面的输入的字符都需要加上前一个字符和给定的十六进制进行比较,在gdb中调试的时候也确实是这样,编写python代码的时候发现只有前一部分是对的,后面一部分是错的,进行gdb调试,发现在和0xe6比较时,有两次比较,但是这两次比较是完全一样的,没有读取下一个字符串,所以在编写代码时,就需要删除一个0xe6就可以了
image.png
image.png
image.png
这个截图比较长,后面的就不放了
把特殊的两个模块单独放出来
image.png
这两完全一样,是没有按照规律下去的,这个字符串在此处连续读了两次
python代码:
store=[0x66,0xd2,0xcd,0xc8,0xe2,0xe0,0xd6,0xe6,0xd6,0xd5,0xdd,0xd8,0xdd,0xeb]
x=0
result=""
for i in range(0,14):
x=store[i]-x
result+=chr(x)
print(result)
结果:image.png