Global.h 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. #ifndef __GLOBAL_22__
  2. #define __GLOBAL_22__
  3. #include <tlhelp32.h>
  4. #include <vector>
  5. #include <string>
  6. using namespace std;
  7. #include "PipeService.h"
  8. #include "DataImpl.h"
  9. #ifdef UNICODE
  10. typedef wstring TString;
  11. #else
  12. typedef string TString;
  13. #endif
  14. #define WECHAT _T("WeChat.exe")
  15. #define OGC_TOOL _T("Demo.exe")
  16. namespace GLOBAL {
  17. // DeltaE76
  18. // DeltaE94
  19. // DeltaE00
  20. typedef enum {
  21. DeltaE00 = 0,
  22. DeltaE76 = 1,
  23. DeltaE94 = 2
  24. }DETYPE;
  25. // 进程信息;
  26. typedef struct __PROC_INFO__ {
  27. DWORD dwProcId; // 进程id;
  28. TString strProcName; // 进程名称;
  29. TString strProcFile; // 进程路径;
  30. }PROC_INFO, *LPPROC_INFO;
  31. // 窗口信息;
  32. typedef struct __WND_INFO__ {
  33. HWND hWnd;
  34. DWORD dwCtrlId;
  35. TCHAR szClassName[MAX_PATH];
  36. TCHAR szWndTitle[MAX_PATH];
  37. __WND_INFO__() {
  38. dwCtrlId = 0;
  39. memset(szClassName, 0, sizeof(TCHAR)*MAX_PATH);
  40. memset(szWndTitle, 0, sizeof(TCHAR)*MAX_PATH);
  41. }
  42. __WND_INFO__ &operator=(const __WND_INFO__ &that) {
  43. if ( this == &that )
  44. return *this;
  45. hWnd = that.hWnd;
  46. dwCtrlId = that.dwCtrlId;
  47. _stprintf(szWndTitle, _T("%s"), that.szWndTitle);
  48. _stprintf(szClassName, _T("%s"), that.szClassName);
  49. return *this;
  50. }
  51. }WND_INFO, *LPWND_INFO;
  52. // 进程内所有窗口信息;
  53. typedef struct __PROC_WND_INFO__ {
  54. // 窗口进程ID;
  55. DWORD dwProcId;
  56. // 窗口内所有子控件;
  57. std::vector<WND_INFO> vtWndInfo;
  58. // 窗口进程: Connect状态;
  59. BOOL bConnectStatus;
  60. // 窗口进程:Hijack状态;
  61. BOOL bHijackStatus;
  62. void AddWnd(WND_INFO &data) {
  63. if (!IsExistWnd(data.hWnd))
  64. vtWndInfo.push_back(data);
  65. }
  66. bool IsExistWnd(HWND hWnd) {
  67. bool bExist = false;
  68. for (std::vector<WND_INFO>::iterator it = vtWndInfo.begin(); it != vtWndInfo.end(); it++ ) {
  69. if ( it->hWnd == hWnd ) {
  70. bExist = true;
  71. break;
  72. }
  73. }
  74. return bExist;
  75. }
  76. HWND GetButtonWnd(LPCTSTR lpButtonName)
  77. {
  78. if ( lpButtonName == NULL || lpButtonName[0] == '\0' )
  79. return NULL;
  80. HWND hWnd = NULL;
  81. for ( std::vector<WND_INFO>::iterator it = vtWndInfo.begin(); it != vtWndInfo.end(); it++ )
  82. {
  83. if ( _tcscmp(it->szWndTitle, lpButtonName) == 0 )
  84. {
  85. hWnd = it->hWnd;
  86. break;
  87. }
  88. }
  89. return hWnd;
  90. }
  91. __PROC_WND_INFO__() {
  92. dwProcId = 0;
  93. bHijackStatus = FALSE;
  94. bConnectStatus = FALSE;
  95. }
  96. }PROC_WND_INFO,*LPPROC_WND_INFO;
  97. // Config文件内的配置信息;
  98. typedef struct __CONFIG__{
  99. INT nStdOut;
  100. INT nOffline;
  101. INT nDeltaEType;
  102. DOUBLE dDeltaEValue;
  103. DWORD dwOGCToolProcId;
  104. TCHAR szLine[MAX_PATH];
  105. TCHAR szAccount[MAX_PATH];
  106. TCHAR szPassword[MAX_PATH];
  107. TCHAR szBatchNumber[MAX_PATH];
  108. TCHAR szOGCToolPath[MAX_PATH];
  109. TCHAR szOGCToolProgram[MAX_PATH];
  110. __CONFIG__() {
  111. nStdOut = 0;
  112. nOffline = 0;
  113. nDeltaEType = 0;
  114. dDeltaEValue = 0.0;
  115. dwOGCToolProcId = -1;
  116. memset(szLine, 0, sizeof(TCHAR)*MAX_PATH);
  117. memset(szAccount, 0, sizeof(TCHAR)*MAX_PATH);
  118. memset(szPassword, 0, sizeof(TCHAR)*MAX_PATH);
  119. memset(szBatchNumber, 0, sizeof(TCHAR)*MAX_PATH);
  120. memset(szOGCToolPath, 0, sizeof(TCHAR)*MAX_PATH);
  121. memset(szOGCToolProgram, 0, sizeof(TCHAR)*MAX_PATH);
  122. }
  123. }CONFIG, *LPCONFIG;
  124. extern CDataImpl g_db;
  125. extern CIOCPPipe g_IOCP;
  126. // DLL注入状态;
  127. extern BOOL g_bInjected;
  128. // 配置信息;
  129. extern CONFIG g_config;
  130. // 全局路径;
  131. extern TCHAR g_szModulePath[MAX_PATH]; // 软件目录;
  132. extern TCHAR g_szModuleFileName[MAX_PATH]; // 软件名称;
  133. extern TCHAR g_szConfigFile[MAX_PATH];
  134. // 目标里程窗口信息;
  135. extern PROC_WND_INFO g_procWndInfo;
  136. BOOL GetConfigInfo(LPCTSTR lpIniDir = NULL, LPCTSTR lpConfigName = NULL);
  137. DWORD FindProcess(LPCTSTR lpProName);
  138. vector<DWORD> FindAllProcess(LPCTSTR lpProName);
  139. void FindAllProcess(std::vector<PROC_INFO> &vtProInfo);
  140. HANDLE FindModule(LPCTSTR lpModuleName, DWORD dwProcId);
  141. LPCTSTR GetModulePath(LPCTSTR lpModuleName, DWORD dwProcId);
  142. HANDLE FindModuleEx(LPCTSTR lpModuleName, DWORD dwProcId);
  143. BOOL GetDebugPriv();
  144. std::string GetFileData(LPCTSTR lpFile);
  145. std::string GetFileLine(std::string &strFileData, int nLine);
  146. BOOL GetFileVersion( IN HMODULE hModule, IN DWORD (&dwArray)[4]);
  147. BOOL GetFileVersionEx( IN LPCTSTR lpFileName, IN DWORD (&dwArray)[4] );
  148. BOOL GetProductVersion( IN HMODULE hModule, IN DWORD (&dwArray)[4]);
  149. BOOL GetProductVersionEx( IN LPCTSTR lpFileName, IN DWORD (&dwArray)[4] );
  150. BOOL GetOSDisplayString(LPTSTR pszOS);
  151. void WriteTextLog(const TCHAR *format, ...);
  152. BOOL CopyFileEx(LPCTSTR lpExistingFileName, LPCTSTR lpNewFileName, const BOOL &bFailIfExists=TRUE);
  153. void tSplitpath(const char *path, char *drive, char *dir, char *fname, char *ext);
  154. void tSplitpath(const char *path, char *drive, char *dir, const int &nTimes);
  155. BOOL IsDirectoryLegitimate(const CString &strDirectory);
  156. void ShowSystemErrorInfo(CString strDescription, const DWORD &dwError);
  157. BOOL MySystemShutdown(LPTSTR lpMsg);
  158. BOOL PreventSystemShutdown();
  159. BOOL MySystemShutdown();
  160. // 根据进程pid获取进程对应程序的窗口句柄;
  161. HWND GetProcessMainWnd(const DWORD& dwTagetProcessId, LPCTSTR lpTagetWndName);
  162. // 获取指定进程名的进程主窗口;
  163. HWND GetProcessMainWnd(LPCTSTR lpProcessName, LPCTSTR lpTagetWndName);
  164. BOOL EnumProcessAllWnd(LPPROC_WND_INFO lpProcWndInfo);
  165. BOOL StartProcess(LPCTSTR lpPath, BOOL bShowWnd = FALSE, BOOL bSuspend = FALSE);
  166. };
  167. #endif