一.查壳
无壳,并且发现是vc++编译的
二.拖入ida,来静态分析,这题让我深刻感觉到汇编的nb。
这段算是灵性的一段了,单从静态语句来看,发现分析不出啥,只能靠猜一下,我当时猜的是将输入的字符串又赋值到一个新的字符数组里了,后面,写脚本就出现了问题,一直乱码,又返回分析,结合wp才知道,这玩意,要看汇编,我又把汇编看了一遍,才知道原来是倒序2333,
就是这段,认真分析下来,就能知道,然后写出脚本flag就出来了。
三.脚本
res=[0x78, 0x49, 0x72, 0x43, 0x6A, 0x7E, 0x3C, 0x72, 0x7C, 0x32, 0x74, 0x57, 0x73, 0x76, 0x33, 0x50, 0x74, 0x49, 0x7F, 0x7A, 0x6E, 0x64, 0x6B, 0x61]
print(len(res))
flag=""
for i in range(len(res)):
flag+=chr((res[23-i]^6)-1)
print(flag)
四.总结
这题本身加密算法是不难的,一个异或和加法,算入门,感觉考的就是会不会看汇编,这也是我的思维定式了,发现一上来就F5,然后不去看汇编,以后要改进。