zhanliang
驱动牛犊
驱动牛犊
  • 注册日期2007-04-20
  • 最后登录2011-11-05
  • 粉丝0
  • 关注0
  • 积分260分
  • 威望27点
  • 贡献值0点
  • 好评度26点
  • 原创分0分
  • 专家分0分
阅读:1827回复:8

求助:关于修改封包后的发送至应用层的问题

楼主#
更多 发布于:2007-06-25 13:08
各位兄弟姐妹:
     麻烦耐心帮我看看我的方案及有关问题,对于关注本帖的一切人士表示衷心的谢谢
  
 目标:   在IMD层修改封包后,将包发送到上层应用程序,再在上层对包进行SSL加密, 再发送到外网。
我的方案
     我是将其IP改为127.0.0.1,端口改为本地应用程序监听的端口(比如4567)
     经过校验和修改后,重新组包,调用NdisSend发送出去,问题:

1、我的上述方案在实际操作可行吗?为什么?
2、像上述情况,我的上层应用程序应该采取什么通信机制(TCP or UDP or Raw  Socket),才能看到我内核态向应用层发送的包的内容?
3、存在更好的解决方案吗?
 
    真心谢谢大家的关注,我会一直关注本帖的情况
zhanliang
驱动牛犊
驱动牛犊
  • 注册日期2007-04-20
  • 最后登录2011-11-05
  • 粉丝0
  • 关注0
  • 积分260分
  • 威望27点
  • 贡献值0点
  • 好评度26点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-06-25 14:28
兄弟姐妹们,在线等啊?
zhanliang
驱动牛犊
驱动牛犊
  • 注册日期2007-04-20
  • 最后登录2011-11-05
  • 粉丝0
  • 关注0
  • 积分260分
  • 威望27点
  • 贡献值0点
  • 好评度26点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-06-25 16:51

可别沉了啊,着急啊,兄弟们啊
zhanliang
驱动牛犊
驱动牛犊
  • 注册日期2007-04-20
  • 最后登录2011-11-05
  • 粉丝0
  • 关注0
  • 积分260分
  • 威望27点
  • 贡献值0点
  • 好评度26点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-06-26 10:29
过了一天,都没人提点建议啊,大家就帮帮我吧
zhanliang
驱动牛犊
驱动牛犊
  • 注册日期2007-04-20
  • 最后登录2011-11-05
  • 粉丝0
  • 关注0
  • 积分260分
  • 威望27点
  • 贡献值0点
  • 好评度26点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-06-27 12:04
怎么还没人回点什么的呢?我自己顶了
zhaock
驱动太牛
驱动太牛
  • 注册日期2002-01-26
  • 最后登录2018-06-02
  • 粉丝3
  • 关注2
  • 积分73328分
  • 威望362317点
  • 贡献值1点
  • 好评度226点
  • 原创分0分
  • 专家分0分
  • 社区居民
5楼#
发布于:2007-06-28 10:39
>我是将其IP改为127.0.0.1,端口改为本地应用程序监听的端口(比如4567)
这个理解有问题,imd截获到tcpip发来的包,直接转到你自己的应用程序,具体涉及到的和应用程序如何通讯,google,搜索一下,这种问题,讨论过太多次了,.具体可以采用ddk ndisuio的同步read,write的方式.
你不用去改变ip地址,改了也没达不到你的目的.在tdi改地址,才有意义,让tcp去转发到的你的后台server..imd在ndis层,已经在tcp协议下层,想通过改变ip地址,转发到你的应用程序,不可能.
zhanliang
驱动牛犊
驱动牛犊
  • 注册日期2007-04-20
  • 最后登录2011-11-05
  • 粉丝0
  • 关注0
  • 积分260分
  • 威望27点
  • 贡献值0点
  • 好评度26点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2007-07-02 10:14
引用第5楼zhaock于2007-06-28 10:39发表的  :
>我是将其IP改为127.0.0.1,端口改为本地应用程序监听的端口(比如4567)
这个理解有问题,imd截获到tcpip发来的包,直接转到你自己的应用程序,具体涉及到的和应用程序如何通讯,google,搜索一下,这种问题,讨论过太多次了,.具体可以采用ddk ndisuio的同步read,write的方式.
你不用去改变ip地址,改了也没达不到你的目的.在tdi改地址,才有意义,让tcp去转发到的你的后台server..imd在ndis层,已经在tcp协议下层,想通过改变ip地址,转发到你的应用程序,不可能.


嗯,首先十分谢谢版主大人的回复,也给了我思路,这么多天,就您回复了,感动ing。
我再确认一下:我是截或了从本主机往外发的http包,不是从外来的包,然后将其IP改为127.0.0.1,端口改为本地应用程序监听的端口(比如4567)

按照我的理解,网卡一接到包,查询目的IP,一看是127.0.0.1,就会走回环,而往上层应用程序发去

这样实现起来不可能吗?
zhaock
驱动太牛
驱动太牛
  • 注册日期2002-01-26
  • 最后登录2018-06-02
  • 粉丝3
  • 关注2
  • 积分73328分
  • 威望362317点
  • 贡献值1点
  • 好评度226点
  • 原创分0分
  • 专家分0分
  • 社区居民
7楼#
发布于:2007-07-02 14:14
你不用去改变ip地址,改了也没达不到你的目的.在tdi改地址,才有意义,让tcp去转发到的你的后台server..imd在ndis层,已经在tcp协议下层,想通过改变ip地址,转发到你的应用程序,不可能.

我在重复一下我说过的.不可能在ndis 层做到.如果想这样做,需要在tdi层处理.
zhanliang
驱动牛犊
驱动牛犊
  • 注册日期2007-04-20
  • 最后登录2011-11-05
  • 粉丝0
  • 关注0
  • 积分260分
  • 威望27点
  • 贡献值0点
  • 好评度26点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2007-07-03 10:48
引用第7楼zhaock于2007-07-02 14:14发表的  :
你不用去改变ip地址,改了也没达不到你的目的.在tdi改地址,才有意义,让tcp去转发到的你的后台server..imd在ndis层,已经在tcp协议下层,想通过改变ip地址,转发到你的应用程序,不可能.

我在重复一下我说过的.不可能在ndis 层做到.如果想这样做,需要在tdi层处理.


谢谢版主大哥
哭死,那我以前做的工作全都白费了啊
本来是想用共享内存做的,IMD一截到符合所需IP包,就放在共享内存里,然后发个事件通知上层APP过来取,听说这样效率不高的,所以才换了上面那种方法

除了改在TDI层做,其他没什么更好的办法实现我的目标吗?TDI我可是没接触过啊
游客

返回顶部