沉思の自习室

精神的最高境界是自由!

本站所有资料仅供学习使用!请勿复制、转贴和传播!!! 资料已使用 xiesir'student 密码加密!

 

在命令行方式下关闭进程

一、tskill命令的使用最为简单,C:>tskill

TSKILL processid | processname [/SERVER:servername] [/ID:sessionid | /A] [/V]

  processid           要结束的进程的 Process ID。
  processname         要结束的进程名称。
  /SERVER:servername  含有 processID 的服务器(默认值是当前值)。
                         使用进程名和 /SERVER 时,必须指定
                         /ID 或 /A
  /ID:sessionid       结束在指定会话下运行的进程。
  /A                  结束在所有会话下运行的进程。
  /V                  显示正在执行的操作的信息。

二、taskkill命令主要的好处是带很多筛选器,可以批量结束进程

TASKKILL [/S system [/U username [/P [password]]]]
         { [/FI filter] [/PID processid | /IM imagename] } [/T] [/F]

描述:
    使用该工具按照进程 ID (PID) 或映像名称终止任务。

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

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

    /P    [password]       为提供的用户上下文指定密码。如果忽略,提示
                           输入。

    /FI   filter           应用筛选器以选择一组任务。
                           允许使用 "*"。例如,映像名称 eq acme*

    /PID  processid        指定要终止的进程的 PID。
                           使用 TaskList 取得 PID。

    /IM   imagename        指定要终止的进程的映像名称。通配符 '*'可用来
                           指定所有任务或映像名称。

    /T                     终止指定的进程和由它启用的子进程。

    /F                     指定强制终止进程。

    /?                     显示帮助消息。

筛选器:
    筛选器名      有效运算符                有效值
    -----------   ---------------           -------------------------
    STATUS        eq, ne                    RUNNING |
                                            NOT RESPONDING | UNKNOWN
    IMAGENAME     eq, ne                    映像名称
    PID           eq, ne, gt, lt, ge, le    PID 值
    SESSION       eq, ne, gt, lt, ge, le    会话编号。
    CPUTIME       eq, ne, gt, lt, ge, le    CPU 时间,格式为
                                            hh:mm:ss。
                                            hh - 时,
                                            mm - 分,ss - 秒
    MEMUSAGE      eq, ne, gt, lt, ge, le    内存使用量,单位为 KB
    USERNAME      eq, ne                    用户名,格式为 [domain\]user
    MODULES       eq, ne                    DLL 名称
    SERVICES      eq, ne                    服务名称
    WINDOWTITLE   eq, ne                    窗口标题

    说明
    ----
    1) 只有在应用筛选器的情况下,/IM 切换才能使用通配符 '*'。
    2) 远程进程总是要强行 (/F) 终止。
    3) 当指定远程机器时,不支持 "WINDOWTITLE" 和 "STATUS" 筛选器。

例如:
    TASKKILL /IM notepad.exe
    TASKKILL /PID 1230 /PID 1241 /PID 1253 /T
    TASKKILL /F /IM cmd.exe /T
    TASKKILL /F /FI "PID ge 1000" /FI "WINDOWTITLE ne untitle*"
    TASKKILL /F /FI "USERNAME eq NT AUTHORITY\SYSTEM" /IM notepad.exe
    TASKKILL /S system /U domain\username /FI "USERNAME ne NT*" /IM *
    TASKKILL /S system /U username /P password /FI "IMAGENAME eq note*"

三、有一些高等级的进程,tskill和taskkill或许无法结束,那么我们还有一个更强大的工具,那就是系统debug级的ntsd.准确的说,ntsd是一个系统调试工具,只提供给系统开发级的管理员使用,但是对我们杀掉进程还是很爽的.基本上除了WINDOWS系统自己的管理进程,ntsd都可以杀掉.
①ntsd命令介绍

c:\>ntsd -c q -p PID

只有System、SMSS.EXE和CSRSS.EXE不能杀。

前两个是纯内核态的,最后那个是Win32子系统,ntsd本身需要它。ntsd从2000开始就是系统自带的用户态调试工具。被调试器附着 (attach)的进程会随调试器一起退出,所以可以用来在命令行下终止进程。使用ntsd自动就获得了debug权限,从而能杀掉大部分的进程。 ntsd会新开一个调试窗口,本来在纯命令行下无法控制,但如果只是简单的命令,比如退出(q),用-c参数从命令行传递就行了。NtsdNtsd 按照惯例也向软件开发人员提供。只有系统开发人员使用此命令。

    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[#] <address>设置断点BC[<bp>]清除一个或多个断点BD[<bp>]禁用一个或多个断点 BE[<bp>]启用一个或多个断点BL[<bp>]列出一个或多个断点
    个人意见,有一个非常重要的参数就是-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,那么你就可以干掉进程.

    合理的使用上面的指令,你就可以用命令行,找到计算机上是什么程序在疯狂发包,然后杀掉它们.当然,如果你要彻底的清除它们,还必须删除这些程序,并在启动项中干掉它们.

posted on 2009-08-23 11:03  XieSir  阅读(1719)  评论(0编辑  收藏  举报

导航

本站采用CC授权如需转载、引用文章,请务必附上作者及来源处。 Creative Commons License