利用 TDI HOOK 实现任意端口复用

原创 2006年05月30日 17:43:00

所谓tdi hook,我这里利用的是hook tcpip dispatch table的方法,实际上复用的原理很简单,关键是hook掉tdi_event_connect,之后从*AcceptIrp中取出conn obj,将其传递到自己定义的tdisend中就可以了
这里唯一蹩脚的地方是在处理TDI EVENT的时候,当进程启动后,它首先系统注册这些event handler,在有相应的网络事件发生的时候才进行调用,这点利用TDI MON可以看出来。因此,要在驱动启动的时候要分配一个信息结构(struct conn_ot)的HASH表,表里记录的信息可以在IRP_MJ_CLEANUP的时候进行释放。
这里我只对网络中最后一个连接做了复用,如果想复用全部的连接,需要修改一下ot_add_fileobj(),并且在连接断开的时候,处理IRP_MJ_CLEANUP就可以了。

测试方法:
首先在远程的机器上安装tdihook.sys,之后运行DMCanon.exe 2(这个数字随意指定)。运行一个网络服务,我一般用nc和apache。在本地机器运行nc连接,以ok作为magic word发送,可以得到Complete!

代码大部分取自tdi_fw。
感谢sinister大哥的指教。

代码下载请见下面的地址:
http://club.safechina.net/viewthread.php?tid=2160
http://www.whitecell.org/forums/viewthread.php?tid=253

by CDrea
http://www.safechina.net
CDrea@safechina.net

Windows防火墙之NDIS HOOK和TDI HOOK

1、TDI HOOK TDI Client利用TDI接口,向TDI Server发送IRP(I/O Request Packet)请求包,来获得TDI Server提供的服务。因此,可以利用分层驱动原...

TDI HOOK监控tcp连接源码+文档

作 者: boywhp 时 间: 2011-08-11,17:59:22 链 接: http://bbs.pediy.com/showthread.php?t=138620 直接改的tdif...

iOS动态性(二)可复用而且高度解耦的用户统计埋点实现(Method Swizzling(Hook))

用户统计.jpeg 用户行为统计(User Behavior Statistics, UBS)一直是移动互联网产品中必不可少的环节,也俗称埋点。在保证移动端流量不会受较大影响的前提下,PM们...

在C#中实现Socket端口复用

  • 2007年04月13日 13:37
  • 69KB
  • 下载

TDI过滤获取IP及端口

TDI过滤驱动获取IP地址及连接端口要涉及关于TDI的一些结构体,当接收到含有TDI的TDI_CONNECT连接IRP请求时,IRP请求栈顶的的参数parameters就是指向TDI_REQUEST_...

80端口复用:利用haproxy把http流量和ssh流量分别转发到web服务器和ssh服务器

我们实验室在学校里面有一台服务器,带一个公网ip,但是只开了一个80端口,22端口竟然不给开!!!这让我很是不爽。之前一直待学校里,不给开我忍忍就算了,最近搬到了个没有校园网的偏远地方,连不上实验室的...

第九章 TCP和UDP同时用复用一个端口实现一个回射服务器

linux服务器编程 TCP和UDP同时用复用一个端口实现一个回射服务器

Python实现端口复用实例代码

转自 : http://www.jb51.net/article/51809.htm 本文介绍Python实现端口复用实例如下所示: ? 1 2...

在C#中实现Socket端口复用

一、什么是端口复用:   因为在winsock的实现中,对于服务器的绑定是可以多重绑定的,在确定多重绑定使用谁的时候,根据一条原则是谁的指定最明确则将包递交给谁,而且没有权限之分。这种多重绑定便...
  • educast
  • educast
  • 2012年03月23日 10:10
  • 733

VC实现端口复用木马

其实想实现端口利用很简单,先创建一个Socket之后,用Setsockopt设置Socket的SO_REUSEADDR属性就可以了。当然要防止别人复用你的端口也很容易,用SetEXCLUSIVEADD...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:利用 TDI HOOK 实现任意端口复用
举报原因:
原因补充:

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