脱壳
使用exeinfo查看文件,发现有upx,使用upxshell解压缩。之后放进IDA中。
查看程序
很明显V4和v16都是个数组。可以看出是将v4的每个值(一共12个),去和data的那个数组去比,我们要求的应该就是数组16.把for循环逆着想一下,就出来了。
data数组已经给出,7Eh(不要漏了)就是~,27h就是单引号。
脚本
data = '~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)(\'&%$# !"'
#要注意单引号前要加'\'防止转义。
v4 = ['*','F','\'','"','N',',','"','(','I','?','+','@']
for i in range(12):
print(chr(data.find(v4[i])+1),end='')
成功,flag为{U9X_1S_W6@T?}