请问全局钩子如何钩住系统的文件操作,例如复制和剪切

qq14923349 2011-05-04 10:35:33
我需要监控电脑的所有文件操作,

请不要推荐WINAPI --ReadDirectoryChangesW

请不要推荐filemon驱动级


我很简单 就需要钩住 复制和剪切 新建 修改等文件操作


我自己写过键盘钩子和鼠标钩子
但是如何截取 文件操作的消息?
能否给个例子

谢谢了
...全文
460 47 打赏 收藏 转发到动态 举报
写回复
用AI写文章
47 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangmengvv 2013-08-15
  • 打赏
  • 举报
回复
引用 16 楼 Lactoferrin 的回复:
改了一点

#include<windows.h>
#include<Shlobj.h>
#pragma comment(lib,"Shell32.lib")
using namespace std;

long __stdcall WindowProc(HWND hwnd,unsigned int uMsg,PIDLIST_ABSOLUTE*wParam,long lParam)
{
	static wchar_t Buffer[2048];static HANDLE hStdOut;unsigned long count;
	if(uMsg==WM_USER+123)
	{
		switch(lParam)
		{
			case SHCNE_RENAMEITEM:wcscpy(Buffer,L"SHCNE_RENAMEITEM:");break;
			case SHCNE_CREATE:wcscpy(Buffer,L"SHCNE_CREATE:");break;
			case SHCNE_DELETE:wcscpy(Buffer,L"SHCNE_DELETE:");break;
			case SHCNE_MKDIR:wcscpy(Buffer,L"SHCNE_MKDIR:");break;
			case SHCNE_RMDIR:wcscpy(Buffer,L"SHCNE_RMDIR:");break;
			case SHCNE_MEDIAINSERTED:wcscpy(Buffer,L"SHCNE_MEDIAINSERTED:");break;
			case SHCNE_MEDIAREMOVED:wcscpy(Buffer,L"SHCNE_MEDIAREMOVED:");break;
			case SHCNE_DRIVEREMOVED:wcscpy(Buffer,L"SHCNE_DRIVEREMOVED:");break;
			case SHCNE_DRIVEADD:wcscpy(Buffer,L"SHCNE_DRIVEADD:");break;
			case SHCNE_NETSHARE:wcscpy(Buffer,L"SHCNE_NETSHARE:");break;
			case SHCNE_NETUNSHARE:wcscpy(Buffer,L"SHCNE_NETUNSHARE:");break;
			case SHCNE_ATTRIBUTES:wcscpy(Buffer,L"SHCNE_ATTRIBUTES:");break;
			case SHCNE_UPDATEDIR:wcscpy(Buffer,L"SHCNE_UPDATEDIR:");break;
			case SHCNE_UPDATEITEM:wcscpy(Buffer,L"SHCNE_UPDATEITEM:");break;
			case SHCNE_SERVERDISCONNECT:wcscpy(Buffer,L"SHCNE_SERVERDISCONNECT:");break;
			case SHCNE_UPDATEIMAGE:wcscpy(Buffer,L"SHCNE_UPDATEIMAGE:");break;
			case SHCNE_DRIVEADDGUI:wcscpy(Buffer,L"SHCNE_DRIVEADDGUI:");break;
			case SHCNE_RENAMEFOLDER:wcscpy(Buffer,L"SHCNE_RENAMEFOLDER:");break;
			case SHCNE_FREESPACE:wcscpy(Buffer,L"SHCNE_FREESPACE:");break;
        }
		if(SHGetPathFromIDListW(*wParam,Buffer+wcslen(Buffer)))
		{
			WriteConsoleW(hStdOut,Buffer,wcslen(Buffer),&count,0);
		}
		if(SHGetPathFromIDListW(wParam[1],Buffer))
		{
			WriteConsoleW(hStdOut,L"->",2,&count,0);
			wcscat(Buffer,L"\n");
			WriteConsoleW(hStdOut,Buffer,wcslen(Buffer),&count,0);
		}else WriteConsoleW(hStdOut,L"\n",1,&count,0);
		return 0;
	}else if(uMsg==WM_CREATE)
	{
		hStdOut=GetStdHandle(STD_OUTPUT_HANDLE);
		return 0;
	}else
	return DefWindowProcW(hwnd,uMsg,(WPARAM)wParam,lParam);
}

