国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

網(wǎng)絡(luò)安全編程:目錄監(jiān)控工具

安全
本文介紹通過ReadDirectoryChangesW()來編寫一個(gè)監(jiān)視目錄變化的程序。

 [[406308]]

本文介紹通過ReadDirectoryChangesW()來編寫一個(gè)監(jiān)視目錄變化的程序。

對目錄及目錄中的文件實(shí)時(shí)監(jiān)控,可以有效地發(fā)現(xiàn)文件被改動(dòng)的情況。就好像在本地安裝IIS服務(wù)器,并搭建一個(gè)網(wǎng)站平臺(tái),有時(shí)候會(huì)遭到黑客的篡改,而程序員無法及時(shí)地恢復(fù)被篡改的頁面,導(dǎo)致出現(xiàn)了非常不好的影響。如果能及時(shí)地發(fā)現(xiàn)網(wǎng)頁被篡改,并及時(shí)地恢復(fù)本來的頁面就好了,那么該如何做呢?

下面通過一個(gè)簡單的例子來介紹如何監(jiān)控某目錄及目錄下文件的變動(dòng)情況。首先需要了解的函數(shù)為ReadDirectoryChangesW(),其定義如下: 

  1. BOOL ReadDirectoryChangesW(  
  2.  HANDLE hDirectory,  
  3.  LPVOID lpBuffer,  
  4.  DWORD nBufferLength,  
  5.  BOOL bWatchSubtree,  
  6.  DWORD dwNotifyFilter,  
  7.  LPDWORD lpBytesReturned,  
  8.  LPOVERLAPPED lpOverlapped,  
  9.  LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine  
  10. ); 

參數(shù)說明如下。

hDirectory:該參數(shù)指向一個(gè)要監(jiān)視目錄的句柄。該目錄需要用 FILE_LIST_DIRECTORY的訪問權(quán)限打開。

lpBuffer:該參數(shù)指向一個(gè)內(nèi)存的緩沖區(qū),它用來存放返回的結(jié)果。結(jié)果為一個(gè) FILE_NOTIFY_INFORMATION 的數(shù)據(jù)結(jié)構(gòu)。

nBufferLength:表示緩沖區(qū)的大小。

bWatchSubtree:該參數(shù)為 TRUE 時(shí),表示監(jiān)視指定目錄下的文件及子目錄下的文件操作。如果該參數(shù)為 FALSE,則只監(jiān)視指定目錄下的文件,不包含子目錄下的文件。

dwNotifyFilter:該參數(shù)指定要返回何種文件變更后的類型,該參數(shù)的常量值參見 MSDN。

lpBytesReturned:該參數(shù)返回傳給 lpBuffer 結(jié)果的字節(jié)數(shù)。

lpOverlapped:該參數(shù)執(zhí)行一個(gè) OVERLAPPED 結(jié)構(gòu)體,該結(jié)構(gòu)體用于異步操作,否則該數(shù)據(jù)為 NULL。

