999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

個人防火墻系統內部模塊間通訊的設計與實現

2012-03-20 08:58:16謝秀維
網絡安全技術與應用 2012年4期

謝秀維

中國人民銀行滄州中心支行科技科 河北 061001

0 引言

隨著Internet不斷的發展和普及,網絡信息安全問題越來越受到人的關注,時常讓人擔憂。攻擊者利用計算機硬件、軟件、網絡設備等安全漏洞進行攻擊。攻擊事件一旦發生就可能導致有關的服務中斷、重要商業信息失竊、研究機構的重要數據丟失甚至涉及到國家機密等,其災難性后果不言而喻。防火墻是網絡信息安全的主要技術手段之一,個人防火墻得到了廣泛應用。

由于防火墻涉及系統文件SYS、動態連接庫DLL和用戶界面應用程序EXE,因此,不同進程間數據共享就變得至關重要。DLL安裝在應用程序和驅動程序之間,為上層應用程序提供網絡連接服務。

DLL與EXE及其它調用它的進程都需要共享控管規則數據,但這些數據都不是固定長度的,因此選用了內存映射的方法。此外,由于DLL和SYS都是對截獲的封包緩沖區進行操作,如采用全局變量則會降低模塊的獨立性,而采用內存映射正好解決了這一問題。

1 數據共享

因為 Windows2000不允許應用層的程序直接訪問系統內存的地址空間,為了在EXE,DLL和SYS之間共享內存,實現內存共享的原理是:首先用驅動程序(SYS)申請內存空間,SYS中申請的內存在系統地址空間(>=0x80000000),為了讓EXE和DLL能夠訪問這個空間,需要將系統地址空間映射到用戶地址空間(<0x80000000),具體的步驟是:

(1) 在SYS中申請內存空間,代碼如下:

SystemVirtualAddress=MmAllocateContiguousMemory(NumberOfBytes,HighestAcceptableAddress );

(2) 申請一個MDL結構,代碼如下:

Mdl = IoAllocateMdl (SystemVirtualAddress, NumberOfBytes,FALSE,FALSE, NULL);

(3) 在MDL結構中標識內存頁

①如果申請內存時使用了非分頁池(non-paged pool),使用下面的代碼:

MmBuildMdlForNonPagedPool (Mdl);

②如果申請內存時使用了分頁池(paged pool),使用下面的代碼:

MmProbeAndLockPages (Mdl, KernelMode, IoWriteAccess);

(4) 將鎖定的內存頁映射到應用層(EXE或DLL)的用戶地址空間,代碼如下:

UserVirtualAddress=MmMapLockedPages (Mdl, UserMode);

上面的4個步驟可以在DriverEntry或者DispatchRoutine中運行。

釋放內存大致是執行與上面相反的過程。步驟如下:

(1) 在用戶進程上下文環境中執行下面的代碼,解除到用戶地址空間的映射:

MmUnmapLockedPages (UserVirtualAddress, Mdl);

(2) 如果使用MmProbleAndLockPages鎖定了內存空間,使用下面的代碼解鎖:

MmUnlockPages (Mdl);

(3) 釋放MDL,代碼如下: IoFreeMdl (Mdl);

(4) 釋放系統空間,代碼如下:

MmFreeContiguousMemory (SystemVirtualAddress);

或者:ExFreePool (SystemVirtualAddress);

在上述四個步驟中,第一步必須在用戶進程上下文環境中執行,2, 3, 4步可以在DriverEntry或者DispatchRoutine中運行。

2 EXE與DLL之間的接口

NETLAB.EXE與NETLAB.DLL主要需要進行控管規則數據和封包數據的共享,另外需要一些其它輔助操作。它之間的接口函數為XfIoControl,此函數在NETLAB.DLL的TCPIPDOG.CPP模塊。

NETLAB.EXE通過LoadLibrary打開NETLAB.DLL,然后通過GetProcAddress得到XfIoControl函數的地址,以后NETLAB.EXE便通過XfIoControl函數完成與NETLAB.DLL的通信。XfIoControl支持的操作如下:

(1) 控制代碼:IO_CONTROL_SET_NETLAB_PROCESS_ID

參數含義:IoControl->DWord:進程ID

IoControl->DWord2:進程完整路徑指針

(2) 控制代碼:IO_CONTROL_SET_WORK_MODE

參數含義:IoControl->Byte:總工作模式

(3) 控制代碼:IO_CONTROL_GET_SESSION_FILE_HANDLE

參數含義:IoControl->DWord:返回封包緩沖區的地址

作用:NETLAB.EXE從NETLAB.DLL得到封包緩沖區的地址,由于內存映射文件不同進程映射的地址不同,所以此參數不能真正作為地址來用,只是用來區分NETLAB.DLL是否成功創建了封包緩沖區,等于0表示否定,大于0表示肯定。

3 SYS與DLL、EXE之間的接口

驅動程序模塊或者NETLABPCK.SYS與NETLAB.EXE和NETLAB.DLL之間主要需要進行控管規則數據、封包數據、網上鄰居名字列表等數據的共享,另外需要一些其它輔助操作。它們之間的接口函數為OnW32DeviceIoControl,此函數在NETLABPCK 的NETLABPCK.C模塊。

NETLAB.EXE通過CreateFile打開NETLABPCK.SYS,然后通過DeviceIoControl完成與NETLABPCK的通信。

Typedef struct tagIOCTLParams {

DWORD dioc_IOCtICode;

PVOID dioc_InBuf;

DWORD dioc_c_cblnBuf;

PVOID dioc_OutBuf;

DWORD dioc_c_bOutBuf;

} IOCTLPARAMS,* PIOCTLPARAMS

