阅读:18968回复:59
网络数据包通用拦截技术范例(Protocol Wrapper)
决定公开源代码.配合《网络数据包通用拦截技术》这篇文章。
http://www.tarcysu.net/gjp/ndishook1.c 此部分为NT部分。要使用在9X下需要修改 因为没有整体分开,一些函数和头文件未给出,但不影响框架 请阅读者自己修改。 实现的防火墙 http://www.tarcysu.net/gjp/hdfwinst.exe [编辑 - 12/16/02 by gjpland] |
|
|
沙发#
发布于:2002-10-11 10:47
女孩子嘛,多哄哄就好了!
|
|
板凳#
发布于:2002-10-11 11:19
谢谢你的大补丸。
|
|
地板#
发布于:2002-10-11 12:21
女孩子嘛,多哄哄就好了! 很有经验的样子,不过为什么凭什么哄? |
|
地下室#
发布于:2002-10-13 21:00
[quote]女孩子嘛,多哄哄就好了! 很有经验的样子,不过为什么凭什么哄? [/quote] 为了不被女流氓猥亵、凭你的三寸不烂之舌! ^_^ |
|
5楼#
发布于:2002-10-14 08:59
谢谢gjpland的源码,学习学习。
希望gjpland和GF早点冷战结束。 :) |
|
|
6楼#
发布于:2002-10-16 17:45
哪个敢对我们老大这么无礼,老大不用怕,老大这么优秀,一定有一大大堆的girls的!
哪天等我找到LP后再给你介绍几个 :) 开玩笑的,老大不要生气啊! 还靠你罩着呢! 相爱容易相处难啊,不过呢,风浪只是检验你们的感情是否够深,如果你们走不过,那么就是感情未够,如果感情够呢,就不用怕的! 祝好! |
|
7楼#
发布于:2002-10-17 08:49
唉,你就当她是小孩,哄着就得了, 不然还能怎么办??、只有分手了 |
|
|
8楼#
发布于:2002-10-26 21:00
大补, :P
|
|
|
9楼#
发布于:2002-10-27 10:53
多谢 gjpland!
我要好好研究一下! 另外,老大,两个人在一起很多时候都是你认为她不对,她认为你不对,一直耗着很累人啊,其实多数时候也不是什么大事情,想想你们多年的感情,犯得着吗?想开一点,哄哄就好了! |
|
10楼#
发布于:2002-10-28 09:19
说来容易吖,俺最近也和MM关系紧张,唉,郁闷吖 |
|
|
11楼#
发布于:2002-10-28 15:04
谢谢,各位的关心,
我和GF已经和好了. 其实双方都包容点就没事了。 |
|
|
12楼#
发布于:2002-10-28 16:00
俺还在努力中。。。。。。。。。。。。。。。。
极度郁闷ing |
|
|
13楼#
发布于:2002-10-31 10:14
我来写一下对贴主的大补丸的理解把,欢迎大家指正 :D
这里有一个很重要的结构 typedef struct _HOOK_CONTEXT_STRUCT { //runtime code ubyte code1_0x58; //0x58 | pop eax | pop caller IP from stack to eax ubyte code2_0x68; //0x68 | push IMM | push our hook context address struct _HOOK_CONTEXT_STRUCT *m_pHookContext;//point this ubyte code3_0x50; //0x50 | push eax | push caller IP from eax to stack ubyte code4_0xE9; //0xE9 | jmp HookProc | jump our hook proc udword m_pHookProcOffset; //our context data PVOID m_pOriginalProc; PVOID m_pHookProc; PVOID m_pBindAdaptHandle; PVOID m_pProtocolContent; PVOID *m_ppOriginPtr; struct _HOOK_CONTEXT_STRUCT *m_pHookNext; }HOOK_CONTEXT_STRUCT; 在HookFuncBlock()函数中,调用了HookNdisFunc()函数将接收packet的函数一一替换,而在HookNdisFunc()函数中,我们看是怎样把一个Hook函数题换成自己的函数,而且注意替换的函数比原来函数多了一个参数 :D |
|
|
14楼#
发布于:2002-10-31 10:41
再HookNdisFunc中,
ppOrigProc[0] = pHookContext; 这里替换的,是拿_HOOK_CONTEXT_STRUCT结构体的地址去替换HOOK函数,当一个包到来触发―&pProChar->ReceiveHandler时(见HookFuncBlock中的 HookNdisFunc(HookProtocolReceive,(PVOID *)&,NULL,ProtocolContent); 以HookProtocolReceive为例,其他的一样)。指令指针将转到_HOOK_CONTEXT_STRUCT结构,而从该结构读出来的数据将作为指令来执行。这里真他妈好的是在该结构头有 ubyte code1_0x58; //0x58 | pop eax | pop caller IP from stack to eax ubyte code2_0x68; //0x68 | push IMM | push our hook context address struct _HOOK_CONTEXT_STRUCT *m_pHookContext;//point this ubyte code3_0x50; //0x50 | push eax | push caller IP from eax to stack ubyte code4_0xE9; //0xE9 | jmp HookProc | jump our hook proc udword m_pHookProcOffset; 执行了ret指针出栈,把_HOOK_CONTEXT_STRUCT指针入栈(这时栈中多了一个实参数),ret入栈,再用指针跳转跳到 HookProtocolReceive函数。可以看到HookProtocolReceive函数的第一个参数就是_HOOK_CONTEXT_STRUCT !!!! 而在_HOOK_CONTEXT_STRUCT 结构中,保存了原来的函数,在进行了packet的检查之后,就可以调用原来的函数转发数据了 :D :D :D [编辑 - 11/1/02 by trent] |
|
|
15楼#
发布于:2002-11-03 16:40
雨过天晴,什么都好办了。
谢谢诸位的源码和文章。 |
|
|
16楼#
发布于:2002-11-04 12:42
精神可嘉,再次制鞋(致谢)!! :D :D
|
|
|
17楼#
发布于:2002-11-04 15:02
sssssssssss
|
|
18楼#
发布于:2002-11-05 14:04
决定公开源代码.配合《网络数据包通用拦截技术》这篇文章。 啊?那几天我老在QQ骚扰你,还想着这老兄怎么这么臭拽,QQ都不回,哼哼!原来是这个原因啊。。。不知者不为怪哦!! 不过,听到说你们和好了就放心了。说不定未来的大嫂是看见我对你如此的崇拜如滔滔降水。。。。。呵呵。 [编辑 - 12/16/02 by gjpland] |
|
|
19楼#
发布于:2002-11-05 14:10
[quote]决定公开源代码.配合《网络数据包通用拦截技术》这篇文章。 啊?那几天我老在QQ骚扰你,还想着这老兄怎么这么臭拽,QQ都不回,哼哼!原来是这个原因啊。。。不知者不为怪哦!! 不过,听到说你们和好了就放心了。说不定未来的大嫂是看见我对你如此的崇拜如滔滔降水。。。。。呵呵。 [/quote] HEHE,不好意思,也不是全这个原因,有时候是我正好在下四国或打升级,没时间去回QQ了。不过以后最好有问题的都请通过EMAIL或直接在论坛上问,我想有些问题这里有很多人都能帮你解决的。 [编辑 - 11/5/02 by gjpland] [编辑 - 12/16/02 by gjpland] |
|
|
上一页
下一页