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

钩子与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. CMsgFilter g_Filter;
  15. BOOL APIENTRY DllMain( HANDLE hModule, 
  16.                        DWORD  ul_reason_for_call, 
  17.                        LPVOID lpReserved
  18.  )
  19. {
  20. g_hInstance =(HINSTANCE)hModule;
  21.     return TRUE;
  22. }
  23. LRESULT WINAPI mySendMessageA(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
  24. {
  25. if(g_Filter.FilterSendMessage(hWnd, msg, wParam, lParam))
  26. return 0;
  27. return SendMessageA(hWnd, msg, wParam, lParam);
  28. }
  29. LRESULT WINAPI mySendMessageW(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
  30. {
  31. if(g_Filter.FilterSendMessage(hWnd, msg, wParam, lParam))
  32. return 0;
  33. return SendMessageW(hWnd, msg, wParam, lParam);
  34. }
  35. LRESULT WINAPI mySendDlgItemMessageA(HWND hWnd, int nId, UINT msg, WPARAM wParam, LPARAM lParam)
  36. {
  37. if(g_Filter.FilterSendMessage(hWnd, msg, wParam, lParam))
  38. return 0;
  39. return SendDlgItemMessageA(hWnd, nId, msg, wParam, lParam);
  40. }
  41. LRESULT WINAPI mySendDlgItemMessageW(HWND hWnd, int nId, UINT msg, WPARAM wParam, LPARAM lParam)
  42. {
  43. if(g_Filter.FilterSendMessage(hWnd, msg, wParam, lParam))
  44. return 0;
  45. return SendDlgItemMessageW(hWnd, nId, msg, wParam, lParam);
  46. }
  47. LRESULT WINAPI myPostMessageA(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
  48. {
  49. if(g_Filter.FilterPostMessage(hWnd, msg, wParam, lParam))
  50. return 0;
  51. return PostMessageA(hWnd, msg, wParam, lParam);
  52. }
  53. LRESULT WINAPI myPostMessageW(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
  54. {
  55. if(g_Filter.FilterPostMessage(hWnd, msg, wParam, lParam))
  56. return 0;
  57. return PostMessageW(hWnd, msg, wParam, lParam);
  58. }
  59. LRESULT WINAPI myCallWindowProcA(WNDPROC wndproc, HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
  60. {
  61. if(g_Filter.FilterCallWindowProc(hWnd, msg, wParam, lParam))
  62. return 0;
  63. return CallWindowProcA(wndproc, hWnd, msg, wParam, lParam);
  64. }
  65. LRESULT WINAPI myCallWindowProcW(WNDPROC wndproc, HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
  66. {
  67. if(g_Filter.FilterCallWindowProc(hWnd, msg, wParam, lParam))
  68. return 0;
  69. return CallWindowProcW(wndproc, hWnd, msg, wParam, lParam);
  70. }
  71. LONG WINAPI myDispatchMessageA(MSG *lpmsg)
  72. {
  73. if(g_Filter.FilterDispatchMessage(lpmsg->hwnd, lpmsg->message, lpmsg->wParam, lpmsg->lParam))
  74. return 0;
  75. return DispatchMessageA(lpmsg);
  76. }
  77. LONG WINAPI myDispatchMessageW(MSG *lpmsg)
  78. {
  79. //WriteLog("DispatchMessageW");
  80. if(g_Filter.FilterDispatchMessage(lpmsg->hwnd, lpmsg->message, lpmsg->wParam, lpmsg->lParam))
  81. return 0;
  82. return DispatchMessageW(lpmsg);
  83. }
  84. MYAPIINFO myapi_info[] =
  85. {
  86. {"USER32.DLL", "CallWindowProcA(WNDPROC, HWND, UINT, WPARAM, LPARAM)", "myCallWindowProcA"},
  87. {"USER32.DLL", "CallWindowProcW(WNDPROC, HWND, UINT, WPARAM, LPARAM)", "myCallWindowProcW"},
  88. {"USER32.DLL", "SendMessageA(HWND, UINT, WPARAM, LPARAM)", "mySendMessageA"},
  89. {"USER32.DLL", "SendMessageW(HWND, UINT, WPARAM, LPARAM)", "mySendMessageW"},
  90. {"USER32.DLL", "SendDlgItemMessageA(HWND, int, UINT, WPARAM, LPARAM)", "mySendDlgItemMessageA"},
  91. {"USER32.DLL", "SendDlgItemMessageW(HWND, int, UINT, WPARAM, LPARAM)", "mySendDlgItemMessageW"},
  92. {"USER32.DLL", "PostMessageA(HWND, UINT, WPARAM, LPARAM)", "myPostMessageA"},
  93. {"USER32.DLL", "PostMessageW(HWND, UINT, WPARAM, LPARAM)", "myPostMessageW"},
  94. {"USER32.DLL", "DispatchMessageA(LPMSG)", "myDispatchMessageA"},
  95. {"USER32.DLL", "DispatchMessageW(LPMSG)", "myDispatchMessageW"},
  96. {NULL,NULL,NULL}
  97. };
  98. MYAPIINFO *GetMyAPIInfo()
  99. {
  100. return &myapi_info[0];
  101. }