int wmain(int argc, _TCHAR* argv[])
{
static WNDCLASSEXW wc={sizeof(WNDCLASSEXW),0,(WNDPROC)WindowProc,0,0,0,0,0,0,0,L"a",0};
wc.hInstance=GetModuleHandleW(0);
HWND hwnd=CreateWindowExW(0,(wchar_t*)RegisterClassExW(&wc),0,0,0,0,0,0,HWND_MESSAGE,0,0,0);
static SHChangeNotifyEntry shcne={0,1};
SHGetFolderLocation(0,CSIDL_DESKTOP,0,0,const_cast<_ITEMIDLIST**>(&shcne.pidl));
ULONG id=SHChangeNotifyRegister(hwnd,SHCNRF_InterruptLevel|SHCNRF_ShellLevel|SHCNRF_RecursiveInterrupt,SHCNE_ALLEVENTS,WM_USER+123,1,&shcne);
if(!id)return 1;
MSG msg;
while(GetMessageW(&msg,0,0,0))DispatchMessageW(&msg);
return 0;
}
您的这个方法能和hook相结合吗?
niushitang 2012-12-01
  • 打赏
  • 举报
回复
我也是和楼主同样的问题。我HOOK CopyFileEx。CopyFileA 。SHFileOperation这三个函数系统什么都没反馈给我。我在Win7上。是否和操作系统有关系。
qq14923349 2011-05-09
  • 打赏
  • 举报
回复
[Quote=引用 41 楼 lactoferrin 的回复:]
移动文件可以hook NtSetInformationFile
[/Quote]

你的代码我在VS2008试了 很不错 就是ctrl+c复制没出事件

另外我用API挂接 复制倒是拦截到
但是弹出个\\.\shadow 什么意思哦
qq14923349 2011-05-09
  • 打赏
  • 举报
回复
[Quote=引用 41 楼 lactoferrin 的回复:]
移动文件可以hook NtSetInformationFile
[/Quote]

你的代码我在VS2008试了 很不错 就是ctrl+c复制没出事件

另外我用API挂接 复制倒是拦截到
但是弹出个\\.\shadow 什么意思哦
qq14923349 2011-05-09
  • 打赏
  • 举报
回复
[Quote=引用 41 楼 lactoferrin 的回复:]
移动文件可以hook NtSetInformationFile
[/Quote]

你的代码我在VS2008试了 很不错 就是ctrl+c复制没出事件

另外我用API挂接 复制倒是拦截到
但是弹出个\\.\shadow 什么意思哦
Lactoferrin 2011-05-06
  • 打赏
  • 举报
回复
文件/文件夹操作不是用消息钩子的
qq14923349 2011-05-06
  • 打赏
  • 举报
回复
请问hook文件/文件夹操作

WH_SHELL 可以吗?

还是其他消息
qq14923349 2011-05-06
  • 打赏
  • 举报
回复
我刚好碰上8楼的情况
8楼能不能把新建 复制 粘贴 剪切 移动等对应的API 映射都发给我
那我就太感激了

:我也碰到右键获取不到CreateFile:: -_-!!!
蒙飞鸿 2011-05-06
  • 打赏
  • 举报
回复
[Quote=引用 40 楼 qq14923349 的回复:]
引用 39 楼 mengfeihong 的回复:
拦截复制比较容易,但是剪切,当初试了很多API都不行,如果是CreateFile的话,太多系统动作走这个API了,不知道怎么判断其中哪个是剪切。


复制你是怎么拦截的
剪切分为 复制 和创建不行吗?
[/Quote]
记得是CopyFileExW吧,移动、剪切是不走这个API的
Lactoferrin 2011-05-06
  • 打赏
  • 举报
回复
移动文件可以hook NtSetInformationFile
qq14923349 2011-05-06
  • 打赏
  • 举报
回复
[Quote=引用 39 楼 mengfeihong 的回复:]
拦截复制比较容易,但是剪切,当初试了很多API都不行,如果是CreateFile的话,太多系统动作走这个API了,不知道怎么判断其中哪个是剪切。
[/Quote]

复制你是怎么拦截的
剪切分为 复制 和创建不行吗?
蒙飞鸿 2011-05-06
  • 打赏
  • 举报
回复
拦截复制比较容易,但是剪切,当初试了很多API都不行,如果是CreateFile的话,太多系统动作走这个API了,不知道怎么判断其中哪个是剪切。
Lactoferrin 2011-05-06
  • 打赏
  • 举报
回复
NtCreateFile,NtOpenFile,NtReadFile,NtWriteFile.........
qq14923349 2011-05-06
  • 打赏
  • 举报
回复
就是监视计算机的所有操作

不过本地或者远程的操作全部记录下来···-_-!!!

