zouzhiqing 发表于 2008-3-12 16:13:26

寻找系统中端口与进程之间的关联

是否想知道该进程在你的系统中开了什么端口?

  一、根据进程查端口号

  首先在开始菜单的“运行”框中输入“cmd.exe”进入命令提示符窗口,先键入“tasklist”命令将列出系统正在运行的进程列表,把你要查的进程所对应的“PID”号记下或复制。如下图:

http://www.it.com.cn/f/edu/077/30/070730_dkjc01.jpg
  需要注意的是,相同的进程 图像名每次运行的“PID”号一般都不会相同,所以一旦该进程重启后,该“PID”号就会改变,这就需要重新查看。

  把进程的PID号记下后,接下来就用这个PID号把该进程所开的端口显示出来了。

  例如我们要看进程“QQ.exe”(上图中得知该进程ID号为:1332)开启了那些端口,在当前的命令符下继续键入“netstat-ano | findstr 1332”命令,其中“netstat-ano”参数表示以数字形式显示所有活动的TCP连接以及计算机正在侦听的TCP、UDP端口,并且显示对应的进程IDPID 号;“|findstr1332”表示查找进程PID为“1332”的TCP连接以及TCP、UDP端口的侦听情况(在实际应用中,需要把你刚才记下或复制的PID号替换掉这里的1332)。按“回车”键后,就会显示出该进程所开的端口号。如下图:
http://www.it.com.cn/f/edu/077/30/070730_dkjc02.jpg
  从上图中我们可以明显地看出,PID为“1332”的进程所开启的所有端口,如果此时没有任何提示信息返回,则说明该进程没有开启任何端口。

  二、根据端口号查进程

  在命令提示符窗口中输入“netstat-ano”命令,列出系统当前的端口列表,该命令的作用已在上面提过了。

  -o参数的作用主要是显示各端口对应的进程PID号,现在把你要查的端口对应的进程PID号记下或复制。

  然后在命令提示符下继续输入“tasklist /fi ″PID eq 788″”(在实际应用中,需要把你复制或记下的PID号替换掉这里的788),

  这行语句“/fi”参数表示在“tasklist”中筛选,而“PID eq788”则是指定筛选的条件,按“回车”键后,就会显示出端口对应的进程。

  可以看出,PID号为“788”所对应的进程为“svchost.exe”,如果你查的端口没有关联任何进程的话,

  此时就会返回“没有运行带有指定标准的任务”的提示信息。

  三、查出进程对应的程序

  知道了端口和进程的关联后,如何再进一步查出该进程是那个软件或程序的进程呢?

  下面的操作就需要用到Windows2000(Server或Professional版都可以)安装光盘中的一个工具。

  首先在安装光盘的“SupportTools”目录下,用解压软件打开“support.cab”压缩包,找到“tlist.exe”文件,将此文件释放到任一目录,

  如“D:Support”。然后在命令提示符窗口中切换到此目录,运行“tlist.exe”命令,

  把要查的进程对应的PID号记下或复制(第一列就是进程的PID号),

  然后继续输入“tlist.exe2012”命令(你输入的时候,需要将刚才记下的PID号替换掉这里的2012),

  “CmdLine ”后面显示的就是该进程对应的软件所在的目录。

  除此之外,返回信息中还列出了该进程所调用的文件,得到了这些信息就可以很容易查出进程对应的程序了。

  假如想关闭某个进程,可把该进程的PID号记下,在命令提符下输入“taskkill/pid 2400” 2400是PID号)

  就可以将PID号为2400的进程关闭,如果要强制关闭该进程,只须在这条命令的后面加个“/f”参数即可。

  或者用ntsd -c q -p pid (实际应用中,pid要换成实际的pid号)
页: [1]
查看完整版本: 寻找系统中端口与进程之间的关联