設備輸入輸出處理函數為OnW32Deviceiocontrol(PIOCT LPARAMS,pVtoolsD),根據pVtoolsD-> dioc_IOCtICode不同而進行不同操作,具體分為以下情況:

(1) 控制代碼:IOCTL_NETLABPCK_MALLOC_ACL_BUFFER

參數含義:

pVtoolsD->dioc_InBuf: 指向DWORD的指針,需要申請的控管規則內存空間大小。

(2) 控制代碼:IOCTL_NETLABPCK_FREE_ACL_BUFFER

作用:NETLAB.EXE通知NETLABPCK釋放為控管規則申請的內存空間。

(3)控制代碼:IOCTL_NETLABPCK_GET_BUFFER_POINT

參數含義:

pVtoolsD->dioc_dioc_OutBuf:指向 PACKET_BUFFER_POINT結構的緩沖區指針,用來返回封包緩沖區的地址、讀/寫緩沖區的索引地址和封包緩沖區能容納封包記錄的最大個數。

作用:NETLAB.EXE通過這個控制代碼,從NETLABPCK取得封包緩沖區的地址。封包緩沖區由NETLABPCK生成和維護,NETLAB.EXE負責提取信息并用來顯示、詢問、報警和保存日志。

(4) 控制代碼:IOCTL_NETLABPCK_DELETE_SPI_PORT

參數含義:

pVtoolsD->dioc_InBuf:指向WORD類型的指針,保存要刪除的SPI端口。

作用:NETLAB.DLL通過NETLABPCK刪除共享內存的端口列表。當經過NETLAB.DLL過濾的端口完成通信而釋放時,通過這個控制代碼刪除共享內存的端口列表,告訴驅動程序,這個端口已經不再被NETLAB.DLL過濾,驅動程序需要負責對這個端口進行過濾。

(5) 控制代碼:IOCTL_NETLABPCK_GET_NAME_F ROM_IP

參數含義:pVtoolsD->dioc_InBuf: 要查詢的IP地址;

pVtoolsD->dioc_OutBuf: 用來返回查詢得到的網上鄰居名字。

作用:FITLER.EXE通過這個控制代碼,從IP地址查詢得到網上鄰居的名字。

4 總結

隨著Internet技術的發展,網絡安全將會面臨更加嚴峻的挑戰。本文從技術角度出發,對防火墻內部主要模塊間的通訊技術進行了詳細的分析和介紹,希望能對不同的用戶提供參考。

[1] Keith E.Strassberg,Richard J.Gondek,Gary Rollie等著.李昂等譯.防火墻技術大全.北京:機械工業出版社.2003.

[2] Terry William Ogletree 著.李之棠等譯.防火墻的原理與實施.北京:電子工業出版社.2001.

[3] 博嘉科技.LINUX防火墻技術探秘.北京:國防工業出版社.2002.

[4] 周宏,劉克勤.新型主機防火墻模型的研究.現代電力.2003.

主站蜘蛛池模板: 99无码中文字幕视频| 亚洲中文字幕无码爆乳| 毛片手机在线看| 91色在线观看| 亚洲国产天堂在线观看| 国产91av在线| 久久伊伊香蕉综合精品| 午夜国产在线观看| 97久久人人超碰国产精品| 日本免费a视频| 四虎亚洲精品| 日韩毛片免费观看| 日本成人一区| 高清精品美女在线播放| 精品久久久久成人码免费动漫| 77777亚洲午夜久久多人| 五月激情婷婷综合| 久久久噜噜噜| 天堂亚洲网| 成人国产免费| 亚洲无限乱码一二三四区| 日韩欧美国产中文| 中文字幕啪啪| 色AV色 综合网站| 国产精品亚洲一区二区在线观看| 97亚洲色综久久精品| 亚洲91精品视频| 日本不卡在线| 亚洲成A人V欧美综合天堂| 国产精品欧美在线观看| 激情综合图区| 天堂在线视频精品| 欧美成人手机在线观看网址| 亚洲女同欧美在线| 超碰色了色| 谁有在线观看日韩亚洲最新视频| 免费精品一区二区h| 国产浮力第一页永久地址| 欧美性爱精品一区二区三区| 欧美高清视频一区二区三区| 午夜视频免费试看| 久一在线视频| 久久久久国产一区二区| 91麻豆国产视频| 天天色天天综合| 午夜精品区| 国产91导航| 一个色综合久久| 亚洲一级毛片在线观| 中文字幕乱码中文乱码51精品| 中文字幕久久精品波多野结| 日韩高清一区 | 超清无码一区二区三区| 亚洲中文字幕久久精品无码一区| 暴力调教一区二区三区| 国产亚卅精品无码| 亚洲人成网线在线播放va| 国产欧美精品一区aⅴ影院| 欧美自拍另类欧美综合图区| 大香伊人久久| 亚洲一道AV无码午夜福利| 五月婷婷亚洲综合| 曰韩人妻一区二区三区| 亚洲乱伦视频| 欧美久久网| 91精品人妻互换| 亚洲成在人线av品善网好看| 99视频国产精品| 不卡无码h在线观看| 中文字幕久久波多野结衣| 欧美色综合久久| 囯产av无码片毛片一级| 亚洲综合片| 中国国产一级毛片| 97超级碰碰碰碰精品| 亚洲男人天堂久久| 国产精品亚洲а∨天堂免下载| 国产综合在线观看视频| 波多野结衣久久高清免费| 国产精女同一区二区三区久| 激情在线网| 91午夜福利在线观看精品|