ntsd命令是windows系统中的一个调试工具,据说可以杀掉除System、SMSS.EXE和CSRSS.EXE三个进程以外的任何进程,因此病
毒十分青睐这个命令,我在一个被病毒实施了映像劫持的注册表中,发现ntsd -d 命令的使用次数多达150次以上!那些被实施映像劫持的程序,与
ntst -d 扯上关系后,就不能正常运行了!表现为,打开一个程序时,无任何反映。
在网上查一下,介绍ntsd命令的文章和帖子还真不少,但是内容雷同,缺乏新意!
我试验了一下,发现这个命令的确比taskmgr任务管理器强大许多,一些用任务管理器不能终止的进程可以用ntsd -c q -p pid 命令终止,比taskkill命令也要稍微厉害一点,但是远不及网上介绍的那么神奇!
试验方法:
先运行CMD命令,进入命令行窗口;
输入tasklist命令并回车,列出系统全部进程和每个进程的PID;
输入以下命令(假设要杀掉PID为1580的进程,就是ntst自己的进程):
ntsd -c q -p 1580
回车,ntsd命令的窗口就被关闭了,说明命令成功执行。
注意两个 - 号前各有一个空格,p后面有一个空格。
如果执行命令成功,不会有任何提示,可以再次运行tasklist命令确认一下;
如果执行命令失败,会单独跳出ntsd命令的窗口,下图右下角所示为ntsd的窗口(按回车键退出)。
但是,有些进程被终止后,会改一个PID号重新出现。
如上图所示,其中的rundll32.exe有两个,下面一个(PID号为2626的进程)就是被我用ntsd -c q -p
1604命令成功结束进程后重新出现的(1604是使用ntsd命令之前的PID号)。这是IPGuard监控软件的进程,使用其他方式不能杀掉(包括
taskkill /pid 1604命令)。
(注:每个进程都有一个独立的pid号,没有重复,是由系统随机分配的,每次启动系统pid号都不同)
要知道,许多病毒也具备这种能力,进程被杀掉后会立即重新出现。这说明ntsd命令还是有一定的局限性。
如果说上面的例子不足以对ntsd命令的威力提出质疑,那么,接下来的试验就最能说明问题了。
如上图所示,假设要杀掉RavMon.exe进程,注意它的PID号为3208,运行以下命令:
ntsd -c q -p 3208
结果弹出上图右下角所示的窗口,有出错提示:Cannot debug pid 3208…… 。
要知道,RavMon.exe并非系统关键进程,只是一个常用应用程序的进程。
ntsd命令的功能并不止这些,使用方法不同于一般的DOS命令,当然,我们也不能单凭以上试验结果给NTSD他老人家脸上抹黑!
由于映像劫持病毒对ntsd虎视眈眈,利用它帮自己干坏事,让大量的应用程序都不能正常运行,因此,为了让system32目录下的ntsd.exe程序
不再多管闲事,把它的后缀 .exe 改为 .xyz 等字符,它就不会再理会系统中的任何事情了。如果需要再次请他出山,只需把后缀改回 .exe
即可 。
改动ntsd.exe后缀之后,如果系统中了映像劫持病毒会有出错提示。比如打开杀毒软件时,提示找不到那个杀软程序(即使那个被劫持的程序摆在眼前,系统也是视而不见,要你搜索),删除注册表中的Image File Execution Options键项就可以解除映像劫持,让系统恢复正常!