阅读:5900回复:10
[原创]pppoe驱动双版本...source code included
第一次在这个板发帖.....
我这个人兴趣太广.........什么都想研究..呵呵.... 这次放出的是实现pppoe的imd..... 两个版本.... 一个是ndis wan miniport....... 一个是condis wan miniport...... ndis wan miniport的实现方法已经很普遍了.... hypppoe.mtppppoe等等都是这样作的.... 可惜的是并不能找到一个完全测试过的真正能完美使用的源代码.. 虽然我的这个绝对不能说是完美...也没有经过完全测试... 但是我自认为要比你们能找到的源代码来得详细..... 如果问这个东西是怎么实现的...我到哪里找的资料... 嗯...微软...raspppoe.sys....花点时间反编译一下... 一共才3xK的大小...稍微努力就能完全弄清楚它的架构...它使用的数据结构....我这里有完全反汇编的ida文件...一并放出来了... 呃...如果你要反汇编的话呢...推荐的是checked build版本的文件...里面的调试信息能让你更快的了解到函数的作用...能更快的了解到那些结构成员的含义......如果你能找到带type 信息的pdb文件....它就perfect了.....有了带type信息的pdb文件...那简直...毫无秘密可言了....这个就不多说了...看你自己的反汇编功力了.. condis miniport的版本实现上就简单了很多很多...因为ndproxy帮你完成了大部分的tapi操作...你要作的就是create delete activate deactivate vc而已....而且ndproxy使用的condis架构..能大幅度的减少代码..........condis版的驱动...我只用了一天还不到就全k.o.了.......这个代码参考了ms的coisdn的实现 顺便还附带一个用于创建连接的app...这个程序核心部分不是我完成的...codeproject上面找来的现成代码....呵呵..... 至于notify object....这个实在有些bt....偶对com了解程度只能算刚刚入门...atl完全没有研究过....mfc版的com到是还曾经跟踪看过它的DllGetClass等等函数的实现...它使用的inner class方式还算比较清楚....atl版...完全苦手....所以这个东西...实现方面...我可不敢多说....代码全面参考ms的mux里面的notify..... 而且它还有少许bug....有checked build版os的朋友能看到是什么bug......我也不想去改,现在的这个也能用(其实是不知道怎么改-_-b)........ 相比下呢....condis的实现确实要简单非常的多...但是也少了许多的自主权利....ndproxy的实现方面也有不是很可取的地方...它用miniport的guid来标识一个tapi provider..这个本来没有什么错的...但是它对ras模块返回的信息方面缺少足够有效的部分...使得ras模块并不能很好的区分具体的line....这个的体现就是...先安装...拨号一次...然后卸载...再安装....这个时候ras模块就不能分清楚哪个是先安装的,哪个是后安装的了......ndproxy总是对ras模块返回先安装的设备信息....使得ras模块认为这个设备是不能正常工作的.....这个应该是ras模块跟ndproxy之间的交流问题造成的...用tapi的函数是能打开新的line device,并且能进行make call的..在sdk里面有个叫tapi browser的程序,可以用它进行验证... 还有一个问题就是condis并不能很好的支持pppoe的设备..而作为isdn标识返回MEDIA_SUBTYPE的oid的时候,ndproxy总是标识设备速度64k....我怎么改都没有反应...一气之下改成pppoe..结果速度是出来了...但是ras却不认得它了...并不把它认为是一个pppoe的设备...而认为它是一个generic的设备....划归到modem里面...这个实现是ndproxy的问题...在它的代码里面有一个判断设备类型的...唯独少了pppoe这个东西...... 使用condis确实能少很多复杂的工作...但是得牺牲一部分...这个是必然得...... 最后要说得就是....ndis wan miniport版本的是实现了incoming call模块的....但是没有那个环境我没有办法测试...vm不行...不管是作为server还是作为client...vm必然是rpc...倒数60妙....我试过无数的组合方式...我的+ms的,ms的+rmraspppoe的,都是一样....最后放弃了......所以condis版本的干脆就没有实现incoming call的模块..... 附件里面的是全部的源代码...以及checked版的程序,inf,使用的ndis版本分别是4.0跟5.0...... 编译环境....我喜欢ide...而且用最新的ide...vs.net 2003 用2003的ifs.ddk source file就别用了....我这个人太依赖ide了...完全没有高手用command line的觉悟(-.-b)..........那两个source完全无用.. 编译方面....如果你用build的话...得作很多工作了....这个我无能为力......爱莫能助..... 如果你用ide的话...只用作小修改就ok....就那些h,lib文件的路径..... 还有要说的就是free build版的没有经过足够的测试...... 另外的那个raspppoe.idb文件是ida的文件...是我完全反汇编ms的raspppoe.sys生成的,里面有比较详细的注释....可以一看.... ndproxy以及ndiswan以及ndis本身....我并没有进行全部的反汇编...都还只是半成品...加之对他们本身的熟悉程度还很不够...对他们的整体架构还不能理得很顺畅....所以...反汇编遇到了很多得阻力...使得他们都还只是半成品....这里就不放出来了.. 最后最后了....祝大家好运..... 我这人废话很多....嘿嘿 |
|
最新喜欢:wingma... |
沙发#
发布于:2004-08-26 23:22
文件在这里....
好难发上来哦 |
|
|
板凳#
发布于:2004-08-27 08:01
兄弟好样的,我顶!!!
|
|
地板#
发布于:2004-08-27 10:10
顶顶!~ :)
|
|
地下室#
发布于:2004-09-01 12:11
我也来顶
|
|
5楼#
发布于:2004-09-01 17:18
just learn and thanks a lot
|
|
|
6楼#
发布于:2004-09-02 04:39
呵呵...楼上...谢谢捧场呀.....
我这个人兴趣太广........ 一会儿文件系统 一会儿网络接口... 现在又想研究usb了........ sign...... 多而不精.... |
|
7楼#
发布于:2004-12-13 17:23
兄弟你太强了,pfpf
|
|
8楼#
发布于:2004-12-17 14:41
安装起来怎么工作不正常呢。。。
|
|
9楼#
发布于:2009-02-06 09:43
|
|
10楼#
发布于:2010-05-26 18:13
顶,dddddddddddddddddd
|
|
|