DLL无法删除的步骤

DLL文件无法删除如a.dll (注:任务管理器:命令taskmgr或者taskmg.exe或者ctrl+alt+del)
1. tasklist /m>e:\1.txt //查找出a.dll对应的进程KuGou.exe及其pid.如1234
(1-1). taskkill /pid 1234 /f //
taskkill /im KuGou.exe /f //f参数是强制之意
(1-2). ntsd -c q -p 1234 //
ntsd -c q -pn ***.exe //***.exe 为进程名,exe不能省
//(其中-c 是表示执行debug(调试) 命令,
q 表示执行结束后退出(quit 啦,哈),
-pn 表示后面紧跟着是你 要结束的进程名称,而
-p表示后面紧跟着是你 要结束的进程PID
//由于调试器关闭之后,它打开的进程会随调试器一起退出,因此ntsd命令能够关闭进程

2. tasklist /svc>e:\2.txt //查找出a.dll对应的服务名.
(2-1). sc query state= all|findstr "SERVICE_NAME DISPLAY_NAME"(不用指定)
// 查看服务名称与显示名称对应关系,从而找出服务名全称.
(2-2). net stop\start "SERVICE_NAME"(要指定) //服务名,一般较短
net stop\start "DISPLAY_NAME"(要指定) //显示名,是全称.
3.几个重要命令:
(3-1). tasklist //根据进程查pid
(3-2). netstat -ano|findstr pid(要填) //根据pid得到端口号,"|"传递之意
(3-3). tasklist /FI "pid eq 3308" // 根据pid得到进程名,notepad.exe
(3-4). start 全路径\进程名 //开始非system32目录下的进程


其他详细:DLL文件无法删除
1.得到IPD:
任务管理器:命令taskmgr或者taskmg.exe或者ctrl+alt+del
2.输入命令tasklist /m>e:\123.txt
到e盘找123.txt
里面就是目前运行的各个程序正在调用的dll文件。
把不能删除的dll文件的名字记下来。
然后到记事本里去编辑-查找。
输入对应的dll文件。
是不是找出来了??
打开任务管理器。
把对应的那个程序给关了。。
就可以顺利删除了
有些应用程序是以服务形式运行的。
那么你就有可能查到的是svhost.exe但是。
里面有很多个svhost.exe哦,
这个也好办。
仍然打开命令提示符。
输入tasklist /svc,
当然,你也可以把他输出为文本文件,
如tasklist /svc>e:\234.txt。
看到了吗?每个svchost.exe
后面是不是对应有一个PID呢?
有了PID一对照也可以知道是哪个服务了。。
在服务窗口里找不到服务显示名称(因为是缩写)对应的服务名称(全称)
查看服务名称与显示名称对应关系:
sc query state= all|findstr "SERVICE_NAME DISPLAY_NAME"(大写照写) //state= 默认,是active (激活,运行)
如果是可关的。就关了他。。
启用or关闭服务:用net stop\start "SERVICE_NAME"(要指定)
或net stop\start "DISPLAY_NAME"(要指定)都好。
不过记住。。系统进程可别乱关哦
有类调用dll文件的进程是不能关闭的(会影响电脑使用

),
但是你非要删除那个dll文件也是可以的,
就是先把调用的进程找出来,结束它,
然后再重新运行,(记住在结束进程前记住进程的名字!!!!)
这样你就可以在把那个dll文件删除了。

ntsd -c q -p pid(要填数字)
https://www.360docs.net/doc/cf16112019.html,/article/28527.htm
方法一:利用进程的PID结束进程
命令格式:ntsd -c q -p pid
命令范例: ntsd -c q -p 1332 (结束PID为1332的explorer.exe进程)
范例详解:explorer.exe的pid为1332,但是如何获取进程的pid呢?在CMD下输入TASKLIST就可以获取当前任务管理器所有进程的PID(并不是所有的exploer.exe进程都是1332)

方法二:利用进程名结束进程
命令格式:ntsd -c q -pn ***.exe (***.exe 为进程名,exe不能省)
命令范例:ntsd -c q -pn explorer.exe
另外的能结束进程的DOS命令还有taskkill:
命令格式: taskkill /pid 1234 /f ( 也可以达到同样的效果。)
taskkill /im KuGou.exe /f
ntsd [options] imagefile
其中,imagefile 是要调试的映像名称,options 是下面选项之一:
选项说明:
-z打开一个用于调试字符模式的应用程序的新窗口
-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[#]设置断点
BC[]清除一个或多个断点
BD[]禁用一个或多个断点
BE[< bp>]启用一个或多个断点
BL[]列出一个或多个断点

首先我们需要设置一下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,那么你就可以干掉进程。

https://www.360docs.net/doc/cf16112019.html,/s/blog_676597fa01010i6f.html
ntsd命令是windows系统中的一

个调试工具,
据说可以杀掉除System、SMSS.EXE和CSRSS.EXE三个进程以外的任何进程,
因此病毒十分青睐这个命令,我在一个被病毒实施了映像劫持的注册表中,
发现ntsd -d 命令的使用次数多达150次以上!
那些被实施映像劫持的程序,与 ntst -d 扯上关系后,
就不能正常运行了!表现为,打开一个程序时,无任何反映。
试验方法:
先运行CMD命令,进入命令行窗口;
输入tasklist命令并回车,列出系统全部进程和每个进程的PID;
输入以下命令(假设要杀掉PID为1580的进程,就是ntst自己的进程):
ntsd -c q -p 1580
回车,ntsd命令的窗口就被关闭了,说明命令成功执行。
注意两个 - 号前各有一个空格,p后面有一个空格。
如果执行命令成功,不会有任何提示,可以再次运行tasklist命令确认一下;
如果执行命令失败,会单独跳出ntsd命令的窗口
但是,有些进程被终止后,会改一个PID号重新出现。
如上图所示,其中的rundll32.exe有两个,
下面一个(PID号为2626的进程)
就是被我用ntsd -c q -p 1604命令成功结束进程后重新出现的
(1604是使用ntsd命令之前的PID号)。
这是IPGuard监控软件的进程,
使用其他方式不能杀掉(包括taskkill /pid 1604命令)。
要知道,许多病毒也具备这种能力,进程被杀掉后会立即重新出现。
这说明ntsd命令还是有一定的局限性。

由于映像劫持病毒对ntsd虎视眈眈,利用它帮自己干坏事,
让大量的应用程序都不能正常运行,因此,
为了让system32目录下的ntsd.exe程序不再多管闲事,
把它的后缀 .exe 改为 .xyz 等字符,
它就不会再理会系统中的任何事情了。
如果需要再次请他出山,只需把后缀改回 .exe 即可 。
改动之后,如果系统中了映像劫持病毒会有出错提示。
比如打开杀毒软件时,提示找不到那个杀软程序,
删除注册表中的Image File Execution Options键项就可以解除映像劫持,
让系统恢复正常!

相关文档
最新文档