WINDOWS端口到进程的实现

转载 2007年09月13日 22:36:00
 
作者: flashsky


   端口到进程的检查是对进程状态的一个检查,目前国内XICI的SHOTGUN开发了一个工具PPORT,但是其程序却无法列出系统进程如8号进程开启的端口。国外的工具如FPORT可以列出,但其缺乏源代码和说明,下面是根据FPORT反汇编出来的代码获得的WINDOWS端口到进程实现的过程:


1. 首先使用ZwOpenSection打开/device/physcalmemory句柄


2. 使用MapViewOfFile将/device/physcalmemory影射到自己进程的空间


3. 提升自己的权限到LOCALSYSTEM并调整当前进程的权限


4. 使用ZWOPENFILE打开/device/tcp和/device/udp设备


5. 使用NtQuerySystemInformation获得当前所有句柄的列表


6. 检查所有句柄的列表中对应当前打开的/device/tcp, /device/tcp设备的句柄


7. 将当前进程打开的TCP设备对应的句柄的dwKeObject进行换算运算获得其对应/device/physcalimemory中的位置,算法如下


           readset1 = (tcpdnum->dwKeObject>>0x16);


           readset1 = *((LPDWORD)((DWORD)pmaddr + 4*readset1));


           readset1=(readset1&0xfffff000)+(tcpdnum->dwKeObject&0x003ff000);


8. 在根据获得的位置将对应的物理内存从新影射到本地进程空间


9. 从物理内存空间中读出对应TCP设备的信息,偏移地址是tcp设备句柄的dwKeObject后几位


10.       重复以上过程获得UDP设备的设备信息


11.       创建一个event并和一个overlapped挂接


12.       循环依次打开句柄表,检查句柄是否为文件句柄,如果是,按以上影射方法获得对应句柄的物理空间的描述信息


13.       比较句柄物理设备信息是否和TCP的一致,主要是比较头4个字节和0x10为1或2,0x11-0x13的字节为0,如果一致,就说明是一个TCP端口


14.       复制此句柄到本地,对于0x10为2的设备,说明此设备需要先进行申请,对该句柄发出一个设备请求查询请求,对于0x10为1的设备,跳过此步到15


DeviceIoControl(myhand,0x210012,&in,0x18,&out,0x38,&p,&la);in中包含一个请求查询的申请代码,如果成功,进行15


15.       对该句柄发出一个设备查询请求


DeviceIoControl(myhand,0x210012,&in1,0x18,&out1,0x30,&p,&la);如果成功,起输出的设备状态中包含了此设备的端口号码。


16.       再按以上方法查询UDP端口


17.       剩下的就是进程的一些信息了,这些大家都很熟悉了,就不多说了


18.       下面是例子程序联接 http://www.shopsky.com/aa1.exe
 

相关文章推荐

windows进程及端口查看工具

  • 2017年11月08日 14:20
  • 1.84MB
  • 下载

查找Windows端口号对应的进程

  • 2013年09月21日 16:07
  • 685KB
  • 下载

Windows netstat 查看端口 进程占用

目标:在Windows环境下,用netstat命令查看某个端口号是否占用,为哪个进程所占用.操作:操作分为两步:(1)查看该端口被那个PID所占用;方法一:有针对性的查看端口,使用命令Netstat ...

windows查看端口所在进程

  • 2013年04月10日 14:31
  • 2KB
  • 下载

【Windows 8】pid为4的system进程占用80端口的解决办法

【Windows 8】pid为4的system进程占用80端口的解决办法 1、运行cmd,然后输入netstat -a -n -o,回车; 2、查看开头几行包含0.0.0.0:80的那...

Windows下查找占用特定端口的应用进程

引言: 在windows下经常会碰到,某个端口被占用,无法启动特定应用的问题,需要找到占用特定端口的程序,并停掉它,然后才能正常继续工作,今天我们将介绍如何来查找端口的占用。...

Windows netstat 查看端口、进程占用

目标:在Windows环境下,用netstat命令查看某个端口号是否占用,为哪个进程所占用. 操作:操作分为两步:(1)查看该端口被那个PID所占用;方法一:有针对性的查看端口,使用命令 Netsta...
  • cbbbc
  • cbbbc
  • 2015年08月06日 14:41
  • 2047

Windows下80端口被进程System占用的解决方法

最近电脑时不时就发生了80端口被占用的情况,简单百度解决后,当重启电脑的时候又发生被占用的情况.今天非常幸运的是,发生了80端口和8080端口都被占用了情况,忍无可忍决定下定决心解决这个坑爹的问题,经...
  • LINPE
  • LINPE
  • 2017年03月27日 23:42
  • 2866

关于windows2008r2系统80端口被system进程占用的问题

80端口被system占用的问题   今天启动tomcat的时候发现无法启动80端口被占用 通过netstat -an查看 检查进程发现是system进程id=4给占用了,system这个是系统进...

Windows netstat 查看端口、进程占用

目标:在Windows环境下,用netstat命令查看某个端口号是否占用,为哪个进程所占用. 操作:操作分为两步:(1)查看该端口被那个PID所占用;方法一:有针对性的查看端口,使用命令 Nets...
  • jlnuboy
  • jlnuboy
  • 2011年12月14日 18:04
  • 1040
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WINDOWS端口到进程的实现
举报原因:
原因补充:

(最多只允许输入30个字)