ReadDirectoryChangesW()函數(shù)的使用非常簡單,下面通過一個(gè)例子介紹其使用。該例子是對E盤目錄進(jìn)行監(jiān)控,將程序編寫完成后對E盤進(jìn)行簡單的文件操作,以觀察程序的輸出結(jié)構(gòu)。完整的代碼如下: 

  1. #include <windows.h>  
  2. #include <stdio.h>  
  3. extern "C"  
  4. BOOL  
  5. WINAPI  
  6. ReadDirectoryChangesW(  
  7.   __in HANDLE hDirectory,  
  8.   __out_bcount_part(nBufferLength, *lpBytesReturned) LPVOIDlpBuffer,  
  9.   __in DWORD nBufferLength,  
  10.   __in BOOL bWatchSubtree,  
  11.   __in DWORD dwNotifyFilter,  
  12.   __out LPDWORD lpBytesReturned,  
  13.   __inout LPOVERLAPPED lpOverlapped,  
  14.   __in_opt LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine  
  15.  ); 
  16. DWORD WINAPI ThreadProc(LPVOID lpParam)  
  17.  
  18.   BOOL bRet = FALSE 
  19.   BYTE Buffer[1024] = { 0 };  
  20.   FILE_NOTIFY_INFORMATION *pBuffer = (FILE_NOTIFY_INFORMATION *)Buffer;  
  21.   DWORD BytesReturned = 0 
  22.   HANDLE hFile = CreateFile("e:\\",  
  23.     FILE_LIST_DIRECTORY,  
  24.     FILE_SHARE_READ|FILE_SHARE_DELETE|FILE_SHARE_WRITE,  
  25.     NULL,OPEN_EXISTING,FILE_FLAG_BACKUP_SEMANTICS,NULL);  
  26.   if ( INVALID_HANDLE_VALUE == hFile )  
  27.   {  
  28.     return 1;  
  29.   }  
  30.   printf("monitor... \r\n");  
  31.   while ( TRUE )  
  32.   {  
  33.     ZeroMemory(Buffer, 1024);  
  34.     bRet = ReadDirectoryChangesW(hFile,&Buffer,sizeof(Buffer),TRUE,  
  35.       FILE_NOTIFY_CHANGE_FILE_NAME | // 修改文件名  
  36.       FILE_NOTIFY_CHANGE_ATTRIBUTES | // 修改文件屬性  
  37.       FILE_NOTIFY_CHANGE_LAST_WRITE , // 最后一次寫入  
  38.       &BytesReturned,NULL, NULL);  
  39.     if ( bRet == TRUE )  
  40.     {  
  41.       char szFileName[MAX_PATH] = { 0 };  
  42.       // 寬字符轉(zhuǎn)換多字節(jié)  
  43.       WideCharToMultiByte(CP_ACP,0,pBuffer->FileName,  
  44.         pBuffer->FileNameLength / 2,szFileName,  
  45.         MAX_PATH,NULL,NULL);  
  46.       switch(pBuffer->Action)  
  47.       {  
  48.         // 添加  
  49.         case FILE_ACTION_ADDED:  
  50.           {  
  51.             printf("添加 : %s\r\n", szFileName);  
  52.             break;  
  53.           }  
  54.           // 刪除  
  55.         case FILE_ACTION_REMOVED:  
  56.           {  
  57.             printf("刪除 : %s\r\n", szFileName); 
  58.             break;  
  59.           }  
  60.           // 修改  
  61.         case FILE_ACTION_MODIFIED:  
  62.           {  
  63.             printf("修改 : %s\r\n", szFileName);  
  64.             break; 
  65.           }  
  66.           // 重命名 
  67.          case FILE_ACTION_RENAMED_OLD_NAME:  
  68.           {  
  69.             printf("重命名 : %s", szFileName);  
  70.             if ( pBuffer->NextEntryOffset != 0 )  
  71.             {  
  72.               FILE_NOTIFY_INFORMATION *tmpBuffer = (FILE_NOTIFY_INFORMATION *)  
  73.                 ((DWORD)pBuffer + pBuffer->NextEntryOffset);  
  74.               switch ( tmpBuffer->Action )  
  75.               {  
  76.               case FILE_ACTION_RENAMED_NEW_NAME:  
  77.                 {  
  78.                   ZeroMemory(szFileName, MAX_PATH);  
  79.                   WideCharToMultiByte(CP_ACP,0,  
  80.                     tmpBuffer->FileName,tmpBuffer->FileNameLength / 2,  
  81.                     szFileName,MAX_PATH,NULL,NULL);  
  82.                   printf(" -> : %s \r\n", szFileName);  
  83.                   break;  
  84.                 }  
  85.               }  
  86.             }  
  87.             break;  
  88.           }  
  89.         case FILE_ACTION_RENAMED_NEW_NAME:  
  90.           {  
  91.             printf("重命名(new) : %s\r\n", szFileName);  
  92.           }  
  93.         }  
  94.       }  
  95.     }  
  96.     CloseHandle(hFile);  
  97.     return 0;  
  98.  
  99. int main(int argc, char* argv[])  
  100.  
  101.   HANDLE hThread = CreateThread(NULL, 0, ThreadProc, NULL, 0, NULL);  
  102.   if ( hThread == NULL )  
  103.   {  
  104.     return -1;  
  105.   }  
  106.   WaitForSingleObject(hThread, INFINITE);  
  107.   CloseHandle(hThread);  
  108.   return 0;  

將程序編譯連接并運(yùn)行,在E盤下進(jìn)行簡單的操作,查看程序?qū)盤的監(jiān)視輸出記錄,如圖1所示。

圖1  目錄監(jiān)控輸出記錄

