edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2823回复:17

真诚求教 Huyg 版主有关 NAT 和 VPN 的起步问题。

楼主#
更多 发布于:2002-04-15 13:31
我在驱动开发和 NDIS 方面绝对是新手,可是现在实习(我大四)单位的领导让我做个 NAT 出来,我在网上查阅这方面的资料已经一个多星期了,可才刚刚有了一点点眉目,所以心里很着急,我不奢望您能给出源代码,您只要给我讲一下做 NAT 用哪种方法比较好一些(NDIS IM?TDI?98DDK 的 Packet32?2kDDK 的 Passthru?Hook NDIS?),大致的原理是什么?需要注意些什么?

可能您体会不到我现在的心情,我确实很着急,我现在只能给这么多分,当然,还可以在开贴给。

真诚希望您能帮我!!!谢谢!!!

最新喜欢:

jzyhummeljzyhum...
edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-04-15 13:44
补充一下:

我要做的这个东西主要是用于 Win 9x 平台。

如果要求既要用于 Win 9x 又要用于 Win NT,2K平台呢?

- - - - - - - - - - - - - - - - - - - - - - - - - - - -

希望您能在百忙之中抽出一点时间来回复一下,万分感谢!!!
magicx
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2014-08-18
  • 粉丝1
  • 关注0
  • 积分-14分
  • 威望13点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-04-15 14:20
引用:
我要做的这个东西主要是用于 Win 9x 平台。
如果要求既要用于 Win 9x 又要用于 Win NT,2K平台呢?
//////////////
个人觉得Win 9x与 NT,2K在驱动模型这方面,有较大的差别,只能分别开发vxd及sys,本站的wincap为很好的列子。


[编辑 -  4/15/02 作者: magicw]
[color=red]大头鬼! :P[/color]
edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-04-15 14:37
既然是这样,那就先针对 Win 9x 平台吧。

