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.

主站蜘蛛池模板: 亚洲AV一二三区无码AV蜜桃| 天堂岛国av无码免费无禁网站| 免费观看三级毛片| 久久semm亚洲国产| 无码区日韩专区免费系列 | 日本午夜在线视频| 久久综合九色综合97婷婷| 国产一级精品毛片基地| 亚洲欧美日韩综合二区三区| 99在线视频免费| 国产欧美在线视频免费| 欧美激情视频在线观看一区| 久青草国产高清在线视频| 91色国产在线| 欧美午夜小视频| 中文字幕首页系列人妻| 国产精品香蕉| 亚洲国产91人成在线| 久久激情影院| 深爱婷婷激情网| 久久www视频| 伊人欧美在线| 91麻豆国产精品91久久久| 精品国产香蕉伊思人在线| 亚洲人人视频| 久草热视频在线| 老司国产精品视频| 精品久久久无码专区中文字幕| 人妻免费无码不卡视频| 九色91在线视频| 欧美黄色网站在线看| 久草视频福利在线观看| 欧美日韩中文国产| 中文字幕丝袜一区二区| 亚洲人成网站观看在线观看| 亚洲v日韩v欧美在线观看| 国产精品性| 国产欧美精品午夜在线播放| 中文字幕欧美日韩高清| 亚洲人成电影在线播放| 欧美精品啪啪一区二区三区| 91人妻日韩人妻无码专区精品| 亚洲色图欧美在线| 国产成年无码AⅤ片在线 | 国产福利小视频在线播放观看| 亚洲男人天堂2018| 欧美一区二区三区不卡免费| 亚洲精品国产自在现线最新| 亚洲成人黄色网址| 四虎影视永久在线精品| 中文字幕在线日本| 国产高清毛片| 国产午夜精品一区二区三| 夜夜爽免费视频| 九色综合视频网| 国产精品片在线观看手机版| 四虎永久免费地址在线网站 | 在线va视频| 日韩国产精品无码一区二区三区| 四虎亚洲国产成人久久精品| 亚洲综合色婷婷中文字幕| 日韩在线成年视频人网站观看| 波多野结衣在线se| 国产日产欧美精品| 国内精品久久人妻无码大片高| 欧美三級片黃色三級片黃色1| 污视频日本| 在线观看无码a∨| 亚洲欧美一区二区三区蜜芽| 三上悠亚精品二区在线观看| 日日碰狠狠添天天爽| 美女被躁出白浆视频播放| 黄色网址免费在线| 999国产精品永久免费视频精品久久| 欧美另类一区| 四虎成人在线视频| 免费不卡视频| 国产午夜精品一区二区三| 成人毛片在线播放| 色欲不卡无码一区二区| 亚洲资源站av无码网址| 无码专区在线观看|