對于目錄監(jiān)視的這個(gè)例子,可以將其改為一個(gè)簡單的文件防篡改程序。首先將要監(jiān)視的文件目錄進(jìn)行備份,然后對文件目錄進(jìn)行監(jiān)視,如果有文件發(fā)生了修改,那么就使用備份目錄下的指定文件恢復(fù)被修改的文件。 

 

責(zé)任編輯:龐桂玉 來源: 計(jì)算機(jī)與網(wǎng)絡(luò)安全
相關(guān)推薦

2021-03-03 12:20:42

網(wǎng)絡(luò)安全DLL編程

2021-06-11 13:40:17

網(wǎng)絡(luò)安全專殺工具病毒

2021-04-26 10:32:38

網(wǎng)絡(luò)安全PE編程工具

2021-03-05 13:46:56

網(wǎng)絡(luò)安全遠(yuǎn)程線程

2021-01-26 13:45:03

網(wǎng)絡(luò)安全Winsock編程

2021-03-31 11:35:00

網(wǎng)絡(luò)安全OllyDbg分析工具

2021-02-23 10:20:07

網(wǎng)絡(luò)安全進(jìn)程代碼

2021-02-21 18:19:43

網(wǎng)絡(luò)安全網(wǎng)絡(luò)安全編程創(chuàng)建進(jìn)程

2016-10-10 00:18:27

2021-05-14 12:10:19

網(wǎng)絡(luò)安全KeyMake注冊機(jī)

2009-09-28 09:42:17

2011-03-17 13:32:45

2021-05-12 14:57:13

網(wǎng)絡(luò)安全密碼代碼

2021-04-19 10:26:41

網(wǎng)絡(luò)安全PE文件

2021-06-15 11:16:24

網(wǎng)絡(luò)安全U盤軟件

2021-02-04 10:50:11

網(wǎng)絡(luò)安全非阻塞模Winsock編程

2021-06-24 08:37:34

網(wǎng)絡(luò)安全內(nèi)核代碼

2021-05-24 11:55:55

網(wǎng)絡(luò)安全Windows鉤子函數(shù)

2021-03-01 11:20:13

網(wǎng)絡(luò)安全多線程代碼

2021-01-18 10:35:18

網(wǎng)絡(luò)安全Windows代碼
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

