命令示例:ntsd -cq -p 4 (结束进程,当然进程不能被杀死)
例子详解:pid是4,但是如何获取进程的pid呢? CMD下输入即可获取当前任务管理器中所有进程的PID。 或者打开任务管理器,在菜单栏中选择“查看”——“选择列”,在打开的选择窗口中勾选“PID(进程标识符)”项,这样任务管理器的进程就会有一个更多PID项目。 (PID的分配不是固定的,是进程启动时系统随机分配的,所以每次进程启动时一般不会一样。)
可以使用以下批处理过程:
===================================================
rem 将以下内容复制到记事本并另存为pid.bat
@回声关闭
模式 con 列=30 行=5
颜色1e
回声。
set /pt=请输入进程名称:
/fo csv>2.txt
查找“%t%”2.txt>1.txt
对于 (1.txt) 中的 /f "=, =2" %%i 执行设置 a=%%i
ntsd -cq -p %a%
回显 PID 名称
回声============
回显%a%%T%
删除1.txt
删除2.txt
暂停 >nul
出口
===================================================
使用进程名称结束进程
命令格式:ntsd -cq -pn ***.exe(***.exe为进程名,exe不能省略)
命令示例:ntsd -cq -pn .exe
其他可以结束进程的 DOS 命令包括 和 命令:
命令格式:/pid 1234 /f (也可以达到同样的效果)
[编辑本段]Ntsd详解
有一些高级进程可能无法终止,因此我们有一个更强大的工具,那就是系统调试级的ntsd。 准确的说,ntsd是一个系统调试工具,只提供给系统开发级管理员使用,但是对于我们杀进程来说还是很爽的。 基本上除了系统自身的管理进程之外,ntsd可以杀掉所有的东西。 NTSD 调试器要求用户在启动时指定要连接的进程。 使用 TLIST 或者您可以获取现有进程的进程 ID,然后键入 NTSD -p pid 来调试该进程。 NTSD 命令行使用以下语法:
NTSD[]
其中是要调试的图像的名称。
用法:ntsd [-?] [-2] [-d] [-g] [-G] [-myob] [-lines] [-n] [-o] [-s] [-v] [- w ]
[-r] [-t]
[-hd] [-pd] [-pe] [-pt #] [-pv] [-x | -x{e|d|n|i} ]
[-- | -p PID | -pn 名称 | 线 | -z]
[-zp] [-] [-robp]
[-] [-c ""] [-i ] [-y ]
[-#] [-] [-QR \\] [-唤醒]
[- :=名称,] [- :]
[-ses] [-sfce] [-sicv] [-snul] [-noio] [-] [-]
在哪里: -? 这个帮助文本
-line 是在以下运行
-- 与 -G -g -o -p -1 -d -pd 相同
- 设置DLL
-c 的
- 的行数
- 并且加载失败
-d 将所有内容发送到 via
-d 与
-d 只能在以下情况下使用
-杜松子酒
-G 最终于
-hd 不使用调试堆
为了 。 这仅适用于 .
-o 全部由
-p pid 的 ID
-pd 表示
-pe 任何一个调试端口
-pn name 收件人的姓名
-pt # 的
-pv 任何一个
-r 在 () 上中断的 (0-3) 错误级别
-robp 设置为只读
-t 将 (0-3) 错误级别设置为 ()
-w 在 VDM 中调试 16 位
-x 在 AV 上设置中断
-x{e|d|n|i} 设置事件的中断
-2 为
-i 那个的
错误(参见_PATH)
-lines 该行被使用,如果
.DLL 中的 -myob
-n 来自
-noio 所有 I/O
- 贝壳 (!!)
-QR 为
-s 懒惰
-ses
-sfce 失败文件
-sicv CV 时
-snul 用于名称
- 路径
-v 来自
-wake 唤醒 a 并退出
-y 路径(参见)
-z 要调试的故障转储文件的名称
-zp page.dmp 文件的名称
与故障转储一起使用
- 让你与 -
必须是第一个如果
: TCP | 管道 | SSL | 导管| 1394 | 1394 com
name:调试的名称
: 所在端口的 id
对于 TCP 使用:端口=
对于 npipe 使用:pipe=
供 1394 使用:=
对于 com 使用:端口=,波特=,
=
对于 ssl 和 spip,请参阅
: ... - npipe:=,pipe=
- 另一个可以
必须是第一个如果
: TCP | 管道 | SSL | 导管| 1394 | 1394 com
:用户可以访问的端口id
对于 TCP 使用:端口=
对于 npipe 使用:pipe=
供 1394 使用:=
对于 com 使用:端口=,波特=,
=
对于 ssl 和 spip,请参阅
: ... - npipe:pipe=
- 到 到
给出为
:
=[驱动器:][路径]
图像路径。
=[驱动器:][路径]
图像路径。
=[驱动器:][路径]
dll 的第一个路径
_PATH=[驱动器:][路径]
图像路径。
=[驱动器:][路径]
文件路径。
笔=
如果 ,则全部从 0 开始到该文件。
附加=
如果 ,全部都会到这个文件。
ZE=尺寸
a 的大小
按键:
辞职
闯入
强制闯入(与 Ctrl-C 相同)
调试
模式
打印
ntsd: - 按回车键 ---
选项:
-2 打开新窗口用于调试字符模式应用程序
-d 将输出重定向到调试终端 -g 使执行自动通过第一个断点
-G 导致 NTSD 在子例程终止时立即退出 o 启用多个进程的调试,默认为调试器生成一个进程
-p 指定调试由进程ID标识的进程
-v 产生详细输出。
例如,假设 .exe 的进程 ID 为 104。键入命令“NTSD -p 104”将 NTSD 调试器附加到该进程 (IIS)。 您还可以使用 NTSD 启动新进程进行调试。 例如,NTSD .exe 将启动一个新的 .exe 进程并与其建立连接。 连接到进程后,您可以使用各种命令来查看堆栈、设置断点、转储内存等。
命令含义~显示所有线程的列表 KB 显示当前线程的堆栈跟踪~*KB 显示所有线程的堆栈跟踪 R 显示当前
帧寄存器输出 U 反汇编代码并显示程序名称和偏移量 D[type][<range>] 转储内存 BP 设置断点 BC[] 清除一个或多个断点 BD[] 禁用一个或多个断点 Click BE[< bp>] 启用一个或多个断点 BL[] 列出一个或多个断点。
个人认为,一个非常重要的参数就是-v参数,通过它我们可以查出某个进程附加了哪些连接库文件。 有很多病毒、木马或者恶意软件喜欢把自己做成动态库,然后注册到系统中正常程序的加载库列表中来隐藏自己。
首先,我们需要设置ntsd的输出重定向。 最好将其重定向到文本文件,以方便我们分析和研究。
c:\>设置 PPEND=c:\pdw.txt
请注意,虽然输出被重定向,但我们的输出仍然会继续显示在屏幕上,并且会进入调试模式。 我们可以通过使用-cq参数来避免这个问题。
c:\>ntsd -cq -v .exe
现在在我们的pdw.txt文件中,可以看到.exe文件的调试信息。
可以知道,ntsd的软件终止能力非常好,也很强大。 一些无法终止的软件(例如.exe或木马)可以使用ntsd轻松终止
但它仍然有缺点,因为技术在不断更新,在处理最新的病毒和其他防护能力较强的程序时,
,还是建议使用其他专业工具。 你可以尝试ntsd搞定360,nod32等杀毒程序都没有解决办法。