关闭

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

标签: hook网络structapachetable测试
3078人阅读 评论(3) 收藏 举报
分类:

所谓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

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:42909次
    • 积分:565
    • 等级:
    • 排名:千里之外
    • 原创:11篇
    • 转载:10篇
    • 译文:0篇
    • 评论:9条
    文章分类
    最新评论