网络技术是从1990年代中期发展起来的新技术,它把互联网上分散的资源融为有机整体,实现资源的全面共享和有机协作,使人们能够透明地使用资源的整体能力并按需获取信息。资源包括高性能计算机、存储资源、数据资源、信息资源、知识资源、专家资源、大型数据库、网络、传感器等。 当前的互联网只限于信息共享,网络则被认为是互联网发展的第三阶段。
3721简单研究了一下3721的机制,写在这里,作为心得笔记吧。大部分收获都来自
Softice + 反汇编,不一定适用于某些版本。
1. CnsMin.dll的驻留方式
3721的核心文件:CnsMin.dll
通常存在于<
Windows Directory>Downloaded Program Files下。
通过注册表Run键值加载:Rundll32 <dir>CnsMin.dll, Rundll32
CnsMin.dll提供了一个函数Rundll32供Rundll32.exe调用
但这个函数只是调用一个真正的驻留函数Rundll32Main()。
Rundll32Main()伪代码:
void Rundll32Main()
{
hMutex = CreateMutex("CNSMINMUTEX");
if(ERROR_ALREADY_EXISTS)
{
CloseHandle(hMutex);
exit;
}
if(Is
WindowsNT()) {
SetProcessSecurityInfo();
}
else {
RegisterProcessAsService();
}
CheckVersion();
// CnsMinKP.sys/vxd 内核驱动程序,保护3721关键文件和注册表项不被
删除 ContactWithCnsMinKPDriver();
// 关键的hook,负责将CnsMin.dll注入其他进程空间
InstallCBTHook();
// 关键的hook,负责将CnsMin.dll注入其他进程空间
InstallCallWndProcHook();
// CnsMinIO.dll 负责IE地址栏下方的提示
InitCnsMinIO();
// 一些注册表信息
InitRegistry();
// 保护CnsMin.dll的钩子不被
卸载或抢先
InstallGuardTimer();
CreateMsgWindow();
// Message loop
while (true)
{
GetMessage(&msg);
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
CnsMin主要是通过WH_CBT和WH_CALLWNDPROC两个全局钩子注入IE进程空间的。注入
IE后,又安装了WH_KEYBOARD,WH_DEBUG等钩子。其中对3721实现其“实名转换”
有用的是WH_KEYBOARD。这是一个本地钩子。
CnsMin为了保证自己的优先级最高,用了一个定时器函数反复安装钩子,无疑会造成
系统性能的下降。
我曾经尝试过自己安装一个WH_DEBUG钩子阻止3721钩子的调用,确实起到了效果,
立即可以使3721失效。但这种方法3721仍然驻留IE进程内,属于指标不治本的方法。
强制结束Rundll32进程,可以暂时卸载3721的驻留代码。但CnsMin.dll通过COM注册已经
嵌入IE组件中,重新启动IE后,该进程又会重新启动。
2. 3721的防删除手段
文件系统驱动:CnsMinKP*.sys 针对NT/2000/XP有不同版本(98下面是CnsMinKP.vxd)
通常存在于<System directory>drivers目录。
驱动程序,由
Windows启动时加载。
该驱动程序过滤了对文件和注册表的删除操作。试图删除3721的关键文件和注册表项时,
直接返回一个TRUE,使
Windows认为删除已经成功,但文件和注册表实际上还是在那里。
该驱动程序还有一个黑名单(保存在某个外部文件中),阻止
Windows读取其他3721的
竞争对手的插件文件。
目前还没有找到停止该驱动的方法。
删除方法:在
Windows启动前(例如,98下面退出到DOS)删除CnsMinKP*.
sys文件。
注意:3721具有自恢复能力。某些关键文件被删除后,其它模块会试图从3721网站重新
下载。所以彻底删除前需要断开
网络连接。
3. 针对目前版本的删除步骤:
a) 运行3721自己提供的删除程序。可以删掉大部分的文件。
b) 从DOS启动,删除残存文件,如CnsMin.dll,CnsMinKP*.*等
可能的目录:Downloaded Program Files目录,Program Files3721目录,drivers目录
c) 启动
Windows,进入桌面时
Windows会报告一些模块找不到的错误,不用理会,删除
注册表中3721的值。
可能的位置:HKEY_CURRENT_USER: Software3721
HKEY_LOCAL_MACHINE:
WindowsCurrentVersionRun
SYSTEMCurrentControlSet
另外还零散的藏了一些,用关键字查找。
网络的神奇作用吸引着越来越多的用户加入其中,正因如此,网络的承受能力也面临着越来越严峻的考验―从硬件上、软件上、所用标准上......,各项技术都需要适时应势,对应发展,这正是网络迅速走向进步的催化剂。
关键词:3721驻留机制容易研究