|
|
| 首页 | 技术文章 | 软件下载 | 博客 | 论坛 | 精品教程 | 黑客动画 | 视频资源 | 在线服务 | 黑客游戏 | | ||||
|
|
||||||||
|
||||||||
|
|||||
| 3721驻留机制简单研究 | |||||
作者:未知 文章来源:CnXHacker.Net 点击数: 更新时间:2005-2-26 ![]() |
|||||
|
简单研究了一下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(IsWindowsNT()) { 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 Files\3721目录,drivers目录 c) 启动Windows,进入桌面时Windows会报告一些模块找不到的错误,不用理会,删除 注册表中3721的值。 可能的位置:HKEY_CURRENT_USER: Software\3721 HKEY_LOCAL_MACHINE: Windows\CurrentVersion\Run SYSTEM\CurrentControlSet 另外还零散的藏了一些,用关键字查找。 |
|||||
| 文章录入:IceRiver 责任编辑:admin | |||||
| 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | |||||
| 最新热点 | 最新推荐 | 相关文章 | ||
| 瑞星公司08月21日发布 每日计 瑞星公司07月21日发布 每日计 “12321全国反垃圾邮件总动员 {a93c9e60-29b6-49da-ba21-f {71e7b3f5-cfaf-4c1e-b494-5 瑞星公司06月21日发布 每日计 瑞星公司05月21日发布 每日计 瑞星公司04月21日发布 每日计 甲骨文预报本季度安全补丁 修 瑞星公司03月21日发布 每日计 |
网友评论:(只显示最新5条。评论内容只代表网友观点,与本站立场无关!) |
| 关于我们 - 版权声明 - 帮助(?) - 广告服务 - 联系我们 - 友情链接 - 用户注册 - | Powered by ICE RIVER - STUDIO |
| » CnXHacker.CoM | © CopyRight 2002-2006, CnXHacker.CoM™, Inc. All Rights Reserved. |