注册 | 登录 忘记密码? 51cto首页 | 博客 | 论坛 | 招聘
热点文章 腾讯技术类笔试题
 帮助

系统自带的一些好东西


2008-04-15 15:24:37
 标签:taskkill ntsd tasklist   [推送到技术圈]

你们碰到一些木马,病毒,需要查看一些进程和需要删除它,是不是用到一些工具呢!?下面我来介绍一下不需要工具, windows下自带的东西.Windows XP中使用“Ctrl+Alt+Del”组合键,进入“Windows 任务管理器,在进程选项卡中可以查看本机完整的进程列表,而且可以通过手工定制进程列表的方式获得更多 的进程信息,如会话ID、用户名等,但遗憾的是,我们查看不到这些进程到底提供了哪些系统服务。其实,在Windows XP中新增的一个命令行工具“Tasklist.exe”就能实现上面的功能。
 Tasklist命令用来显示运行在本地或远程计算机上的所有进程,带有多个执行参数。使用格式:
 Tasklist/S system/U username/Ppassword]]]]/Mmodule| /SVC | /V][/FI filter/FO format][/NH参数含义:
/S   ystem 指定连接到的远程系统。
  /Uomain\user 指定使用哪个用户执行这个命令。
  /Ppassword]为指定的用户指定密码。
  /Mmodule]列出调用指定的 DLL 模块的所有进程。如果没有指定模块名,显示每个进程加载的所有模块。
  /SVC  显示每个进程中的服务。
  /V   显示详细信息。
  /FI  filter  显示一系列符合筛选器指定的进程。
  /FO  format  指定输出格式,有效值:TABLELISTCSV
  /NH  指定输出中不显示栏目标题。只对 TABLECSV格式有效。
  下面我们来看看Tasklist命令的应用实例。
1.查看本机进程
  在命令提示符中输入Tasklist命令即可显示本机的所有进程(图1)。本机的显示结果由5部分组成:图像名(进程名)、PID、会话名、会话#和内存使用。
2.查看远程系统的进程
 在命令提示符下输入“Tasklist  /s  218.22.123.26 /u jtdd  /p  12345678”(不包括引号)即可查看到IP地址为218.22.123.26的远程系统的进程(图2)。其中/s参数后的“218.22.123.26”指要查看的远程系统的IP地址,/u后的“jtdd”Tasklist命令使用的用户账号,它必须是远程系统上的一个合法账号,/p后的“12345678”jtdd账号的密码。
3.查看系统进程提供的服务
  Tasklist命令不但可以查看系统进程,而且还可以查看每个进程提供的服务。如查看本机进程SVCHOST.EXE提供的服务,在命令提示符下输入“Tasklist  /svc”命令即可(图3)。你会惊奇地发现,有4SVCHOST.EXE进程,而总共有二十几项服务使用这个进程。
  对于远程系统来说,查看系统服务也很简单,使用“Tasklist  /s  218.22.123.26  /u  jtdd  /p  12345678  /svc”命令,就可以查看IP地址为218.22.123.26的远程系统进程所提供的服务。
4.查看调用DLL模块文件的进程列表
 要查看本地系统中哪些进程调用了shell32.dll模块文件,只须在命令提示符下输入“Tasklist  /m  shell32.dll”即可显示这些进程的列表。
5.使用筛选器查找指定的进程
 在命令提示符下输入“TASKLIST /FI ″USERNAME ne NT AUTHORITY\SYSTEM″ /FI ″STATUS eq running”,就可以列出系统中正在运行的非SYSTEM状态的所有进程。其中“/FI”为筛选器参数,“ne”“eq”为关系运算符不相等相等
 注意:使用Tasklist命令查看远程系统的进程时,需要远程机器的RPC 服务的支持,否则,该命令不能正常使用
使用Tasklist列出所有正在运行的进程,需要配合下面的工具Taskkill来杀死可疑的进程(病毒或者木马程序)。

    TASKKILL [/S system [/U username [/P [password]]]] 

{ [/FI filter] [/PID processid | /IM imagename] } [/F] [/T]
描述
    这个命令行工具可用来结束至少一个进程。
 

    参数列表
:
        /S    system            
指定要连接到的远程系统。


        /U    [domain\]user     
指定应该在哪个用户上下文执行这个命令。

        /P   [password]   
为提供的用户上下文指定密码。                           
        /F                     
指定要强行终止进程。

        /PID  process id        
指定要终止的进程的PID

        /T Tree kill:            
终止指定的进程和任何由此启动的子进程。