色综合视频一区中文字幕| 日韩视频在线观看一区二区| 欧美激情性做爰免费视频| 日本三级免费观看| 成人看的羞羞网站| 日韩理论片久久| 婷婷亚洲天堂| 久久精品久久综合| 欧美中日韩免费视频| 蜜臀av免费一区二区三区| 亚洲激情视频在线观看| 国产小黄视频| 中文字幕日韩高清在线| 日韩av网站电影| 香蕉成人app免费看片| 欧美剧情电影在线观看完整版免费励志电影 | 日韩成人免费看| 国产一区二区在线观看免费播放| 日韩av自拍| 国产成人精彩在线视频九色| 免费一区二区| 国产精品丝袜视频| 欧美日韩精品在线一区| 国产精品美女www爽爽爽视频| 欧美男同视频网| 国产精品电影网| 久久在线视频| 国产免费一区二区| 米奇777在线欧美播放| 亚洲在线欧美| 成人毛片老司机大片| 久久精品国产精品亚洲色婷婷| 91捆绑美女网站| 制服影音先锋| 一本色道**综合亚洲精品蜜桃冫| 久久99精品久久| 亚洲精品美女免费| 欧洲精品久久久久毛片完整版| 久久天堂电影网| 亚洲另类av| 国产91免费视频| 理论电影国产精品| 国产一区二区在线视频播放| 亚洲欧美日韩国产一区二区三区| 亚洲日本高清| 亚洲国产欧美一区| 国产91精品入| 成人免费视频视频在| 日韩国产一区二| 黄色大片中文字幕| 亚洲午夜精品久久久久久久久| 日本亚洲精品| 俺去啦;欧美日韩| 成人在线免费观看91| 青青草原亚洲| www.久久久久久久久| 蜜芽视频在线观看| 精品盗摄一区二区三区| 日韩欧美一级| 久久国产主播精品| 国产欧美日韩综合精品一区二区| 欧美日韩激情视频一区二区三区| 日韩电影中文字幕在线观看| 美女呻吟一区| 欧美性大战久久久久| 欧美国产精品v| 免费在线你懂的| 国内成人精品一区| 先锋影音久久久| 91精品无人成人www| 欧美一区二区三区影视| 久久精品一级| 欧美日本国产精品| 亚洲欧美激情在线| 日韩脚交footjobhdboots| 国产91在线高潮白浆在线观看| 久久一区激情| а√天堂www在线а√天堂视频| 亚洲精品国产福利| 久久国产电影| 国产精品亚洲二区在线观看| 欧美精品久久99久久在免费线| 国产精品主播在线观看| 亚洲精品一卡二卡三卡四卡| 亚洲mv大片欧洲mv大片精品| 国产福利一区二区三区在线播放| 好看的日韩精品视频在线| 1区2区3区欧美| 欧美男女交配| 欧美成人综合一区| 五月天视频一区| 亚洲一区 二区| 综合久久国产| 欧美喷潮久久久xxxxx| 色婷婷狠狠五月综合天色拍| 日韩激情视频一区二区| 欧美一区二区福利在线| 欧美激情国产在线| 黄页在线免费看| 久久这里有精品| 国内精品自线一区二区三区视频| 最近高清中文在线字幕在线观看| 国产成+人+综合+亚洲欧洲| 成人黄色av网站在线| 天堂av最新在线| 国产视色精品亚洲一区二区| 一区二区三区在线观看动漫| 91综合久久爱com| 亚洲熟妇无码另类久久久| 亚洲大胆人体av| 久久久国产亚洲精品| 风间由美一区| 亚洲a一级视频| 天天综合色天天综合| 免费成人av| 大香一本蕉伊线亚洲网| 欧美福利视频在线| 久久久综合九色合综国产精品| 成人国产精品入口免费视频| 欧美中日韩在线| 中文字幕日韩精品有码视频| 国产激情一区二区三区桃花岛亚洲| 污视频网站在线免费| 欧美中日韩免费视频| 欧美大胆人体bbbb| 久久精品女人| brazzers在线观看| 伊人久久av导航| 亚洲高清在线观看| 国产毛片一区二区| 新版的欧美在线视频| 色中文字幕在线观看| 亚洲精品少妇网址| 国产成+人+日韩+欧美+亚洲| 搜成人激情视频| 免费在线观看毛片网站| 久久免费视频在线| 亚洲一区二区四区蜜桃| 日韩aaaa| 丝袜美腿美女被狂躁在线观看| 99国产在线视频| 欧美精品日日鲁夜夜添| 免费成人小视频| 超碰aⅴ人人做人人爽欧美| 国产69精品久久久久999小说| 久久亚洲精品视频| 亚洲人成精品久久久久久| 国产高清久久| 免费在线看a| 亚洲一区二区四区| www.亚洲一区| 一区二区三区视频在线看| 中文字幕一区二区三三| 欧美三级电影一区二区三区| 日韩最新中文字幕| 欧美大片欧美激情性色a∨久久| 亚洲欧美日本在线| 亚洲婷婷在线| 亚洲第一二三四区| 性欧美videossex精品| 国产精品美女久久| 日韩一区二区三区视频| 成人久久视频在线观看| 亚洲精品中文字幕99999| 77777影视视频在线观看| 中文字幕黄色大片| 高清欧美性猛交xxxx黑人猛交| 精品久久久久久亚洲国产300| 日韩国产欧美在线播放| 日韩免费大片| 手机看片福利在线观看| 99亚洲精品视频| 亚州欧美日韩中文视频| 色成年激情久久综合| 国产成人在线观看免费网站| 老牛影视av一区二区在线观看| 天堂av在线资源| 男人日女人的bb| 国产精品白嫩初高中害羞小美女| 日韩一卡二卡三卡四卡| 久久免费美女视频| 亚洲天堂激情| 亚洲欧洲日韩精品在线| 国产一区二区影视| 青青青免费在线| 99久久自偷自偷国产精品不卡| 日韩精品福利网站| 亚洲一级不卡视频| 国产成人在线网站| 欧美视频亚洲视频| 这里视频有精品| av电影院在线看| 最新av在线| 亚洲爆乳无码专区| 欧美精彩一区二区三区| 午夜精品99久久免费| 亚洲а∨天堂久久精品9966| 亚洲线精品一区二区三区| 国产成人午夜精品影院观看视频| 亚洲综合色站|