WEB开发网      濠电娀娼ч崐濠氬疾椤愶附鍋熸い鏍ㄧ〒闂勫嫰鏌﹀Ο渚Ц闁诲氦顕ч湁婵犲﹤楠告禍鍓х磼鏉堛劌绗氶柟宄版嚇閹晠宕归銈嗘濠电偞鍨堕幐鎾磻閹捐秮褰掓偐閻戞﹩妫勯梺鎼炲妼鐎涒晝绮嬪澶樻晝闁挎繂鏌婇敃鍌涚厵閻庢稒锚閻忥絾绻濇繝鍐ㄧ伌闁诡垰鍟村畷鐔碱敂閸♀晙绱樺┑鐐差嚟婵儳螞閸曨剚鍙忛柍鍝勬噹缁€澶嬬箾閹存繄锛嶆鐐灲閹綊宕惰濡插鏌涢妸銉ヮ劉缂佸倸绉归弫鎾绘晸閿燂拷 ---闂備焦瀵уú鈺呭箯閿燂拷
开发学院网络安全防火墙 Windows软件防火墙实现技术简述 阅读

Windows软件防火墙实现技术简述

 2007-07-21 12:46:26 来源:WEB开发网 闂備線娼уΛ鎾箯閿燂拷闂備礁鎲¢崹鐢垫崲閹扮増鍎嶆い鎺戝€甸崑鎾斥槈濞嗗秳娌紓鍌氱▌閹凤拷濠电姭鎷冮崨顓濈捕闂侀潧娲ゅú銊╁焵椤掍胶鈯曢柕鍥╁仧缁辩偤鏁撻敓锟�闂備線娼уΛ鎾箯閿燂拷  闂備胶枪缁绘鈻嶉弴銏犳瀬闁绘劕鎼痪褔鏌曟繝蹇曠窗闁煎壊浜滈—鍐偓锝庡墮娴犙勭箾閸喎鐏ユい鏇樺劦椤㈡瑩鎮℃惔銇帮拷
核心提示: 2004年12月的时候,www.rootkit.com上面的一名黑客发表了一篇著名的文章:“Hooking into NDIS and TDI, part 1,Windows软件防火墙实现技术简述(2),这篇文章本意是为rootkit作者们提供一种挂接底层驱动实现端口重用的方法

2004年12月的时候,www.rootkit.com上面的一名黑客发表了一篇著名的文章:“Hooking into NDIS and TDI, part 1。这篇文章本意是为rootkit作者们提供一种挂接底层驱动实现端口重用的方法,但是这篇文章揭示了一个全新的技术:通过动态的注册ndis假协议,可以获得ndis protocol的链表地址。得到这个地址之后就能不通过重起,就能替换并监控每个ndis protocol的send(packets)handler和receive(packet)handler,并且可以动态的卸载监控模块不需要重起。在这篇文章出现之后,很多防火墙厂商都悄悄地对自己的产品进行了升级。目前的ZoneAlarm等产品就是使用这种技术,可以在安装后即时发挥作用。这个例子更充分的体现了,黑客和反黑技术本来就是相辅相成的,本源同一的。

这里给出一个寻找该链表头的代码例子:

该函数返回的NDIS_HANDLE就是链表头地址。

NDIS_HANDLE RegisterBogusNDISProtocol(void)
{
   NTSTATUS Status = STATUS_SUCCESS;
   NDIS_HANDLE hBogusProtocol = NULL;
   NDIS_PROTOCOL_CHARACTERISTICS BogusProtocol;
   NDIS_STRING ProtocolName;
   NdisZeroMemory(&BogusProtocol,sizeof(NDIS_PROTOCOL_CHARACTERISTICS));
   BogusProtocol.MajorNdisVersion = 0x04;
   BogusProtocol.MinorNdisVersion = 0x0;
   NdisInitUnicodeString(&ProtocolName,L"BogusProtocol");
   BogusProtocol.Name = ProtocolName;
   BogusProtocol.ReceiveHandler = DummyNDISProtocolReceive;
   BogusProtocol.BindAdapterHandler = dummyptbindadapt;
   BogusProtocol.UnbindAdapterHandler = dummyptunbindadapt;
   NdisRegisterProtocol(&Status,&hBogusProtocol,&BogusProtocol,
     sizeof(NDIS_PROTOCOL_CHARACTERISTICS));
   if(Status == STATUS_SUCCESS){ return hBogusProtocol;}
   else {
#ifdef bydbg
     DbgPrint("ndishook:cannot register bogus protocol:%x
",Status);
     DbgBreakPoint();
#endif
     return NULL;
   }
}

上一页  1 2 3 4 5 6  下一页

Tags:Windows 软件 防火墙

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接