使用该命令可以同时结束多个进程,使用TasklistTaskkill配合使用,提供了比图形界面下更强的功能,可以列出svchosts下挂载的进程列表,(有病毒或者木马是挂在svchots下运行的,不过需要高超的技术,这样就会在图形界面的任务管理器里面实现隐身。具有很大的欺骗性。在对付关联进程型的病毒或者木马方面也是技高一筹,因为任务管理器不能同时结束两个进程,而手工结束的时候怎么也赶不上病毒关联进程产生的快。另外一个在图形界面下的进程管理器ICESWORD也可以同时结束多个进程,但是还是被最新的MSN病毒所封杀,DOS下面的这两个工具虽然使用不便,但是可以提供在图形界面不能使用时很好的替代品,并且可以远程连接到别的机器上去,检查和结束远程设备上的服务或进程。对于不能停机或者重新开机的网络服务主机来说,这个办法是非常好用的对于新病毒或者木马的手动清除工具。
具体使用方法是,用tasklist列出进程列表,使用taskkill /pid  ** /pid ** /t方式同时杀掉多个进程,然后再进行其他的操作来排除病毒或者木马。
ntsd的用法!
ntsd 是一条dos命令,功能是用于结束一些常规下结束不了的死进程。
用法为打开cmd 后输入以下命令就可以结束进程:
方法一:利用进程的PID结束进程
命令格式:ntsd -c q -p pid
命令范例: ntsd -c q -p 1332 (结束explorer.exe进程)
范例详解:explorer.exepid1332,但是如何获取进程的pid呢?在CMD下输入TASKLIST就可以获取当前任务管理器所有进程的PID
方法二:利用进程名结束进程
命令格式:ntsd -c q -pn ***.exe ***.exe 为进程名,exe不能省)
命令范例:ntsd -c q -pn explorer.exe
另外的能结束进程的DOS命令还有taskkill
命令格式: taskkill /pid 1234 /f ( 也可以达到同样的效果。)
如果上面这些还不能满足您的求知欲,下面还有:

ntsd详解

有一些高等级的进程,tskilltaskkill或许无法结束,那么我们还有一个更强大的工具,那就是系统debug级的ntsd.准确的说,ntsd是一个系统调试工具,只提供给系统开发级的管理员使用,但是对我们杀掉进程还是很爽的.基本上除了WINDOWS系统自己的管理进程,ntsd都可以杀掉.当然咯,有些rootkit级别的超级木马,还是无能为力,幸好这种牛牛级别的木马还是很少的.NTSD 调试程序在启动时要求用户指定一个要连接的进程。使用 TLIST PVIEWER,您可以获得某个现有进程的进程 ID,然后键入 NTSD -p pid 来调试这个进程。NTSD 命令行使用如下的句法:
NTSD [options] imagefile
其中,imagefile 是要调试的映像名称,options 是下面选项之一:
选项说明-2打开一个用于调试字符模式的应用程序的新窗口-d将输出重定向到调试终端-g 使执行自动通
过第一个断点-G使 NTSD 在子程序终止时立即退出o启用多个进程的调试,默认值为由调试程序衍生的一
个进程-p指定调试由进程 ID 标识的进程-v产生详细的输出
例如,假设 inetinfo.exe 的进程 ID 104。键入以下命令将 NTSD 调试程序连接到 inetinfo 进程 (IIS)NTSD -p 104
也可使用 NTSD 启动一个新进程来进行调试。例如NTSD notepad.exe 将启动一个新的 notepad.exe 进程,并与它建立连接。
一旦连接到某个进程,您就可以用各种命令来查看堆栈、设置断点、转储内存,等等。
命令含义~显示所有线程的一个列表KB 显示当前线程的堆栈轨迹~*KB显示所有线程的堆栈轨迹R显示当前
帧的寄存器输出U反汇编代码并显示过程名和偏移量D[type][< range>]转储内存BP[#] 无涯教程
:http://www.wuyapc.com
设置断点BC[]清除一个或多个断点BD[]禁用一个或多个断点BE[< bp>]启用一个或多个断点BL[]列出一个或多个断点
个人意见,有一个非常重要的参数就是-v参数,我们可以通过它发现一个进程下面挂接了哪些连接库文件.
有很多病毒,木马,或者恶意软件,都喜欢把自己做成动态库,然后注册到系统正常程序的加载库列表中,达到隐藏自己的目的.
首先我们需要设置一下ntsd的输出重定向,最好是重定向到一个文本文件,方便我们分析研究.
c:\>set _NT_DEBUG_LOG_FILE_APPEND=c:\pdw.txt
注意,虽然输出重定向了,但是我们的输出依然会继续显示在屏幕上,而且会进入到debug模式,我们使用-c q参数,就可以避免这个问题.
c:\>ntsd -c q -v notepad.exe
现在我们的pdw.txt文件中,就可以看见notepad.exe文件的调试信息.
ntsd
使用以下参数杀死进程.
c:\>ntsd -c q -p PID
只要你能提供进程的PID,那么你就可以干掉进程.
ntsd -c q -p PID
-c:执行后面的debug命令。q:debug命令-退出。-p:指定被调试的线程ID
PID:
线程ID
只有SystemSMSS.EXECSRSS.EXE不能杀。前两个是纯内核态的,最后那个是Win32子系统,ntsd本身需要它。ntsd2000开始就是系统自带的用户态调试工具。被调试器附着(attach)的进程会随调试器一起退出,所以可以用来在命令行下终止进程。使用ntsd自动就获得了debug权限,从而能杀掉大部分的进程。ntsd会新开一个调试窗口,本来在纯命令行下无法控制,但如果只是简单的命令,比如退出(q),用-c参数从命令行传递就行了。ntsd按照惯例也向软件开发人员提供。只有系统开发人员使用此命令。有关详细信息,请参阅 NTSD中所附的帮助文件。
注:某些系统进程被ntsd结束后会自动退出系统,请小心使用。
 




    文章评论
 
2008-04-15 15:45:43
学习了。。

2008-04-16 21:05:33
谢谢了!~学习了

2008-07-08 23:16:21
很深入研究呀``博主.强!!

 

发表评论

昵   称:
验证码:  点击图片可刷新验证码  博客过2级,无需填写验证码
内   容: