0%

ransomware Writeup

脱壳

查壳后发现是upx加壳的,先脱壳

程序分析

刚开始导入IDA十分的卡,,,等得心累,,,,
加载完成后,发现sub_401000函数和_main函数部分有无数的无用的指令
写个python脚本解决它。。。(以对函数sub_401000为例)

1
2
3
4
start = 0x00401006
end = 0x004135CE
for i in xrange(start, end):
PatchByte(i, 0x90)

同样对main函数也做差不多的处理

之后对main函数进行F5,查看伪代码

根据关键代码得知,是对文件按字节先进行异或再取反进行加密,又知道文件原本是个exe,则
根据信息写出关键代码(需要熟悉PE文件结构中一直是不变的东西,可以现拿出几个pe文件对比得到偏移在0xd3-0x73处的可见字符串是不变的)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
rare =[
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
]
after = [
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
]
for i in xrange(len(after)):
print chr(after[i]^0xff^rare[i]),

得到key:letsplaychess

再次运行run.exe将file解密
之后运行解密后的file程序:

得到flag:Colle System