00403E03 $ 33D2 xor edx, edx
00403E05 . 33F6 xor esi, esi
00403E07 . 74 05 je short 00403E0E
00403E09 . 68 03059090 push 90900503
00403E0E > A1 D0AB4000 mov eax, dword ptr [40ABD0] ;基址
00403E19 . 05 00100000 add eax, 1000
00403E24 . E8 F0E9FFFF call 00402819
00403E29 . 75 04 jnz short 00403E2F
00403E2B .^ 74 88 je short 00403DB5
00403E2F > 0FB610 movzx edx, byte ptr [eax]
00403E32 . 92 xchg eax, edx
00403E33 . 42 inc edx
00403E3A . E8 DAE9FFFF call 00402819
00403E45 . 03F0
add esi, eax ;累加整个代码段
00403E47 . 75 07 jnz short 00403E50
00403E49 . 74 05 je short 00403E50
00403E4B . 8809 mov byte ptr [ecx], cl
00403E4D . A5 movs dword ptr es:[edi], dword ptr [esi]
00403E50 > 92 xchg eax, edx
00403E51 . E8 C3E9FFFF call 00402819
00403E56 . EB 03 jmp short 00403E5B
00403E5B > 3D FE7F4000 cmp eax, 00407FFE ;段尾
00403E60 .^ 7C CD jl short 00403E2F
00403E66 . E8 AEE9FFFF call 00402819
00403E6B . C3 retn
0040413C > \B8 033E4000 mov eax, 00403E03 ; 入口地址
00404147 . A3 41B04000 mov dword ptr [40B041], eax
00404152 . E8 B1E8FFFF call 00402A08
0040415D . E8 C9EBFFFF call 00402D2B
00404168 . A1 D0AB4000 mov eax, dword ptr [40ABD0]
0040416D . 03C6 add eax, esi
0040416F . EB 03 jmp short 00404174
00404174 > 0305 92904000 add eax, dword ptr [409092]
0040417E . 2B35 A2904000
sub esi, dword ptr [4090A2]
00404189 > 81FE AA000000
cmp esi, 0AA ;★自校验
00404199 > 74 0B je short 004041A6 ;★必须跳
0040419B . 75 02 jnz short 0040419F
0040419F > C605 62494000 08 mov byte ptr [404962], 8 ;★不干好事 注意这里004041AA ? 2B05 9A904000 sub eax, dword ptr [40909A]
004041B6 . 0305 86904000 add eax, dword ptr [409086]
004041C0 . 6BC0 03 imul eax, eax, 3
004041C3 . 85C0 test eax, eax
004041C5 . 74 3B je short 00404202
004041C7 . 75 02 jnz short 004041CB
004041CB > 8B45 E4 mov eax, dword ptr [ebp-1C]
004041F5 . 33C0 xor eax, eax
004041FA . 74 06 je short 00404202
004041FC . 75 04 jnz short 00404202
00404202 . 66:8B15 AE904000 mov dx, word ptr [4090AE]
0040420D . 66:3315 96904000 xor dx, word ptr [409096]
00404218 . 66:8915 121C4000 mov word ptr [401C12], dx
00404223 . 68 2E424000 push 0040422E
00404228 . C3 retn
0040422E . 66:3315 96904000 xor dx, word ptr [409096]
00404239 . E8 15FBFFFF call 00403D53 ;★ 检查前面Findwindow得到的标志
00404244 . 68 4F424000 push 0040424F
00404249 . C3 retn
0040424F . E8 33E6FFFF call 402887
0040425A . 66:8B0D AE904000 mov cx, word ptr [4090AE]
00404265 . 51 push ecx
00404266 . 320D 2EB04000 xor cl, byte ptr [40B02E]
00404270 . 66:890D 01414000 mov word ptr [404101], cx
0040427B . 320D 2EB04000 xor cl, byte ptr [40B02E]
00404281 . 59 pop ecx
00404286 . B8 043A4000 mov eax, 00403A04 ; 入口地址
00404291 . A3 3DB04000 mov dword ptr [40B03D], eax
0040429C . E8 67E7FFFF call 402A08
004042A7 . B8 223B4000 mov eax, 00403B22 ; 入口地址
004042B2 . A3 41B04000 mov dword ptr [40B041], eax
004042BD . E8 8EE5FFFF call 402850
004042C8 . B8 FE3B4000 mov eax, 00403BFE ; 入口地址
004042D3 . A3 45B04000 mov dword ptr [40B045], eax
004042DE . E8 36E5FFFF call 402819
004042E9 . 66:8B15 AE904000 mov dx, word ptr [4090AE]
004042F4 . 66:3315 26B04000 xor dx, word ptr [40B026]
004042FF . 66:8915 48434000 mov word ptr [404348], dx
0040430A . 66:3315 26B04000 xor dx, word ptr [40B026]
00404315 . 83C4 00 add esp, 0
0040433F . 33C0 xor eax, eax
00404344 . 74 06 je short 0040434C
00404346 . 75 04 jnz short 0040434C
0040434C . E8 25E7FFFF call 402A76 ;★ F7进去
00404357 . E8 2BE5FFFF call 402887
00404362 . 68 8E434000 push 0040438E
0040436D . 75 09 jnz short 00404378
0040436F . 74 02 je short 00404373
00404372 . 47 inc edi
00404373 > 74 03 je short 00404378
00404378 > A1 D0AB4000 mov eax, dword ptr [40ABD0]
0040437D . 03C1 add eax, ecx
00404383 . 2B05 36B04000 sub eax, dword ptr [40B036]
00404389 . C3 retn
0040438E . 6B05 9A904000 03 imul eax, dword ptr [40909A], 3
00404399 . E8 1CE3FFFF call 004026BA
004043A4 . 66:03C2 add ax, dx
004043A7 . 03C3 add eax, ebx
004043A9 . 85C0 test eax, eax
004043AF . 74 09 je short 004043BA
004043B1 . 75 01 jnz short 004043B4
004043B4 . 03C7 add eax, edi
004043BA > 0305 9E904000 add eax, dword ptr [40909E]
004043C0 . EB 03 jmp short 004043C5
004043C2 .^ 7E 90 jle short 00404354
004043C5 > E8 FFE4FFFF call
004028C9 ;★ 这里F7跟进去一下,取了一个跟时间相关的数
004043CA . 8BD8 mov ebx, eax
004043D0 . E8 44E4FFFF call 402819
004043D5 . 33C0 xor eax, eax
004043DB . F7F0
div eax ;人为地制造异常
004043DD . E8 A5E4FFFF call 402887
004043E6 . 2B05 36B04000 sub eax, dword ptr [40B036]
004043EC . C3 retn
00403A04 /$ 33D2 xor edx, edx
00403A06 |. EB 28 jmp short 00403A30
00403A10 |> 8A9A 93AA4000 /mov bl, byte ptr [edx+40AA93]
00403A1A |. 2ADA |sub bl, dl
00403A1C |. 32DA |xor bl, dl
00403A25 |. 889A 93AA4000 |mov byte ptr [edx+40AA93], bl
00403A2B |. 42 |inc edx
00403A30 |> 83FA 1C cmp edx, 1C
00403A33 |.^ 72 DB \jb short 00403A10
00403A3B |. 33DB xor ebx, ebx
00403A3D |. 33FF xor edi, edi
00403A46 |. 68 00020000 push 200 ; /BufSize = 200 (512.)
00403A51 |. 68 E3B14000 push 0040B1E3 ; |Buffer = ReverseM.0040B1E3
00403A5C |. E8 85390000 call <jmp.&kernel32.GetWindowsDirector>; \GetWindowsDirectoryA
00403A67 |. 68 93AA4000 push 0040AA93 ; /StringToAdd = ""
00403A72 |. 68 E3B14000 push 0040B1E3 ; |ConcatString = ""
00403A7D |. E8 94390000 call <jmp.&kernel32.lstrcatA> ; \lstrcatA
00403A88 |. 6A 00 push 0 ; /hTemplateFile = NULL
00403A8A |. 68 80000000 push 80 ; |Attributes = NORMAL
00403A93 |. 6A 03 push 3 ; |Mode = OPEN_EXISTING
00403A95 |. 6A 00 push 0 ; |pSecurity = NULL
00403A97 |. 6A 01 push 1 ; |ShareMode = FILE_SHARE_READ
00403A9E |> 68 00000080 push 80000000 ; |Access = GENERIC_READ
00403AA9 |. 68 E3B14000 push 0040B1E3 ; |FileName = ""
00403AB4 |. E8 03390000 call <jmp.&kernel32.CreateFileA> ; \CreateFileA
Ring0调试器检测
00403AC0 |. 83F8 FF cmp eax, -1
00403ACA |. C605 E3B14000 00 mov byte ptr [40B1E3], 0
00403AD5 |. C605 93AA4000 00 mov byte ptr [40AA93], 0
00403AE0 |. 74 09 je short 00403AEB ;★必须跳
00403AE2 |. A3 9A904000 mov dword ptr [40909A], eax ;★ 否则就会修改这里的数值 这个值在最后解码用户名的时候有用到
00403AEB |> 33D2 xor edx, edx
00403AED |. EB 28 jmp short 00403B17
00403AF7 |> 8A9A 93AA4000 /mov bl, byte ptr [edx+40AA93]
00403B01 |. 2ADA |sub bl, dl
00403B03 |. 32DA |xor bl, dl
00403B0C |. 889A 93AA4000 |mov byte ptr [edx+40AA93], bl
00403B12 |. 42 |inc edx
00403B17 |> 83FA 1C cmp edx, 1C
00403B1A |.^ 72 DB \jb short 00403AF7
00403B1C \. C3 retn
0040AA93 5C 73 79 73 74 65 6D 33 32 5C 64 72 69 76 65 72 \system32\driver
0040AAA3 73 5C 57 49 4E 49 43 45 2E 64 61 74 00 s\WINICE.dat.
00403B22 $ 33D2 xor edx, edx
00403B24 . EB 28 jmp short 00403B4E
00403B2E > 8A9A B0AA4000 mov bl, byte ptr [edx+40AAB0]
00403B38 . 2ADA sub bl, dl
00403B3A . 32DA xor bl, dl
00403B43 . 889A B0AA4000 mov byte ptr [edx+40AAB0], bl
00403B49 . 42 inc edx
00403B4E > 83FA 5C cmp edx, 5C
00403B51 .^ 72 DB jb short 00403B2E
00403B59 . 33DB xor ebx, ebx
00403B5B . 33FF xor edi, edi
00403B5D . EB 47 jmp short 00403BA6
00403B60 . 03E8 add ebp, eax
00403B64 > 6A 00 push 0 ; /hTemplateFile = NULL
00403B66 . 68 80000000 push 80 ; |Attributes = NORMAL
00403B6F . 6A 03 push 3 ; |Mode = OPEN_EXISTING
00403B71 . 6A 00 push 0 ; |pSecurity = NULL
00403B73 . 6A 01 push 1 ; |ShareMode = FILE_SHARE_READ
00403B7A . 68 00000080 push 80000000 ; |Access = GENERIC_READ
00403B85 . 68 E3B14000 push 0040B1E3 ; |FileName = ""
00403B90 . E8 27380000 call <jmp.&kernel32.CreateFileA> ; \CreateFileA
检测驱动
00403B9B . 83C0 01 add eax, 1
00403B9E . 03D8 add ebx, eax ;★累加
00403BA0 . 47 inc edi
00403BA1 . EB 03 jmp short 00403BA6
00403BA6 > 83FF 5C cmp edi, 5C
00403BA9 .^ 72 B9 jb short 00403B64
00403BB1 . 3105 9E904000 xor dword ptr [40909E], eax ;★如果检测到黑名单中的驱动存在的话,这个值将被改写。个人感觉作者这里的原意应该是 xor dword ptr [40909E] ,ebx
00403BB7 . EB 03 jmp short 00403BBC
00403BBC > C605 B0AA4000 00 mov byte ptr [40AAB0], 0
00403BC7 . 33D2 xor edx, edx
00403BC9 . EB 28 jmp short 00403BF3
00403BD3 > 8A9A B0AA4000 mov bl, byte ptr [edx+40AAB0]
00403BDD . 32DA xor bl, dl
00403BDF . 02DA add bl, dl
00403BE8 . 889A B0AA4000 mov byte ptr [edx+40AAB0], bl
00403BEE . 42 inc edx
00403BF3 > 83FA 5C cmp edx, 5C
00403BF6 .^ 72 DB jb short 00403BD3
00403BF8 . C3 retn
0040AAB0 5C 5C 2E 5C 53 49 43 45 00 5C 5C 2E 5C 53 49 57 \\.\SICE.\\.\SIW
0040AAC0 56 49 44 00 5C 5C 2E 5C 4E 54 49 43 45 00 5C 5C VID.\\.\NTICE.\\
0040AAD0 2E 5C 52 45 47 53 59 53 00 5C 5C 2E 5C 52 45 47 .\REGSYS.\\.\REG
0040AAE0 56 58 47 00 5C 5C 2E 5C 46 49 4C 45 56 58 47 00 VXG.\\.\FILEVXG.
0040AAF0 5C 5C 2E 5C 46 49 4C 45 4D 00 5C 5C 2E 5C 54 52 \\.\FILEM.\\.\TR
0040AB00 57 00 5C 5C 2E 5C 49 43 45 45 58 54 00 W.\\.\ICEEXT.
00403BFE $ 33D2 xor edx, edx
00403C00 . EB 28 jmp short 00403C2A
00403C0A > 8A9A 0DAB4000 mov bl, byte ptr [edx+40AB0D]
00403C14 . 2ADA sub bl, dl
00403C16 . 32DA xor bl, dl
00403C1F . 889A 0DAB4000 mov byte ptr [edx+40AB0D], bl
00403C25 . 42 inc edx
00403C2A > 83FA 2E cmp edx, 2E
00403C2D .^ 72 DB jb short 00403C0A
00403C35 . C605 29AB4000 00 mov byte ptr [40AB29], 0
00403C40 . C605 34AB4000 00 mov byte ptr [40AB34], 0
00403C4B . 33DB xor ebx, ebx
00403C4D . 33FF xor edi, edi
00403C4F . 75 06 jnz short 00403C57
00403C51 . 74 04 je short 00403C57
00403C57 > B8 56020000 mov eax, 256
00403C62 . A3 39B64000 mov dword ptr [40B639], eax
00403C6D . 68 41B64000 push 0040B641 ; /pHandle = ReverseM.0040B641
00403C78 . 68 1F000200 push 2001F ; |Access =
KEY_QUERY_VALUE|KEY_SET_VALUE|KEY_CREATE_SUB_KEY|KEY_ENUMERATE_SUB_KEYS|KEY_NOTIFY|20000
00403C82 . 6A 00 push 0 ; |Reserved = 0
00403C84 . 68 0DAB4000 push 0040AB0D ; |Subkey = "SOFZWIZI\P",89,"Quw}bdt峹",85,"|
[z",85,"",96,"崗"
00403C8E . 68 02000080 push 80000002 ; |hKey = HKEY_LOCAL_MACHINE
00403C99 . E8 38380000 call <jmp.&advapi32.RegOpenKeyExA> ; \RegOpenKeyExA
00403CA4 . 68 39B64000 push 0040B639 ; /pBufSize = ReverseM.0040B639
00403CAF . 68 E3B34000 push 0040B3E3 ; |Buffer = ReverseM.0040B3E3
00403CB9 . 68 35AB4000 push 0040AB35 ; |pValueType = ReverseM.0040AB35
00403CBE . 6A 00 push 0 ; |Reserved = NULL
00403CC5 . 68 2AAB4000 push 0040AB2A ; |ValueName = "q?,8B,"tapr",84,"qz"
00403CD0 . FF35 41B64000 push dword ptr [40B641] ; |hKey = 0
00403CDB . E8 FC370000 call <jmp.&advapi32.RegQueryValueExA> ; \RegQueryValueExA
检测注册表
00403CE0 . EB 03 jmp short 00403CE5
00403CE5 > C605 0DAB4000 00 mov byte ptr [40AB0D], 0
00403CF0 . C605 2AAB4000 00 mov byte ptr [40AB2A], 0
00403CFB . C605 35AB4000 00 mov byte ptr [40AB35], 0
00403D02 . EB 03 jmp short 00403D07
00403D07 > 85C0 test eax, eax
00403D09 . 75 11 jnz short 00403D1C ;★必须跳
00403D11 . 8035 A6904000 37 xor byte ptr [4090A6], 37 ;★否则等待这个值的命运将是被修改
00403D1C > 33D2 xor edx, edx
00403D1E . EB 28 jmp short 00403D48
00403D28 > 8A9A 0DAB4000 mov bl, byte ptr [edx+40AB0D]
00403D32 . 32DA xor bl, dl
00403D34 . 02DA add bl, dl
00403D3D . 889A 0DAB4000 mov byte ptr [edx+40AB0D], bl
00403D43 . 42 inc edx
00403D48 > 83FA 2E cmp edx, 2E
00403D4B .^ 72 DB jb short 00403D28
00403D4D . C3 retn
0040AB0D 53 4F 46 54 57 41 52 45 5C 4E 75 4D 65 67 61 5C SOFTWARE\NuMega\
0040AB1D 44 72 69 76 65 72 53 74 75 64 69 6F F8 49 6E 73 DriverStudio鳬ns
0040AB2D 74 61 6C 6C 44 69 72 FE 52 45 47 5F 53 5A 00 tallDirEG_SZ.
004043FC . FF75 A8 push dword ptr [ebp-58]
00404407 . 64:8F05 00000000 pop dword ptr fs:[0]
00404412 . E8 B2E4FFFF call 004028C9
00404417 . 2BC3
sub eax, ebx
0040441D . 3D C02C0700
cmp eax, 72CC0 ;检测上面人为制造的异常时间差,如果被单步调试的话这个值就很可能大于72CC0
00404422 . 72 30 jb short 00404454 ;★必须跳
00404428 . A1 AA904000 mov eax, dword ptr [4090AA]
0040442D . 33DB xor ebx, ebx
00404433 . A3 63494000 mov dword ptr [404963], eax ;★不干好事
0040443E . A1 AE904000 mov eax, dword ptr [4090AE]
00404449 . A3 67494000 mov dword ptr [404967], eax ;★好事的不做
00404454 > 68 D8444000 push 004044D8
0040445F . E8 23E4FFFF call 402887
0040446A . 75 09 jnz short 00404475
0040446C . 74 02 je short 00404470
0040446F . 47 inc edi
00404470 > 74 03 je short 00404475
00404475 > E8 9FE3FFFF call 402819