发明名称 Vista操作系统下网络信息的获取方法
摘要 本发明公开了一种Vista操作系统下网络信息的获取方法,该获取方法通过物理内存分析获得tcpip.sys模块的基地址虚拟地址,并进而获得该基地址下获取双链表TcpEndpointPool的虚拟地址,通过遍历该双链表获得网络的连接信息,具有可靠性高,速度快的优点。
申请公布号 CN101727323A 申请公布日期 2010.06.09
申请号 CN200910231540.X 申请日期 2009.12.04
申请人 山东省计算中心 发明人 王英龙;徐丽娟;王连海
分类号 G06F9/44(2006.01)I;G06F12/06(2006.01)I 主分类号 G06F9/44(2006.01)I
代理机构 济南泉城专利商标事务所 37218 代理人 李桂存
主权项 一种Vista操作系统下网络信息的获取方法,包括以下步骤:1)通过物理内存分析获得tcpip.sys模块的基地址虚拟地址;2)根据步骤1)得到的基地址虚拟地址加上当前操作系统下该基地址与数据结构TcpEndpointPool的地址差获取TcpEndpointPool的虚拟地址;3)根据当前操作系统下地址转换规则将步骤2)得到的虚拟地址转换为物理地址,并定位到内存镜像中该物理地址指向的第一位置;4)在步骤3)所得指向的第一位置读取前4个字节作为虚拟地址转换为物理地址,并定位到内存镜像中该物理地址指向的第二位置,在该第二位置的偏移0x1c处读取前4个字节获得TcpEndpointPool这一双链表中第一个TcpEndpoint结构头的虚拟地址;5)处理当前单链表头为TcpEndpoint结构头的单链表:a)把当前TcpEndpoint结构头的虚拟地址转化为物理地址,定位到内存镜像中该物理地址处,读取前4个字节得到该单链表下第一个节点的虚拟地址;b)判断单链表当前节点的虚拟地址是否为0,若是,该单链表处理结束;若不是,转步骤c);c)把单链表当前节点的虚拟地址转化为物理地址,定位到内存镜像中该物理地址处,读取前0x180个字节放入buffer中;d)读取buffer的偏移0x14处4个字节的值,判断该值是否为指向EPROCESS结构体的指针,若是,则该结构体为TcpEndpoint结构,转步骤f),否则,该结构体为TCB结构,转下一步;e)解析TCB结构:依据当前操作系统的EPROCESS结构体的特征,找出创建网络连接的进程OwningProcess的连接信息,之后进行下一步;f)读取buffer偏移0x0处的4个字节获取当前单链表下一个节点的虚拟地址,转步骤b);6)依据相邻TcpEndpoint结构头所存放的_LIST_ENTRY结构的链接关系,若下一个_LIST_ENTRY的虚拟地址等于第一个TcpEndpoint结构头的虚拟地址加0x30,结束;否则,将该下一个_LSIT_ENTRY的虚拟地址减0x30得到对应当前TcpEndpoint结构头的下一个结构头的虚拟地址,进入下一步;7)根据步骤6)的得到的下一个结构头的标志位判断该结构头是否为TcpEndpoint结构头,若是,转步骤5),若否,转步骤6)。
地址 250014 山东省济南市历下区科院路19号