ntsd.exe

    ntsd.exe 是从Windows 2000开始就是系统自带的进程调试工具,在system32目录下。ntsd的功能非常的强大,用法也比较复杂。

    本文主要介绍用ntsd来结束进程,也说明使用ntsd调试程序的简单用法。
    被调试器附着(attach)的进程会随调试器一起退出,所以可以用来在命令行下终止进程。使用ntsd自动就获得了debug权限,从而能杀掉大部分的进程(理论上只有System、SMSS.EXE和CSRSS.EXE三个进程不能结束,前两个是纯内核态的,最后那个是Win32子系统,ntsd本身需要它)。

    结束进程
    ntsd -c q -p PID 或者
    ntsd -c q pn ImageName
    -c是表示执行debug命令,
    q表示执行结束后退出(quit),
    -p 表示后面紧跟着是你要结束的进程对应的PID,
    -pn 表示后面紧跟着是你要结束的进程名(process_name.exe 比如:QQ.exe,explorer.exe 等等,值得注意的是后缀名.exe是不可省略的,否则系统会告诉你“不支持此接口”)。
    查看pid及进程名,我们可以在任务管理器看,在特殊情况下,也可以使用tasklist命令。

    比如我们要结束pid为3212的进程maxthon.exe 那么我们可以在命令提示符中输入:
    ntsd -c q -p 3212 或
    ntsd -c q -pn maxthon.exe。

    调试程序
    ntsd调试程序在启动时要求用户指定一个要连接的进程。ntsd 命令行使用如下的句法:
  ntsd [options] imagefile
  其中,imagefile 是要调试的映像名称。  
    option:
  -2,打开一个用于调试字符模式的应用程序的新窗口
  -d,将输出重定向到调试终端-g 使执行自动通过第一个断点
  -G,使 NTSD 在子程序终止时立即退出o启用多个进程的调试,默认值为由调试程序衍生的一个进程
  -p,指定调试由进程 ID 标识的进程
  -v,产生详细的输出。

  例如,假设 inetinfo.exe 的进程 ID 为 104。
    键入命令“ntsd -p 104”将 NTSD 调试程序连接到 inetinfo 进程 (IIS)。
    也可使用 ntsd 启动一个新进程来进行调试。
    例如,ntsd notepad.exe 将启动一个新的 notepad.exe 进程,并与它建立连接。
    一旦连接到某个进程,您就可以用各种命令来查看堆栈、设置断点、转储内存,等等。 如:
    ~,显示所有线程的一个列表;
    KB,显示当前线程的堆栈轨迹;
    ~*KB,显示所有线程的堆栈轨迹
    R,显示当前帧的寄存器输出
    U,反汇编代码并显示过程名和偏移量
    D[type][< range>],转储内存BP设置断点
    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信息请参考其帮助。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值