摘要:
今天在公司电脑上测试一个小偷程序,使用了adodb.stream组件,但是卡巴斯基6.0却劫杀了该组件,提示“恶意脚本<>: 已检测新变种 木马程序 'Trojan-Downloader.JS.gen'. 恶意脚本<>: 拒绝访问.”关键字:
卡巴斯基 误杀 小偷采集组件 adodb.stream 正文:
今天在公司电脑上测试一个小偷程序,使用了adodb.stream组件,但是卡巴斯基6.0却劫杀了该组件,提示“恶意脚本<<unknown>>: 已检测新变种 木马程序 'Trojan-Downloader.JS.gen'. 恶意脚本<<unknown>>: 拒绝访问.”
卡巴不管你乐意不乐意,只要程序中包含adodb.stream,即只要用到此组件,一般都会被卡巴误杀,不管你是不是木马。拦杀后,再运行小偷采集程序,页面显示空白,根本不执行任何信息,用阿江的ASPCHECK检测,Microsoft.XMLHTTP组件及Adodb.Stream组件正常,可见卡巴只是劫杀了使用了adodb.stream组件的程序的运行,但并没有停止adodb.stream组件本身的运行。
解决方法对于flymorn来说就简单了,把adodb.stream在程序中分开来写,使用变量来组成组件名称,不在文件中直接出现完整的组件名称,先定义几个变量,分别存储组件名称的一部分,如原来的程序是这么写的:
'-----------------------------
Function BytesToBstr(body)
dim objstream
set objstream = Server.CreateObject("adodb.stream")
objstream.Type = 1
objstream.Mode =3
objstream.Open
objstream.Write body
objstream.Position = 0
objstream.Type = 2
objstream.Charset ="gb2312"
BytesToBstr = objstream.ReadText
objstream.Close
set objstream = nothing
End Function
'-----------------------------
改成以下写法:
'-----------------------------
Function BytesToBstr(body)
dim objstream,a1,a2
a1="adodb."
a2="stream"
set objstream = Server.CreateObject(""&a1&a2&"")
objstream.Type = 1
objstream.Mode =3
objstream.Open
objstream.Write body
objstream.Position = 0
objstream.Type = 2
objstream.Charset ="gb2312"
BytesToBstr = objstream.ReadText
objstream.Close
set objstream = nothing
End Function
'-----------------------------
卡巴对Microsoft.XMLHTTP组件并没有拦杀;使用Microsoft.XMLHTTP组件的地方不必修改。程序代码被卡巴斯基判断为病毒,有可能因为程序中使用了adodb.stream和Scripting.FileSystemObject这两个组件,我觉得应该是这样,因为这两组件,常被用来写一些vbs病毒,杀毒软件误杀也就情有可缘了,我写过一个用vbs批量下载文件的东西,也是调用xmlhttp和fso的,结果也被误杀掉。
综合思考,卡巴的做法是“宁杀一千,不错一个”的典型做法,他不管用户乐意不乐意,全部杀掉,你想不杀都不行,这是否在“部分蹂躏”用户的意见呢?!建议卡巴对疑似病毒木马的,不然那么果断,咨询下用户吧,用户的体验会带给你巨大的回报。