ddddhm
有脚本启动程序,一开始以为是简单地打开loader,IDA打开,看的很懵,始终没找fail字符串,看到了类似CRC检验(IDA 的findcrypt3的功劳),此函数只是一个检验,并没有算法,就先让程序跑起来,再用x32dbg附加这个进程,输入字符后跟着往里走(有查断点的反调试,设置新运行点即可跳过),直到找到fail和win的字符串,选中整个主函数,右键snowman反编译,逻辑清晰,一较复杂的异或和最后的明文比较
tmp=[0x02,0x0D,0x6A,0x1A,0x27,0x7F,0x32,0x65,0x86,0xA5,0xC5,0xD7,0xCF,0xDD,0xE3,0x98,0x3D,0x79,0x53,0x6A,0x18,0x54,0x37,0x14,0xA9,0xE0,0x82,0xB2,0xCE,0x80,0xCD,0x8C]
stri='PEFile'
flag=[0 for i in range(0x20)]
for i in range(0x20):
flag[i]=(tmp[i]^(ord(stri[i%6])+(i|0xe3)^i<<4))&0xff
print(flag)
print(''.join(map(chr,flag)))
#15cf4ce97a270960b10bed48b0cfe4b8