⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filterwnd.c

📁 一文件过滤与加密,系统监视以及控制的东东,自己看
💻 C
📖 第 1 页 / 共 3 页
字号:
      ImageList_AddIcon (hImageList, LoadIcon(g_hInstance, MAKEINTRESOURCE(IDI_REASON_NET_LISTEN))) ;      ImageList_AddIcon (hImageList, LoadIcon(g_hInstance, MAKEINTRESOURCE(IDI_REASON_NET_CONNECT))) ;      ImageList_AddIcon (hImageList, LoadIcon(g_hInstance, MAKEINTRESOURCE(IDI_REASON_REG_SETVALUE))) ;      ImageList_AddIcon (hImageList, LoadIcon(g_hInstance, MAKEINTRESOURCE(IDI_REASON_REG_QUERYVALUE))) ;      ImageList_AddIcon (hImageList, LoadIcon(g_hInstance, MAKEINTRESOURCE(IDI_REASON_SYS_EXECUTE))) ;      ImageList_AddIcon (hImageList, LoadIcon(g_hInstance, MAKEINTRESOURCE(IDI_REASON_SYS_KILLPROCESS))) ;      ListView_SetImageList (g_hwndRules, hImageList, LVSIL_SMALL) ;      // menus will be created by WM_LANGUAGECHANGED      g_hmenuRules = NULL ;      g_hmenuPrograms = NULL ;      //      // create columns in list view controls      //      ZeroMemory (&lvc, sizeof(lvc)) ;      lvc.mask		= LVCF_TEXT|LVCF_WIDTH|LVCF_SUBITEM ;      lvc.pszText	= TEXT("") ;      lvc.cx		= 800 ;      lvc.iSubItem	= COL_PROGRAM ;      ListView_InsertColumn (g_hwndPrograms, lvc.iSubItem, &lvc) ;             lvc.cx		= 80 ;      lvc.iSubItem	= COL_REASON   ;      ListView_InsertColumn (g_hwndRules, lvc.iSubItem, &lvc) ;             lvc.cx		= 200 ;      lvc.iSubItem	= COL_PARAM1 ;      ListView_InsertColumn (g_hwndRules, lvc.iSubItem, &lvc) ;       lvc.cx		= 100 ;      lvc.iSubItem	= COL_PARAM2 ;      ListView_InsertColumn (g_hwndRules, lvc.iSubItem, &lvc) ;             lvc.cx		= 180 ;      lvc.iSubItem	= COL_REACTION ;      ListView_InsertColumn (g_hwndRules, lvc.iSubItem, &lvc) ;       lvc.cx		= 150 ;      lvc.iSubItem	= COL_VERBOSITY ;      ListView_InsertColumn (g_hwndRules, lvc.iSubItem, &lvc) ;       lvc.cx		= 100 ;      lvc.iSubItem	= COL_OPTIONS ;            ListView_InsertColumn (g_hwndRules, lvc.iSubItem, &lvc) ;               g_hfltCurrent = FilterSet_GetDefaultFilter (SpySrv_GetFilterSet()) ;      g_pCurRule = NULL ;      //      // Create imagelist for tool bars      //      hImageList = ImageList_Create (32,32,ILC_COLOR32|ILC_MASK,6,4) ;      ImageList_AddIcon (hImageList, LoadIcon(g_hInstance, MAKEINTRESOURCE(IDI_TOOL_ADD))) ;      ImageList_AddIcon (hImageList, LoadIcon(g_hInstance, MAKEINTRESOURCE(IDI_TOOL_EDIT))) ;      ImageList_AddIcon (hImageList, LoadIcon(g_hInstance, MAKEINTRESOURCE(IDI_TOOL_REMOVE))) ;      ImageList_AddIcon (hImageList, LoadIcon(g_hInstance, MAKEINTRESOURCE(IDI_TOOL_UP))) ;      ImageList_AddIcon (hImageList, LoadIcon(g_hInstance, MAKEINTRESOURCE(IDI_TOOL_DOWN))) ;      //      // Add buttons to program tool-bar      //      // set image list      SendMessage (g_hwndProgTools, TB_SETIMAGELIST, 0, (LPARAM)hImageList) ;            tbb.fsState	= TBSTATE_ENABLED ;      tbb.fsStyle	= TBSTYLE_BUTTON ;      tbb.iString	= 0 ;      tbb.iBitmap	= 0 ;      tbb.idCommand	= IDM_PROGRAM_ADD ;      SendMessage (g_hwndProgTools, TB_ADDBUTTONS, 1, (LPARAM)&tbb) ;        tbb.iBitmap	= 1 ;      tbb.idCommand	= IDM_PROGRAM_EDIT ;      SendMessage (g_hwndProgTools, TB_ADDBUTTONS, 1, (LPARAM)&tbb) ;                tbb.iBitmap	= 2 ;      tbb.idCommand	= IDM_PROGRAM_REMOVE ;      SendMessage (g_hwndProgTools, TB_ADDBUTTONS, 1, (LPARAM)&tbb) ;         //      // Add buttons to program tool-bar      //      // set image list      SendMessage (g_hwndRulesTools, TB_SETIMAGELIST, 0, (LPARAM)hImageList) ;            tbb.fsState	= TBSTATE_ENABLED ;      tbb.fsStyle	= TBSTYLE_BUTTON ;      tbb.iString	= 0 ;      tbb.iBitmap	= 0 ;      tbb.idCommand	= IDM_RULE_ADD ;      SendMessage (g_hwndRulesTools, TB_ADDBUTTONS, 1, (LPARAM)&tbb) ;        tbb.iBitmap	= 1 ;      tbb.idCommand	= IDM_RULE_EDIT ;      SendMessage (g_hwndRulesTools, TB_ADDBUTTONS, 1, (LPARAM)&tbb) ;                tbb.iBitmap	= 2 ;      tbb.idCommand	= IDM_RULE_REMOVE ;      SendMessage (g_hwndRulesTools, TB_ADDBUTTONS, 1, (LPARAM)&tbb) ;           tbb.iBitmap	= 3 ;      tbb.idCommand	= IDM_RULE_UP ;      SendMessage (g_hwndRulesTools, TB_ADDBUTTONS, 1, (LPARAM)&tbb) ;          tbb.iBitmap	= 4 ;      tbb.idCommand	= IDM_RULE_DOWN ;      SendMessage (g_hwndRulesTools, TB_ADDBUTTONS, 1, (LPARAM)&tbb) ;        SendMessage (hwnd, WM_LANGUAGECHANGED, 0, 0) ;      return 0 ; // case WM_CREATE:    case WM_DESTROY:       // destroy toolbar's image list      hImageList = (HIMAGELIST) SendMessage (g_hwndProgTools, TB_GETIMAGELIST, 0, 0) ;      ImageList_Destroy (hImageList) ;      // destroy menus      DestroyMenu (g_hmenuPrograms) ;      DestroyMenu (g_hmenuRules) ;      return 0 ; // case WM_DESTROY:             case WM_SIZE:      nWidth = LOWORD (lParam) ;      nHeight = HIWORD (lParam) ;      MoveWindow (g_hwndProgTools, nWidth-CX_TOOLBAR, 0, CX_TOOLBAR, nHeight/3-CY_RADIOBTN, TRUE) ;      MoveWindow (g_hwndPrograms, 0, 0, nWidth-CX_TOOLBAR, nHeight/3-CY_RADIOBTN, TRUE) ;      MoveWindow (g_hwndEnableHook, 0, nHeight/3-CY_RADIOBTN, nWidth, CY_RADIOBTN, TRUE) ;      MoveWindow (g_hwndDisableHook, 0, nHeight/3, nWidth, CY_RADIOBTN, TRUE) ;      MoveWindow (g_hwndRulesTools, nWidth-CX_TOOLBAR, nHeight/3+CY_RADIOBTN, CX_TOOLBAR, 2*nHeight/3-CY_RADIOBTN, TRUE) ;      MoveWindow (g_hwndRules, 0, nHeight/3+CY_RADIOBTN, nWidth-CX_TOOLBAR, 2*nHeight/3-CY_RADIOBTN, TRUE) ;      return 0 ;    case WM_LANGUAGECHANGED:              //       // Set text of columns      //      ZeroMemory (&lvc, sizeof(lvc)) ;      lvc.mask		= LVCF_TEXT ;            lvc.pszText	= (LPTSTR) STR_DEF(_PROGRAM,TEXT("Program")) ;      ListView_SetColumn (g_hwndPrograms, COL_PROGRAM, &lvc) ;       lvc.pszText	= (LPTSTR) STR_DEF (_REASON,TEXT("Function")) ;      ListView_SetColumn (g_hwndRules, COL_REASON, &lvc) ;       lvc.pszText	= szBuffer ;      wsprintf (szBuffer, TEXT("%s 1"), STR_DEF(_PARAM,TEXT("Param"))) ; ;      ListView_SetColumn (g_hwndRules, COL_PARAM1, &lvc) ;           lvc.pszText	= szBuffer ;      wsprintf (szBuffer, TEXT("%s 2"), STR_DEF(_PARAM,TEXT("Param"))) ; ;      ListView_SetColumn (g_hwndRules, COL_PARAM2, &lvc) ;        lvc.pszText	= (LPTSTR) STR_DEF (_REACTION, TEXT("Reaction")) ;      ListView_SetColumn (g_hwndRules, COL_REACTION, &lvc) ;      lvc.pszText	= (LPTSTR) STR_DEF (_VERBOSITY,TEXT("Verbosity")) ;      ListView_SetColumn (g_hwndRules, COL_VERBOSITY, &lvc) ;            lvc.pszText	= (LPTSTR) STR_DEF (_OPTIONS,TEXT("Options")) ;      ListView_SetColumn (g_hwndRules, COL_OPTIONS, &lvc) ;            // create process menu      DestroyMenu (g_hmenuPrograms) ;      g_hmenuPrograms = CreatePopupMenu () ;      AppendMenu (g_hmenuPrograms, MF_STRING|MF_GRAYED, 0, 		  STR_DEF(_PROGRAM_MENU,TEXT("Program menu"))) ;      AppendMenu (g_hmenuPrograms, MF_SEPARATOR, 0, NULL) ;      AppendMenu (g_hmenuPrograms, MF_STRING, IDM_PROGRAM_ADD, 		  STR_DEF(_ADD_PROGRAM,g_szAddProgram)) ;      AppendMenu (g_hmenuPrograms, MF_STRING, IDM_PROGRAM_EDIT, 		  STR_DEF(_EDIT_PROGRAM,g_szEditProgram)) ;      AppendMenu (g_hmenuPrograms, MF_STRING, IDM_PROGRAM_REMOVE,		  STR_DEF(_REMOVE_PROGRAM,g_szRemoveProgram)) ;          // create rule menu      DestroyMenu (g_hmenuRules) ;      g_hmenuRules = CreatePopupMenu () ;      AppendMenu (g_hmenuRules, MF_STRING|MF_GRAYED, 0, 		  STR_DEF(_FILTER_MENU, TEXT ("Filter menu"))) ;      AppendMenu (g_hmenuRules, MF_SEPARATOR, 0, NULL) ;      AppendMenu (g_hmenuRules, MF_STRING, IDM_RULE_ADD, 		  STR_DEF(_ADD_RULE,g_szAddRule)) ;      AppendMenu (g_hmenuRules, MF_STRING, IDM_RULE_EDIT, 		  STR_DEF(_EDIT_RULE, g_szEditRule)) ;      AppendMenu (g_hmenuRules, MF_STRING, IDM_RULE_REMOVE, 		  STR_DEF(_REMOVE_RULE, g_szRemoveProgram)) ;      AppendMenu (g_hmenuRules, MF_SEPARATOR, 0, NULL) ;      AppendMenu (g_hmenuRules, MF_STRING, IDM_RULE_UP, 		  STR_DEF(_MOVE_UP_RULE, g_szMoveUpRule)) ;      AppendMenu (g_hmenuRules, MF_STRING, IDM_RULE_DOWN, 		  STR_DEF(_MOVE_DOWN_RULE, g_szMoveDownRule)) ;      // check boxes      SetWindowText (g_hwndEnableHook, STR_DEF(_HOOK_THIS_PROGRAM,					       TEXT("Hook this program"))) ;      SetWindowText (g_hwndDisableHook, STR_DEF(_DONT_HOOK_THIS_PROGRAM,						TEXT("Don't hook this program"))) ;            PostMessage (hwnd, WM_UPDATEFILTERS, 0, 0) ;      return 0 ;    case WM_UPDATEFILTERS :          case WM_UPDATEPROGRAMLIST:      {	UINT		i ;	HFILTERSET	hFilterSet ;	LV_ITEM		lvi ;		DWORD		dwThreadId ;	HANDLE		hThread ;		ListView_DeleteAllItems (g_hwndPrograms) ;	hFilterSet = SpySrv_GetFilterSet () ;		for( i=0 ; i<FilterSet_GetFilterCount(hFilterSet) ; i++ )	  {	    HFILTER hFilter = FilterSet_GetFilterByNum(hFilterSet,i) ;	    ZeroMemory (&lvi, sizeof(lvi)) ;	    lvi.mask = LVIF_TEXT|LVIF_STATE|LVIF_IMAGE|LVIF_PARAM ;	    lvi.lParam = (LPARAM)hFilter ;	    lvi.iItem = i ;	    lvi.iImage = -1 ;	    lvi.state = hFilter==g_hfltCurrent ? LVIS_SELECTED|LVIS_FOCUSED : 0 ;	    lvi.stateMask = LVIS_SELECTED|LVIS_FOCUSED ;	    lvi.pszText = (TCHAR*)Filter_GetProgram(hFilter) ;	    ListView_InsertItem (g_hwndPrograms, &lvi) ;	    if( hFilter==g_hfltCurrent )	      ListView_EnsureVisible (g_hwndPrograms, i, FALSE) ;	  }	hThread = CreateThread (NULL, 0, _FilterWnd_UpdateIconThread,					   g_hwndPrograms, 0, &dwThreadId) ;		CloseHandle (hThread) ;	SendMessage (hwnd, WM_UPDATERULELIST, 0, 0) ;      }      return 0 ;          case WM_UPDATERULELIST: // ======== Update the "rule" list ========      {	LVFINDINFO	lvfi ;	LVITEM		lvi ;	int		iItem ;      	ListView_DeleteAllItems (g_hwndRules) ;       		if( ! g_hfltCurrent ) 	  {	    EnableWindow (g_hwndEnableHook, FALSE) ;	    EnableWindow (g_hwndDisableHook, FALSE) ;	    EnableWindow (g_hwndRules, FALSE) ;	    // disable rule buttons	    SendMessage (g_hwndRulesTools, TB_ENABLEBUTTON, IDM_RULE_ADD, MAKELONG(FALSE,0)) ;	    SendMessage (g_hwndRulesTools, TB_ENABLEBUTTON, IDM_RULE_EDIT, MAKELONG(FALSE,0)) ;	    SendMessage (g_hwndRulesTools, TB_ENABLEBUTTON, IDM_RULE_REMOVE, MAKELONG(FALSE,0)) ;	    SendMessage (g_hwndRulesTools, TB_ENABLEBUTTON, IDM_RULE_UP, MAKELONG(FALSE,0)) ;	    SendMessage (g_hwndRulesTools, TB_ENABLEBUTTON, IDM_RULE_DOWN, MAKELONG(FALSE,0)) ;	  }	else if( Filter_IsHookEnabled(g_hfltCurrent) ) 	  {	    EnableWindow (g_hwndEnableHook, FALSE) ;	    EnableWindow (g_hwndDisableHook, FALSE) ;	    EnableWindow (g_hwndRules, TRUE) ;	    	    // enable rule buttons	    SendMessage (g_hwndRulesTools, TB_ENABLEBUTTON, IDM_RULE_ADD, MAKELONG(TRUE,0)) ;	    if( g_pCurRule ) {	      SendMessage (g_hwndRulesTools, TB_ENABLEBUTTON, IDM_RULE_EDIT, MAKELONG(TRUE,0)) ;	      SendMessage (g_hwndRulesTools, TB_ENABLEBUTTON, IDM_RULE_REMOVE, MAKELONG(TRUE,0)) ;	      SendMessage (g_hwndRulesTools, TB_ENABLEBUTTON, IDM_RULE_UP, 			   MAKELONG(Filter_CanMoveUpRule(g_hfltCurrent,g_pCurRule),0)) ;	      SendMessage (g_hwndRulesTools, TB_ENABLEBUTTON, IDM_RULE_DOWN, 			   MAKELONG(Filter_CanMoveDownRule(g_hfltCurrent,g_pCurRule),0)) ;	    }	    else {	    SendMessage (g_hwndRulesTools, TB_ENABLEBUTTON, IDM_RULE_EDIT, MAKELONG(FALSE,0)) ;	    SendMessage (g_hwndRulesTools, TB_ENABLEBUTTON, IDM_RULE_REMOVE, MAKELONG(FALSE,0)) ;	    SendMessage (g_hwndRulesTools, TB_ENABLEBUTTON, IDM_RULE_UP, MAKELONG(FALSE,0)) ;	    SendMessage (g_hwndRulesTools, TB_ENABLEBUTTON, IDM_RULE_DOWN, MAKELONG(FALSE,0)) ;	      	    }	    	    SendMessage (g_hwndEnableHook, BM_SETCHECK, BST_CHECKED, 0) ;	    SendMessage (g_hwndDisableHook, BM_SETCHECK, BST_UNCHECKED, 0) ;	    	    Filter_EnumRules (g_hfltCurrent, _FilterWnd_EnumRulesCallback, g_hwndRules) ;	  }	else	  {	    EnableWindow (g_hwndEnableHook, FALSE) ;	    EnableWindow (g_hwndDisableHook, FALSE) ;	    EnableWindow (g_hwndRules, FALSE) ;	    	    // disable rule buttons	    SendMessage (g_hwndRulesTools, TB_ENABLEBUTTON, IDM_RULE_ADD, MAKELONG(FALSE,0)) ;	    SendMessage (g_hwndRulesTools, TB_ENABLEBUTTON, IDM_RULE_EDIT, MAKELONG(FALSE,0)) ;	    SendMessage (g_hwndRulesTools, TB_ENABLEBUTTON, IDM_RULE_REMOVE, MAKELONG(FALSE,0)) ;	    SendMessage (g_hwndRulesTools, TB_ENABLEBUTTON, IDM_RULE_UP, MAKELONG(FALSE,0)) ;	    SendMessage (g_hwndRulesTools, TB_ENABLEBUTTON, IDM_RULE_DOWN, MAKELONG(FALSE,0)) ;	    	    SendMessage (g_hwndEnableHook, BM_SETCHECK, BST_UNCHECKED, 0) ;	    SendMessage (g_hwndDisableHook, BM_SETCHECK, BST_CHECKED, 0) ;	  }	// search selected item	lvfi.flags = LVFI_PARAM ;	lvfi.lParam = (LPARAM) g_pCurRule ;	iItem = ListView_FindItem (g_hwndRules, -1, &lvfi) ;		// set selection	ZeroMemory (&lvi, sizeof(lvi)) ;  // <- useful ?	lvi.mask	= LVIF_STATE ;	lvi.iItem	= iItem ;	lvi.iSubItem	= 0 ;	lvi.stateMask	= LVIS_SELECTED ;	lvi.state	= LVIS_SELECTED ;	ListView_SetItem (g_hwndRules, &lvi) ;	ListView_EnsureVisible (g_hwndRules, iItem, FALSE) ;      }      return 0 ; // ======== Update the "rule" list ========    case WM_COMMAND:      switch( LOWORD(wParam))	{	case IDM_PROGRAM_ADD:	  szBuffer[0] = 0 ;	  if( IDOK==DialogBoxParam(g_hInstance, MAKEINTRESOURCE(DLG_PROGPATH), 				   hwnd, ProgPathDlg_DlgProc, (LPARAM)szBuffer) )	    {	      hFilterSet = SpySrv_GetFilterSet () ;	      g_hfltCurrent = Filter_Create (szBuffer) ;	      SpySrv_LockFilterSet () ;	      FilterSet_AddFilter (hFilterSet, g_hfltCurrent) ;	      SpySrv_SendFilterSetToDriver () ;	      SpySrv_UnlockFilterSet () ;	      SendMessage (hwnd, WM_UPDATEPROGRAMLIST, 0, 0) ;	      SendMessage (hwnd, WM_UPDATERULELIST, 0, 0) ;	    }	  return 0 ; // case IDM_PROGRAM_ADD:	case IDM_PROGRAM_EDIT: //  ======== "Edit" command on program list ========	  {	    // is command allowed ?	    if( !g_hfltCurrent || Filter_GetProtected(g_hfltCurrent) ) 	      return 0 ;	    	    szBuffer[0] = 0 ;	    	    _tcscpy (szBuffer, Filter_GetProgram (g_hfltCurrent)) ;	    	    if( IDOK==DialogBoxParam(g_hInstance, MAKEINTRESOURCE(DLG_PROGPATH), 				     hwnd, ProgPathDlg_DlgProc, (LPARAM)szBuffer) )	      {		SpySrv_LockFilterSet () ;		Filter_SetProgram (g_hfltCurrent, szBuffer) ;		SpySrv_SendFilterSetToDriver () ;		SpySrv_UnlockFilterSet () ;		_FilterWnd_UpdateProgramItem (g_hwndPrograms, g_hfltCurrent) ;	      }	  }	    	  return 0 ;  //  ======== "Edit" command on program list ========	case IDM_PROGRAM_REMOVE: //  ======== "Remove" command on program list ========	  {	    // is command allowed ?	    if( ! g_hfltCurrent || Filter_GetProtected(g_hfltCurrent) ) 	      return 0 ;	    	    wsprintf (szBuffer,		      STR_DEF(_SURE_REMOVE_FILTER_FOR_S,			      TEXT("Are you sure you want to remove filter for \"%s\" ?")),		      Filter_GetProgram(g_hfltCurrent)) ;	    	    if( IDYES==MessageBox(hwnd,szBuffer,TEXT(APPLICATION_NAME),				  MB_ICONQUESTION|MB_YESNO) )

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -