Filter.cpp
上传用户:nbcables
上传日期:2007-01-11
资源大小:1243k
文件大小:2k
源码类别:

钩子与API截获

开发平台:

Visual C++

  1. #include "stdafx.h"
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <malloc.h>
  5. #include "util.h"
  6. #include "Filter.h"
  7. char g_dll_path[128];
  8. CFilter::CFilter()
  9. {
  10. m_pFilterInfo =NULL;
  11. m_nFilterInfoCount =0;
  12. FILE *fp;
  13. if(GetProfileString("HookAPI", "dll_path", "", g_dll_path, sizeof(g_dll_path)) ==0)
  14. return;
  15. char init_file[128];
  16. wsprintf(init_file, "%s\filterhp.ini", g_dll_path);
  17. //WriteLog("FilterInit:init_file=%s", init_file);
  18. if((fp =fopen(init_file, "r")) ==NULL)
  19. {
  20. WriteLog("CFilter: can not found init file %s", init_file);
  21. return;
  22. }
  23. char buf[256];
  24. while(!feof(fp) && fgets(buf, sizeof(buf), fp))
  25. {
  26. if(strlen(buf) <3 || buf[0] =='#') continue;
  27. if(buf[strlen(buf)-1] =='r' || buf[strlen(buf)-1] =='n')
  28. buf[strlen(buf)-1] =0;
  29. if(buf[strlen(buf)-2] =='r' || buf[strlen(buf)-2] =='n')
  30. buf[strlen(buf)-2] =0;
  31. if(m_pFilterInfo)
  32. m_pFilterInfo =(FILTER_INFO *)realloc(m_pFilterInfo, (m_nFilterInfoCount+1)*sizeof(FILTER_INFO));
  33. else
  34. m_pFilterInfo =(FILTER_INFO *)malloc((m_nFilterInfoCount+1)*sizeof(FILTER_INFO));
  35. strcpy(m_pFilterInfo[m_nFilterInfoCount].app, buf);
  36. //WriteLog("init:%s", buf);
  37. m_nFilterInfoCount++;
  38. }
  39. }
  40. CFilter::~CFilter()
  41. {
  42. if(m_pFilterInfo)
  43. free(m_pFilterInfo);
  44. }
  45. int CFilter::FilterName(char *name)
  46. {
  47. for(int i=0; i<m_nFilterInfoCount; i++)
  48. {
  49. //WriteLog("i=%d, name=%s, app=%s", i, name, m_pFilterInfo[i].app);
  50. if(!strcmpi(name, m_pFilterInfo[i].app))
  51. return true;
  52. }
  53. return false;
  54. }