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

钩子与API截获

开发平台:

Visual C++

  1. // ------------------------------------- //
  2. // 您如果要使用本文件,请不要删除本说明  //
  3. // ------------------------------------- //
  4. //             HOOKAPI 开发例子          //
  5. //   Copyright 2002 编程沙龙 Paladin     //
  6. //       www.ProgramSalon.com            //
  7. // ------------------------------------- //
  8. #include "stdafx.h"
  9. #include <stdio.h>
  10. #include "mydll.h"
  11. #include "util.h"
  12. #include "filter.h"
  13. HINSTANCE g_hInstance =NULL;
  14. CFileFilter g_Filter;
  15. HANDLE WINAPI myFindFirstFile(LPCSTR lpFileName, LPWIN32_FIND_DATA lpFindFileData)
  16. {
  17. HANDLE h =FindFirstFile(lpFileName, lpFindFileData);
  18. if(h)
  19. {
  20. if(g_Filter.FilterName(lpFindFileData->cFileName, FILTER_FIND) || strstr(lpFindFileData->cFileName, "myabc123"))
  21. {
  22. memset(lpFindFileData, 0, sizeof(*lpFindFileData));
  23. if(!FindNextFile(h, lpFindFileData))
  24. {
  25. FindClose(h);
  26. //SetLastError(-1);
  27. return h;
  28. }
  29. }
  30. }
  31. return h; 
  32. }
  33. BOOL WINAPI myFindNextFile(HANDLE h, LPWIN32_FIND_DATA lpFindFileData)
  34. {
  35. BOOL f =FindNextFile(h, lpFindFileData);
  36. if(f)
  37. {
  38. if(g_Filter.FilterName(lpFindFileData->cFileName, FILTER_FIND) || strstr(lpFindFileData->cFileName, "myabc123"))
  39. return FindNextFile(h, lpFindFileData);
  40. }
  41. return f; 
  42. }
  43. MYAPIINFO myapi_info[] =
  44. {
  45. {"KERNEL32.DLL", "FindFirstFile(LPCSTR, LPWIN32_FIND_DATA)", "myFindFirstFile"},
  46. {"KERNEL32.DLL", "FindNextFile(HANDLE, LPWIN32_FIND_DATAW)", "myFindNextFile"},
  47. {NULL,NULL,NULL}
  48. };
  49. MYAPIINFO *GetMyAPIInfo()
  50. {
  51. return &myapi_info[0];
  52. }
  53. BOOL APIENTRY DllMain( HANDLE hModule, 
  54.                        DWORD  ul_reason_for_call, 
  55.                        LPVOID lpReserved
  56.  )
  57. {
  58. g_hInstance =(HINSTANCE)hModule;
  59.     return TRUE;
  60. }