打开后,发现是乱码,这是个悲伤的故事。。
再查一下壳,有壳,
直接上脱壳机,可以把壳给脱掉,
接着放进IDA里,发现还不太行,F5不管用了,ida提示文件太大,没法反汇编。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190807164903278.png
仔细看一下主函数,有大量的无用的代码,花指令。直接写IDC脚本给nop掉,结果还是不行,再找找其他函数,发现sub_40100也是大量花指令,同样写脚本nop掉。
同时更改main函数的开始地址
然后再使堆栈平衡就可以F5了。
printf("Key : ");
nop();
scanf("%s", file);
v3 = strlen(file);
nop();
v4 = fopen("file", "rb"); // 直接操作文件
nop();
if ( !v4 )
{
nop();
printf("\n\n\n颇老阑 茫阑荐 绝促!\n");
nop();
exit(0);
}
fseek(0, 0, 2);
nop();
v7 = ftell(v11);
nop();
rewind(v11);
nop();
while ( !feof(v11) )
{
nop();
key_0[v8] = fgetc(v11);
nop();
++v8;
nop();
}
nop();
for ( i = 0; i < v7; ++i )
{
key_0[i] ^= file[i % v3];
nop();
key_0[i] = ~key_0[i];
nop();
}
fclose(v11);
nop();
v6 = fopen("file", "wb");
nop();
nop();
for ( j = 0; j < v7; ++j )
{
fputc(key_0[j], v6);
nop();
}
printf(
"\n"
"颇老阑 汗备沁促!\n"
"唱绰 各矫 唱悔瘤父 距加篮 瘤虐绰 荤唱捞促!\n"
"蝶扼辑 呈啊 唱俊霸 捣阑 玲绊, 棵官弗 虐蔼阑 罐疽促搁 颇老篮 沥惑拳 登绢 乐阑 巴捞促!\n"
"窍瘤父 父距 肋给等 虐甫 持菌促搁 唱绰 酒林酒林 唱悔扁 锭巩俊 呈狼 颇老篮 肚 噶啊龙 巴捞促!");
nop();
return getch();
}
可以看到,file文件先和key异或,再取反,得到加密后的文件,首先便要将key找出来。
用winhex打开file文件,再打开一个exe文件夹,可以找到他们的不同,再写脚本解就可以了
m=[ 0xC7, 0xF2, 0xE2, 0xFF, 0xAF, 0xE3, 0xEC, 0xE9, 0xFB, 0xE5, 0xFB, 0xE1,
0xAC, 0xF0, 0xFB, 0xE5, 0xE2, 0xE0, 0xE7, 0xBE, 0xE4, 0xF9, 0xB7, 0xE8,
0xF9, 0xE2, 0xB3, 0xF3, 0xE5, 0xAC, 0xCB, 0xDC, 0xCD, 0xA6, 0xF1, 0xF8,
0xFE, 0xE9]
n=[ 0x54, 0x68, 0x69, 0x73, 0x20, 0x70, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D,
0x20, 0x63, 0x61, 0x6E, 0x6E, 0x6F, 0x74, 0x20, 0x62, 0x65, 0x20, 0x72,
0x75, 0x6E, 0x20, 0x69, 0x6E, 0x20, 0x44, 0x4F, 0x53, 0x20, 0x6D, 0x6F,
0x64, 0x65]
key=''
for i in range(len(m)):
key=key+chr(m[i]^0xFF^n[i])
print(key)
解出来是‘letsplaychessletsplaychessletsplayches’,可以得到,key是letsplaychess。
接着可以写脚本来解了
key = "letsplaychess"
f = open("file", "rb")
data = f.read()
exe = []
for i in range(len(data)):
exe.append(((~data[i] ^ ord(key[i%len(key)])) % 256))
f.close()
f = open("file_de.exe", "wb")
f.write(bytes(exe))
f.close()
得到一个exe文件,
参考:https://blog.csdn.net/xiangshangbashaonian/article/details/84110506
https://blog.csdn.net/whklhhhh/article/details/78137138