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

钩子与API截获

开发平台:

Visual C++

  1. #ifndef __PROCESS_MODULE_H__
  2. #define __PROCESS_MODULE_H__
  3. /*#ifdef WINNT
  4. typedef BOOL (WINAPI *ENUMPROCESSES_PROC)(DWORD *lpidProcess, DWORD cb, DWORD *cbNeeded);
  5. typedef BOOL (WINAPI *ENUMPROCESSMODULES_PROC)(HANDLE hProcess, HMODULE *lphModule, DWORD cb, LPDWORD lpcbNeeded);
  6. typedef DWORD (WINAPI *GETMODULEBASENAME_PROC)(HANDLE hProcess, HMODULE hModule, LPTSTR lpBaseName, DWORD nSize);
  7. #else*/
  8. #include <tlhelp32.h>
  9. typedef HANDLE (WINAPI *CREATETOOLHELP32SNAPSHOT_PROC)(DWORD dwFlags, DWORD th32ProcessID);
  10. typedef BOOL (WINAPI *PROCESS32FIRST_PROC)(HANDLE hSnapshot, LPPROCESSENTRY32 lppe);
  11. typedef BOOL (WINAPI *PROCESS32NEXT_PROC)(HANDLE hSnapshot, LPPROCESSENTRY32 lppe);
  12. typedef BOOL (WINAPI *MODULE32FIRST_PROC)(HANDLE hSnapshot, LPMODULEENTRY32 lpme);
  13. typedef BOOL (WINAPI *MODULE32NEXT_PROC)(HANDLE hSnapshot, LPMODULEENTRY32 lpme);
  14. //#endif
  15. #define MAX_PROCESS_COUNT 512
  16. #define MAX_MODULE_COUNT 500
  17. class CProcessModule
  18. {
  19. public:
  20. CProcessModule();
  21. ~CProcessModule();
  22. private:
  23. /*#ifdef WINNT
  24. HINSTANCE m_hLib;  // from LoadLibrary("PSAPI.dll")
  25. ENUMPROCESSES_PROC m_pEnumProcesses;  // api EnumProcesses()
  26. ENUMPROCESSMODULES_PROC m_pEnumProcessModules;  // api EnumProcessModules()
  27. GETMODULEBASENAME_PROC m_pGetModuleBaseName;  // api GetModuleBaseName()
  28. HANDLE m_hProcess;
  29. #else*/
  30. char m_mod_name[MAX_MODULE_COUNT][100];  // max 100 modules in one process
  31. CREATETOOLHELP32SNAPSHOT_PROC pCreateToolhelp32Snapshot;
  32. PROCESS32FIRST_PROC pProcess32First;
  33. PROCESS32NEXT_PROC pProcess32Next;
  34. MODULE32FIRST_PROC pModule32First;
  35. MODULE32NEXT_PROC pModule32Next;
  36. //#endif
  37. public:
  38. DWORD m_dwProcessIDs[MAX_PROCESS_COUNT];  // 
  39. DWORD m_dwProcessCount;
  40. HMODULE m_hMods[MAX_MODULE_COUNT];
  41. int m_nModCount;
  42. int EnumProcess();
  43. int EnumProcessModules(DWORD process_id);
  44. int GetModuleBaseNameA(int num, char *mod_name);
  45. void EndEnumProcessModules();
  46. HANDLE GetProcessModuleHandle(DWORD process_id, char *mod_name);
  47. DWORD GetProcessID(char *exe_name);
  48. #ifdef WINNT
  49. BOOL ObtainSeDebugPrivilege(HANDLE hProcess);
  50. #endif
  51. };
  52. #endif