magicw,你说的 wincap 的具体位置在哪里,不是那个 WinPcap 开发包吧?(http://winpcap.polito.it/)

你说的这个 wincap 能完成我说的 NAT 应用吗?

谢谢回复!!!
HuYuguang
论坛版主
论坛版主
  • 注册日期2001-04-25
  • 最后登录2013-04-29
  • 粉丝3
  • 关注1
  • 积分92分
  • 威望11点
  • 贡献值0点
  • 好评度9点
  • 原创分1分
  • 专家分0分
地下室#
发布于:2002-04-15 16:43
引用:
我要做的这个东西主要是用于 Win 9x 平台。
如果要求既要用于 Win 9x 又要用于 Win NT,2K平台呢?
//////////////
个人觉得Win 9x与 NT,2K在驱动模型这方面,有较大的差别,只能分别开发vxd及sys,本站的wincap为很好的列子。


[编辑 -  4/15/02 作者: magicw]


如果你真的没有搞清楚什么是NAT和WINCAP的实现原理,
那么请不要乱说。
不再回忆从前,我已经生活在幸福当中。
HuYuguang
论坛版主
论坛版主
  • 注册日期2001-04-25
  • 最后登录2013-04-29
  • 粉丝3
  • 关注1
  • 积分92分
  • 威望11点
  • 贡献值0点
  • 好评度9点
  • 原创分1分
  • 专家分0分
5楼#
发布于:2002-04-15 16:50
我在驱动开发和 NDIS 方面绝对是新手,可是现在实习(我大四)单位的领导让我做个 NAT 出来,我在网上查阅这方面的资料已经一个多星期了,可才刚刚有了一点点眉目,所以心里很着急,我不奢望您能给出源代码,您只要给我讲一下做 NAT 用哪种方法比较好一些(NDIS IM?TDI?98DDK 的 Packet32?2kDDK 的 Passthru?Hook NDIS?),大致的原理是什么?需要注意些什么?

可能您体会不到我现在的心情,我确实很着急,我现在只能给这么多分,当然,还可以在开贴给。

真诚希望您能帮我!!!谢谢!!!


说句老实话,如果你说的是真的,那么我建议你对你在毕业之前
做好这个9x的nat不抱太大希望。我想你实习的单位领导如果
不是脑子里面灌了水的话,他不太可能真的指望你能够做出来。
据我所知,完整的,free的source没有。而你又是驱动的新手。

我猜想领导只是想看看你学习新东西的能力,如果这涉及到你毕业
学位的话,你不用担心,如果涉及到你毕业后的单位的话,你也
不用担心,做不出来也不着急,慢慢来吧。只要你答辩的时候能够
告诉你的老师,你做了哪些研究就行了。

PS:在9X下,比较现实的方法就是HOOK_DEVICE_SERVICE。
大致的原理就是hook ndis function。



不再回忆从前,我已经生活在幸福当中。
edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-04-15 17:38
太好了,斑竹终于出现了!

Huyg,您好。
    首先谢谢您的指点,我说的这个任务不是我的毕业设计,是单位领导布置的一个任务,跟您说的一样:他并没有限定要我什么时候做出来,但是这个阶段以来我一直感觉进展很慢。
    由于我手头没有什么好的参考资料,更重要的是没有一位“过来人”指点,所以一直在“黑暗中摸索”,可能这是每个驱动新手都有的感觉吧?!

    您能抽时间简单的说一下 HOOK_DEVICE_SERVICE 的步骤吗(伪码等等),这样我也好有个继续下去的方向。

    Hook NDIS Function 跟 API Hook 的道理是不是有点象?事先截到将要传给 NDIS Function 的包,我们处理过后(改 IP 头等等)再把它送给 NDIS Function?

很感谢您的回复,因为四处碰壁跟盲目摸索的感觉真的不好受!!!
HuYuguang
论坛版主
论坛版主
  • 注册日期2001-04-25
  • 最后登录2013-04-29
  • 粉丝3
  • 关注1
  • 积分92分
  • 威望11点
  • 贡献值0点
  • 好评度9点
  • 原创分1分
  • 专家分0分
7楼#
发布于:2002-04-15 21:57
太好了,斑竹终于出现了!

Huyg,您好。
    首先谢谢您的指点,我说的这个任务不是我的毕业设计,是单位领导布置的一个任务,跟您说的一样:他并没有限定要我什么时候做出来,但是这个阶段以来我一直感觉进展很慢。
    由于我手头没有什么好的参考资料,更重要的是没有一位“过来人”指点,所以一直在“黑暗中摸索”,可能这是每个驱动新手都有的感觉吧?!

    您能抽时间简单的说一下 HOOK_DEVICE_SERVICE 的步骤吗(伪码等等),这样我也好有个继续下去的方向。

    Hook NDIS Function 跟 API Hook 的道理是不是有点象?事先截到将要传给 NDIS Function 的包,我们处理过后(改 IP 头等等)再把它送给 NDIS Function?

很感谢您的回复,因为四处碰壁跟盲目摸索的感觉真的不好受!!!


关于这个技术,你需要看得就是去看9x ddk中的
_hook_device_service条目的定义和说明。
然后,你就知道应该hook的大约是ndissend之类。

如果你需要source参考,可以参看本站的pcausa的98_im,
也可以看本站的文章,vpn source。

但是,我还是要说一句,完整的nat真的不好做,特别是
对于ftp这种需要两个端口的协议。
不再回忆从前,我已经生活在幸福当中。
edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-04-15 22:19
十分感谢斑竹指点,我马上就去看 Hook_Device_Service !

我知道这个网站不久,请问斑竹您说的“pcausa 的 98_im”在哪里?告诉个大概方向就行了,我会自己去找的。

唉,难做也得做啊!这是工作... ...

以后有什么不懂的地方还是要麻烦斑竹您的,有劳!
edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-04-15 22:27
对了,突然想到一个问题:为什么做 NAT 这种应用就是用 Hook NDIS 好呢?为什么用其他方法就不太合适?有什么道理吗?

记得侯捷的书里说过:一种东西只会使用,而不明白其中的道理,实在不高明!
edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-04-16 14:01
谢谢斑竹,我找到 PCAUSA 的 NDIS PIM 9X 了,在:

http://www.pcausa.com/ndispim9x/Default.htm
HuYuguang
论坛版主
论坛版主
  • 注册日期2001-04-25
  • 最后登录2013-04-29
  • 粉丝3
  • 关注1
  • 积分92分
  • 威望11点
  • 贡献值0点
  • 好评度9点
  • 原创分1分
  • 专家分0分
11楼#
发布于:2002-04-16 14:10
对了,突然想到一个问题:为什么做 NAT 这种应用就是用 Hook NDIS 好呢?为什么用其他方法就不太合适?有什么道理吗?

记得侯捷的书里说过:一种东西只会使用,而不明白其中的道理,实在不高明!


其他方法只要能做,那么也是可以的,不过9x系统中我还没有
想到别的方法。

98的话,当然也可以用imd来做,但是不是太容易。

不能在应用层或tdi层做的原因是,nat必须在router之下,
否则一切都路由掉了,还nat什么?
不再回忆从前,我已经生活在幸福当中。
magicx
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2014-08-18
  • 粉丝1
  • 关注0
  • 积分-14分
  • 威望13点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2002-04-16 17:22
引用:
--------------------------------------------------------------------------------
引用:
--------------------------------------------------------------------------------
引用:
我要做的这个东西主要是用于 Win 9x 平台。
如果要求既要用于 Win 9x 又要用于 Win NT,2K平台呢?
//////////////
个人觉得Win 9x与 NT,2K在驱动模型这方面,有较大的差别,只能分别开发vxd及sys,本站的wincap为很好的列子。


[编辑 - 4/15/02 作者: magicw]
--------------------------------------------------------------------------------



如果你真的没有搞清楚什么是NAT和WINCAP的实现原理,
那么请不要乱说。

---------------------------------------------------------------------------------
抗议!
本人所说的只是针对9x及nt的驱动方面有不同,并以WINCAP为列说明之。并无提到一点NAT和WINCAP的实现原理(这方面我的确不懂!)。
我只是想说明
////////////////////////
如果要求既要用于 Win 9x 又要用于 Win NT,2K平台呢?
////////////////////////
不太可能。从这个角度而我不认为有什么错???
只为一片好意。
[color=red]大头鬼! :P[/color]
edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2002-04-17 11:31
谢谢斑竹帮忙!!!

我现在已经决定从修改 PCAUSA 的 PIM 源代码入手来实现我的这个 NAT 应用了,有了大家的帮助,我终于看见一点路了!

再问几个弱智问题:

(1) NAT 代理肯定要在一台同时拥有网卡和上网设备的机器上跑,现在假设那个上网设备是 Modem,问题是我可以通过 NDIS Hook 截获由网卡传送的 IP 包,那又如何截获通过 Modem 传送的 IP 包呢?

(2) PCAUSA PIM 里面那个 PCAIPLCE 例子用的是静态 VxD,系统启动的时候加载,能不能做成动态的呢?启动 NAT 服务就加载 VxD,退出 NAT 服务就卸载 VxD。
如果不能的话是否跟 Hook 的时机有关呢?
如果能的话用什么方法可以实现,CreateFile?
hooker
驱动牛犊
驱动牛犊
  • 注册日期2002-03-24
  • 最后登录2002-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2002-04-17 19:46
edust:

在pcausa上pim源码是免费的吗?贴出来看看吧,我也正为此困惑
edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2002-04-18 10:44
对,http://www.pcausa.com/ndispim9x/Default.htm 上面的源代码不是免费的,但是本站有:
相关下载 -> 特别提供 -> 第 2 页 -> PCAUSA 的 NDIS 源代码

呵呵,一下子省了好几百美元!!!
真是很感谢这里的站长和斑竹们!!!
我现在还是个穷学生,如果我工作以后就是搞驱动开发的话我一定交费注册个高级会员,为支持这个站点,也为了自己确实的方便!!!
edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2002-04-19 09:15
斑竹你在哪里啊?

请抽点时间回复一下我的问题,帮我一把好吗。

万分感谢!!!
edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2002-04-21 18:19
怎么给分?
游客

返回顶部