这个不算很难吧
Lactoferrin 2011-05-06
  • 打赏
  • 举报
回复
你到底要监视什么?远程复制肯定不会用CopyFile的
qq14923349 2011-05-06
  • 打赏
  • 举报
回复
[Quote=引用 34 楼 lactoferrin 的回复:]
复制文件不一定用的CopyFile
[/Quote]
我是在桌面ctrl+c 复制的
然后CreateFile响应了,CopyFile一直没响应
要是能响应就好了
我就可以记录下来
Lactoferrin 2011-05-06
  • 打赏
  • 举报
回复
复制文件不一定用的CopyFile
Lactoferrin 2011-05-06
  • 打赏
  • 举报
回复
复制文件一定用的CopyFile,CopyFile连进度条都没有
你SetWindowsHookEx应该只是用来注入dll,对tlntsvr.exe,svchost.exe无效的

我说的NtCreateFile是ntdll.dll中用户模式的stub
qq14923349 2011-05-06
  • 打赏
  • 举报
回复
NtCreateFile
这个是ring0层吗?
做这个不是要脱层皮?

我现在用detour挂ring3的CreateFile CopyFile
但是CopyFile不起作用
倒是复制的时候 CreateFile有通知 (基本所有操作CreateFile都有通知)

我是H_SHELL
::SetWindowsHookEx( WH_SHELL , MyShellProc ,(HINSTANCE)g_hInst, 0);

有点小郁闷
Lactoferrin 2011-05-06
  • 打赏
  • 举报
回复
vc6太老了,有些宏定义没有

你还是通过api hook监视对NtCreateFile,NtOpenFile,NtReadFile,NtWriteFile等的操作,不过比较麻烦
加载更多回复(27)
Wsyscheck是一款手动清理病毒木马的工具,其目的是简化病毒木马的识别与清理工作。 一般来说,对病毒体的判断主要可以采用查看路径,查看文件名,查看文件创建日期,查看文件厂商,微软文件校验,查看启动项等方法,Wsyschck在这些方面均尽量简化操作,提供相关的数据供您分析。 最终判断并清理木马取决际您个人的分析及对Wsyscheck基本功能的熟悉程度。 Wsyscheck基本功能简单介绍: 1:软件设置中的模块、服务简洁显示 简洁显示会过滤所微软文件,但在使用了“校验微软文件签名”功能后,通不过的微软文件也会显示出来。 SSDt右键“全部显示”是默认动作,当取消这个选项后,则仅显示SSDT表中已更改的项目。 2:关于Wsyscheck的颜色显示 进程页: 红色表示非微软进程,紫红色表示虽然进程是微软进程,但其模块中有非微软的文件。 服务页: 红色表示该服务不是微软服务,且该服务非.sys驱动。(最常见的是.exe与.dll的服务,木马大多使用这种方式)。 使用“检查键值”后,蓝色显示的是有键值保护的随系统启动的驱动程序。它们有可能是杀软的自我保护,也有可能是木马的键值保护。 在取消了“模块、服务简洁显示”后,查看第三方服务可以点击标题条”文件厂商”排序,结合使用“启动类型”、“修改日期”排序更容易观察到新增的木马服务。 进程页中查看模块与服务页中查看服务描述可以使用键盘的上下键控制。 在使用“软件设置”-“校验微软文件签名”后,紫红色显示未通过微软签名的文件。同时,在各显示栏的"微软文件校验"会显示Pass与no pass。(可以据此参考是否是假冒微软文件,注意的是如果紫红色显示过多,可能是你的系统是网上常见的Ghost精简版,这些版本可能精简掉了微软签名数据库所以结果并不可信) SSDT管理页: 默认显示全部的SSDT表,红色表示内核被HOOK的函数。查看第三方模块,可以点击两次标签“映像路径”排序,则第三方HOOK的模块会排在一起列在最前面。也可以取消“全部显示”,则仅显示入口改变了的函数。 SSDT页的“代码异常”栏如显示“YES”,表明该函数被Inline Hook。如果一个函数同时存在代码HOOK与地址HOOK,则对应的模块路径显示的是Inline Hook的路径,而使用“恢复当前函数代码”功能只恢复Inline Hook,路径将显示为地址HOOK的模块路径,再使用“恢复当前函数地址”功能就恢复到默认的函数了。 使用“恢复所有函数”功能则同时恢复上述两种HOOK。 发现木马修改了SSDT表时请先恢复SSDT,再作注册表删除等操作。 活动文件页: 红色显示的常规启动项的内容。 3:关于Wsyscheck启动后状态栏的提示“警告!程序驱动未加载成功,一些功能无法完成。” 多数情况下是安全软件阻止了Wsyscheck加载所需的驱动,这种情况下Wsyscheck的功能有一定减弱,但它仍能用不需要驱动的方法来完成对系统的修复。 驱动加载成功的情况下,对于木马文件可以直接使用Wsyscheck中各页中的删除文件功能,本功能带有“直接删除”运行中的文件的功能。 4:关于卸载模块 对HOOK了系统关键进程的模块卸载可能导致系统重启,这与该模块的写法有关系,所以卸载不了的模块不要强求卸载,可以先删除该模块的启动项或文件(驱动加载情况下使用删除后重启文件即消失)。 5:关于文件删除 驱动加载的情况下,Wsyscheck的删除功能已经够用了,大多数文件都可以立即删除(进程模块可以直接使用右键下带删除的各项功能),加载的DLL文件删除后虽然文件仍然可见,但事实上已删除,重启后该文件消失。 文件管理页的“删除”操作是删除文件到回收站,支持畸形目录下的文件删除。应注意的是如果文件本身在回收站内,请使用直接删除功能。或者使用剪切功能将它复制到另一个地方。否则你可能看到回收站内的文件删除了这个又添加了那个。 Wsyscheck的或“dos删除功能”需要单独下载Wsyscheck的附加模块文件WDosDel.dat,将此文件与Wsyscheck放在一起会显示出相关页面,添加待删除文件并重启,启动菜单中将出现“删除顽固文件”字样,选择后转入Dos删除文件。在某些机器上,若执行“dos删除”重启后系统报告文件损坏要修复(此时修复会造成文件系统的真正损坏),此时请不要修复而是立即关闭主机电源,重新开机。(这种情况是Dos删除所带的NTFS支持软件本身的BUG造成的,并不需要真正的修复,只需关闭电源重新开机即可。) “重启删除”与“Dos删除”可以同时使用。其列表都可以手动编辑,一行一个文件路径即可。关闭程序时如果上述两者之一存在删除列表,会问询是否执行。 注意,为避免病毒程序守护,Wsyscheck可以在删除某些文件时可能会采取0字节文件占位的方式来确保删除。这些0字节文件在Wsyscheck退出后会被自动清理。是否采用此方式依赖于“软件设置”下的“删除文件后锁定”选项是否勾选。 如果需要对删除的文件备份,先启用软件设置下的“删除文件前备份文件”,它将在删除前将文件备份到%SystemDrive%\VirusBackup目录中,且将文件名添加.vir后缀以免误执行。 6:关于进程的结束后的反复创建 如果确系木马文件,可选择结束进程并删除文件,这样的话Wsyscheck会将其结束并删除文件。但有时因为木马有关联进程未同时结束,会重新加载木马文件。这时我们可以选择“软件设置”下的“删除文件后锁定”。这时当结束进程并删除文件后Wsyscheck将创建0字节的锁定文件防止木马再生。 也可以使用进程页的“禁止程序运行”,这个功能就是流行的IFEO劫持功能,我们可以使用它来屏蔽一些结束后又自动重新启动的程序。通过禁用它的执行来清理文件。解除禁用的程序用“安全检查”页的“禁用程序管理”功能,所以在木马使用IFEO劫持后也可以“禁用程序管理”中恢复被劫持的程序。 软件设置下的“禁止进程与文件创建”功能是针对木马的反复启动,反复创建文件,反复写注册表启动项进行监视或阻止,使用本功能后能更清松地删除木马文件及注册表启动项。开启禁止“禁止进程与文件创建”后会自动添加“监控日志”页,取消后该页消失。可以观察一下日志情况以便从所阻止的动作中找到比较隐藏的木马文件。注意的是,如果木马插入系统进程,则反映的日志是阻止系统进程的动作,你需要自我分辨该动作是否有害并分析该进程的模块文件。 要保留日志请在取消前Ctrl+A全选后复制。注意,为防止日志过多,满1000条后自动删除前400条日志。 对于反复写注册表启动项无法修复的情况,可以先用“禁止进程与文件创建”找出覆写该注册表项的进程,针对木马插入的线程进行挂起,再修复注册表。 懒于查看分析,不想太麻烦的话,可以先删除文件(直接删除、重启删除),待重启之后再修复注册表。 8:关于批量处理 各页中可尝试用Ctrl,Shift多选再执行相关的功能。 文件搜索中的“保存文件列表”导出搜索结果列表1,在PE启动后再执行一次得到结果2,将结果1与结果2相比较,可以用来对付某些Wsyscheck检测不出深度隐藏的RootKit。 9:关于如何清理木马的简单方法: 1: 勾选“软件设置”下的“删除文件后锁定”以阻止文件再生。 2: 批量选择病毒进程,使用“结束进程并删除文件”。 3: 插入到进程中的模块多不可怕,全局钩子在各进程中通常都是相同的,处理进程的模块即可。建议采用“直接删除模块文件”,本功能执行后看不到变化,但文件其实已经删除。不建议使用“卸载模块”功能(为保险也可以与“重启删除”联用),原因是卸载系统进程中的模块时有可能造成系统重启而前功尽弃。 4: 执行“清理临时文件”、“清除Autorun.inf” 5:在安全检查中可以修复的修复一下。不强求,重启后再执行二次清理。 6: 重启机器,大部份的病毒应该可以搞定了。此时再次检查,发现还有少量的顽固病毒才使用“禁用”“线程”“卸载”“重启删除”“Dos删除”等方法。 7: 清理完后切换到文件搜索页,限制文件大小为50K左右,去除“排除微软文件的勾”搜索最近一周的新增的文件,从中选出病毒尸体文件删除。 10:Wsyscheck可以使用的参数说明: Wsyscheck可以带参数运行以提高自身的优先级 Wsyscheck 1 高于标准 Wsyscheck 2 高 Wsyscheck 3 实时 例如需要实时启动Wsyscheck,可以编辑一个批处理 RunWs.bat ,内容为 Wsyscheck 3 将RunWs.bat与Wsyscheck放在一起,双击RunWs.bat即可让Wsyscheck以实时优先级启动。 Wsyscheck -f wsyscheck将恢复部份查询类的SSdt表中的函数,然后退出。 Wsyscheck -s 在-f的基础上执行创建安全环境后退出。 如将Wsyscheck.exe更名,则Wsyscheck启动后先恢复执行部份查询类的SSdt表中的函数,其恢复结果可以在SSdt显示页下面的Auto Restore中看到。不更名则不带此功能。另外,更名后Wsyscheck将使用随机驱动名来释放驱动。 11:随手工具说明(指菜单工具下的子菜单功能) 一般看其意即识其意,仅对部份子项说明: 清除临时文件:删除%TEMP%,%windir%\Temp及%windir%\Downloaded Program Files下的所有文件。 禁用硬盘自动播放:本功能还包括磁盘无法双击打开故障。注意,某些故障修复后可能需要注销或重启才能生效。 修复安全模式:某些木马会破坏安全模式的键值导致无法进入安全模式,本功能先备份当前安全模式键值再恢复默认的安全模式键值。 如果Wsyscheck的窗口本身已采取随机字符,如果仍然被木马禁用,请将Wsyscheck改名后运行。 联系作者:Wang6071#sina.com.cn
Wsyscheck是一款手动清理病毒木马的工具,其目的是简化病毒木马的识别与清理工作。 一般来说,对病毒体的判断主要可以采用查看路径,查看文件名,查看文件创建日期,查看文件厂商,微软文件校验,查看启动项等方法,Wsyschck在这些方面均尽量简化操作,提供相关的数据供您分析。 最终判断并清理木马取决际您个人的分析及对Wsyscheck基本功能的熟悉程度。 Wsyscheck基本功能简单介绍: 1:软件设置中的模块、服务简洁显示 简洁显示会过滤所微软文件,但在使用了“校验微软文件签名”功能后,通不过的微软文件也会显示出来。 SSDt右键“全部显示”是默认动作,当取消这个选项后,则仅显示SSDT表中已更改的项目。 2:关于Wsyscheck的颜色显示 进程页: 红色表示非微软进程,紫红色表示虽然进程是微软进程,但其模块中有非微软的文件。 服务页: 红色表示该服务不是微软服务,且该服务非.sys驱动。(最常见的是.exe与.dll的服务,木马大多使用这种方式)。 使用“检查键值”后,蓝色显示的是有键值保护的随系统启动的驱动程序。它们有可能是杀软的自我保护,也有可能是木马的键值保护。 在取消了“模块、服务简洁显示”后,查看第三方服务可以点击标题条”文件厂商”排序,结合使用“启动类型”、“修改日期”排序更容易观察到新增的木马服务。 进程页中查看模块与服务页中查看服务描述可以使用键盘的上下键控制。 在使用“软件设置”-“校验微软文件签名”后,紫红色显示未通过微软签名的文件。同时,在各显示栏的"微软文件校验"会显示Pass与no pass。(可以据此参考是否是假冒微软文件,注意的是如果紫红色显示过多,可能是你的系统是网上常见的Ghost精简版,这些版本可能精简掉了微软签名数据库所以结果并不可信) SSDT管理页: 默认显示全部的SSDT表,红色表示内核被HOOK的函数。查看第三方模块,可以点击两次标签“映像路径”排序,则第三方HOOK的模块会排在一起列在最前面。也可以取消“全部显示”,则仅显示入口改变了的函数。 SSDT页的“代码异常”栏如显示“YES”,表明该函数被Inline Hook。如果一个函数同时存在代码HOOK与地址HOOK,则对应的模块路径显示的是Inline Hook的路径,而使用“恢复当前函数代码”功能只恢复Inline Hook,路径将显示为地址HOOK的模块路径,再使用“恢复当前函数地址”功能就恢复到默认的函数了。 使用“恢复所有函数”功能则同时恢复上述两种HOOK。 发现木马修改了SSDT表时请先恢复SSDT,再作注册表删除等操作。 活动文件页: 红色显示的常规启动项的内容。 3:关于Wsyscheck启动后状态栏的提示“警告!程序驱动未加载成功,一些功能无法完成。” 多数情况下是安全软件阻止了Wsyscheck加载所需的驱动,这种情况下Wsyscheck的功能有一定减弱,但它仍能用不需要驱动的方法来完成对系统的修复。 驱动加载成功的情况下,对于木马文件可以直接使用Wsyscheck中各页中的删除文件功能,本功能带有“直接删除”运行中的文件的功能。 4:关于卸载模块 对HOOK了系统关键进程的模块卸载可能导致系统重启,这与该模块的写法有关系,所以卸载不了的模块不要强求卸载,可以先删除该模块的启动项或文件(驱动加载情况下使用删除后重启文件即消失)。 5:关于文件删除 驱动加载的情况下,Wsyscheck的删除功能已经够用了,大多数文件都可以立即删除(进程模块可以直接使用右键下带删除的各项功能),加载的DLL文件删除后虽然文件仍然可见,但事实上已删除,重启后该文件消失。 文件管理页的“删除”操作是删除文件到回收站,支持畸形目录下的文件删除。应注意的是如果文件本身在回收站内,请使用直接删除功能。或者使用剪切功能将它复制到另一个地方。否则你可能看到回收站内的文件删除了这个又添加了那个。 Wsyscheck的或“dos删除功能”需要单独下载Wsyscheck的附加模块文件WDosDel.dat,将此文件与Wsyscheck放在一起会显示出相关页面,添加待删除文件并重启,启动菜单中将出现“删除顽固文件”字样,选择后转入Dos删除文件。在某些机器上,若执行“dos删除”重启后系统报告文件损坏要修复(此时修复会造成文件系统的真正损坏),此时请不要修复而是立即关闭主机电源,重新开机。(这种情况是Dos删除所带的NTFS支持软件本身的BUG造成的,并不需要真正的修复,只需关闭电源重新开机即可。) “重启删除”与“Dos删除”可以同时使用。其列表都可以手动编辑,一行一个文件路径即可。关闭程序时如果上述两者之一存在删除列表,会问询是否执行。 注意,为避免病毒程序守护,Wsyscheck可以在删除某些文件时可能会采取0字节文件占位的方式来确保删除。这些0字节文件在Wsyscheck退出后会被自动清理。是否采用此方式依赖于“软件设置”下的“删除文件后锁定”选项是否勾选。 如果需要对删除的文件备份,先启用软件设置下的“删除文件前备份文件”,它将在删除前将文件备份到%SystemDrive%\VirusBackup目录中,且将文件名添加.vir后缀以免误执行。 6:关于进程的结束后的反复创建 如果确系木马文件,可选择结束进程并删除文件,这样的话Wsyscheck会将其结束并删除文件。但有时因为木马有关联进程未同时结束,会重新加载木马文件。这时我们可以选择“软件设置”下的“删除文件后锁定”。这时当结束进程并删除文件后Wsyscheck将创建0字节的锁定文件防止木马再生。 也可以使用进程页的“禁止程序运行”,这个功能就是流行的IFEO劫持功能,我们可以使用它来屏蔽一些结束后又自动重新启动的程序。通过禁用它的执行来清理文件。解除禁用的程序用“安全检查”页的“禁用程序管理”功能,所以在木马使用IFEO劫持后也可以“禁用程序管理”中恢复被劫持的程序。 软件设置下的“禁止进程与文件创建”功能是针对木马的反复启动,反复创建文件,反复写注册表启动项进行监视或阻止,使用本功能后能更清松地删除木马文件及注册表启动项。开启禁止“禁止进程与文件创建”后会自动添加“监控日志”页,取消后该页消失。可以观察一下日志情况以便从所阻止的动作中找到比较隐藏的木马文件。注意的是,如果木马插入系统进程,则反映的日志是阻止系统进程的动作,你需要自我分辨该动作是否有害并分析该进程的模块文件。 要保留日志请在取消前Ctrl+A全选后复制。注意,为防止日志过多,满1000条后自动删除前400条日志。 对于反复写注册表启动项无法修复的情况,可以先用“禁止进程与文件创建”找出覆写该注册表项的进程,针对木马插入的线程进行挂起,再修复注册表。 懒于查看分析,不想太麻烦的话,可以先删除文件(直接删除、重启删除),待重启之后再修复注册表。 8:关于批量处理 各页中可尝试用Ctrl,Shift多选再执行相关的功能。 文件搜索中的“保存文件列表”导出搜索结果列表1,在PE启动后再执行一次得到结果2,将结果1与结果2相比较,可以用来对付某些Wsyscheck检测不出深度隐藏的RootKit。 9:关于如何清理木马的简单方法: 1: 勾选“软件设置”下的“删除文件后锁定”以阻止文件再生。 2: 批量选择病毒进程,使用“结束进程并删除文件”。 3: 插入到进程中的模块多不可怕,全局钩子在各进程中通常都是相同的,处理进程的模块即可。建议采用“直接删除模块文件”,本功能执行后看不到变化,但文件其实已经删除。不建议使用“卸载模块”功能(为保险也可以与“重启删除”联用),原因是卸载系统进程中的模块时有可能造成系统重启而前功尽弃。 4: 执行“清理临时文件”、“清除Autorun.inf” 5:在安全检查中可以修复的修复一下。不强求,重启后再执行二次清理。 6: 重启机器,大部份的病毒应该可以搞定了。此时再次检查,发现还有少量的顽固病毒才使用“禁用”“线程”“卸载”“重启删除”“Dos删除”等方法。 7: 清理完后切换到文件搜索页,限制文件大小为50K左右,去除“排除微软文件的勾”搜索最近一周的新增的文件,从中选出病毒尸体文件删除。 10:Wsyscheck可以使用的参数说明: Wsyscheck可以带参数运行以提高自身的优先级 Wsyscheck 1 高于标准 Wsyscheck 2 高 Wsyscheck 3 实时 例如需要实时启动Wsyscheck,可以编辑一个批处理 RunWs.bat ,内容为 Wsyscheck 3 将RunWs.bat与Wsyscheck放在一起,双击RunWs.bat即可让Wsyscheck以实时优先级启动。 Wsyscheck -f wsyscheck将恢复部份查询类的SSdt表中的函数,然后退出。 Wsyscheck -s 在-f的基础上执行创建安全环境后退出。 如将Wsyscheck.exe更名,则Wsyscheck启动后先恢复执行部份查询类的SSdt表中的函数,其恢复结果可以在SSdt显示页下面的Auto Restore中看到。不更名则不带此功能。另外,更名后Wsyscheck将使用随机驱动名来释放驱动。 11:随手工具说明(指菜单工具下的子菜单功能) 一般看其意即识其意,仅对部份子项说明: 清除临时文件:删除%TEMP%,%windir%\Temp及%windir%\Downloaded Program Files下的所有文件。 禁用硬盘自动播放:本功能还包括磁盘无法双击打开故障。注意,某些故障修复后可能需要注销或重启才能生效。 修复安全模式:某些木马会破坏安全模式的键值导致无法进入安全模式,本功能先备份当前安全模式键值再恢复默认的安全模式键值。 如果Wsyscheck的窗口本身已采取随机字符,如果仍然被木马禁用,请将Wsyscheck改名后运行。 Wangsea 20071222 Wang6071@sina.com.cn http://wangsea.ys168.com
Wsyscheck是一款手动清理病毒木马的工具,其目的是简化病毒木马的识别与清理工作。 一般来说,对病毒体的判断主要可以采用查看路径,查看文件名,查看文件创建日期,查看文件厂商,微软文件校验,查看启动项等方法,Wsyschck在这些方面均尽量简化操作,提供相关的数据供您分析。 Wsyscheck基本功能简单介绍: 1:软件设置中的模块、服务简洁显示 简洁显示会过滤所微软文件,但在使用了“校验微软文件签名”功能后,通不过的微软文件也会显示出来。 SSDt右键“全部显示”是默认动作,当取消这个选项后,则仅显示SSDT表中已更改的项目。 2:关于Wsyscheck的颜色显示 进程页: 红色表示非微软进程,紫红色表示虽然进程是微软进程,但其模块中有非微软的文件。 服务页: 红色表示该服务不是微软服务,且该服务非.sys驱动。(最常见的是.exe与.dll的服务,木马大多使用这种方式)。 使用“检查键值”后,蓝色显示的是有键值保护的随系统启动的驱动程序。它们有可能是杀软的自我保护,也有可能是木马的键值保护。 在取消了“模块、服务简洁显示”后,查看第三方服务可以点击标题条”文件厂商”排序,结合使用“启动类型”、“修改日期”排序更容易观察到新增的木马服务。 进程页中查看模块与服务页中查看服务描述可以使用键盘的上下键控制。 在使用“软件设置”-“校验微软文件签名”后,紫红色显示未通过微软签名的文件。同时,在各显示栏的"微软文件校验"会显示Pass与no pass。(可以据此参考是否是假冒微软文件,注意的是如果紫红色显示过多,可能是你的系统是网上常见的Ghost精简版,这些版本可能精简掉了微软签名数据库所以结果并不可信) SSDT管理页: 默认显示全部的SSDT表,红色表示内核被HOOK的函数。查看第三方模块,可以点击两次标签“映像路径”排序,则第三方HOOK的模块会排在一起列在最前面。也可以取消“全部显示”,则仅显示入口改变了的函数。 SSDT页的“代码异常”栏如显示“YES”,表明该函数被Inline Hook。如果一个函数同时存在代码HOOK与地址HOOK,则对应的模块路径显示的是Inline Hook的路径,而使用“恢复当前函数代码”功能只恢复Inline Hook,路径将显示为地址HOOK的模块路径,再使用“恢复当前函数地址”功能就恢复到默认的函数了。 使用“恢复所有函数”功能则同时恢复上述两种HOOK。 发现木马修改了SSDT表时请先恢复SSDT,再作注册表删除等操作。 活动文件页: 红色显示的常规启动项的内容。 3:关于Wsyscheck启动后状态栏的提示“警告!程序驱动未加载成功,一些功能无法完成。” 多数情况下是安全软件阻止了Wsyscheck加载所需的驱动,这种情况下Wsyscheck的功能有一定减弱,但它仍能用不需要驱动的方法来完成对系统的修复。 驱动加载成功的情况下,对于木马文件可以直接使用Wsyscheck中各页中的删除文件功能,本功能带有“直接删除”运行中的文件的功能。 4:关于卸载模块 对HOOK了系统关键进程的模块卸载可能导致系统重启,这与该模块的写法有关系,所以卸载不了的模块不要强求卸载,可以先删除该模块的启动项或文件(驱动加载情况下使用删除后重启文件即消失)。 5:关于文件删除 驱动加载的情况下,Wsyscheck的删除功能已经够用了,大多数文件都可以立即删除(进程模块可以直接使用右键下带删除的各项功能),加载的DLL文件删除后虽然文件仍然可见,但事实上已删除,重启后该文件消失。 文件管理页的“删除”操作是删除文件到回收站,支持畸形目录下的文件删除。应注意的是如果文件本身在回收站内,请使用直接删除功能。或者使用剪切功能将它复制到另一个地方。否则你可能看到回收站内的文件删除了这个又添加了那个。 Wsyscheck的或“dos删除功能”需要单独下载Wsyscheck的附加模块文件WDosDel.dat,将此文件与Wsyscheck放在一起会显示出相关页面,添加待删除文件并重启,启动菜单中将出现“删除顽固文件”字样,选择后转入Dos删除文件。在某些机器上,若执行“dos删除”重启后系统报告文件损坏要修复(此时修复会造成文件系统的真正损坏),此时请不要修复而是立即关闭主机电源,重新开机。(这种情况是Dos删除所带的NTFS支持软件本身的BUG造成的,并不需要真正的修复,只需关闭电源重新开机即可。) “重启删除”与“Dos删除”可以同时使用。其列表都可以手动编辑,一行一个文件路径即可。关闭程序时如果上述两者之一存在删除列表,会问询是否执行。 注意,为避免

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