DXBind.h 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216
  1. #pragma once
  2. #include "TSMessage.h"
  3. #include "TSFindPicture.h"
  4. typedef bool(__stdcall* MySetWindowHook)(BOOL, DWORD);
  5. //TSMOUSE_MODE 鼠标模式
  6. #define MOUSE_NORMAL 0x00000001L
  7. #define MOUSE_WINDOW 0x00000002L
  8. #define MOUSE_API 0x00000004L
  9. //TSKEYBOARD_MODE 窗口模式
  10. #define KEY_NORMAL 0x00000001L
  11. #define KEY_WINDOW 0x00000002L
  12. #define KEY_API 0x00000004L
  13. #define KEY_STATEAPI 0x00000008L
  14. #define KEY_LOCKAPI 0x00000010L
  15. //TSDISPLAY_MODE 显示模式
  16. #define DISPLAY_GDI 0x00000001L
  17. #define DISPLAY_DX_2D 0x00000002L
  18. #define DISPLAY_DX_3D 0x00000004L
  19. #define DISPLAY_NORMAL 0x00000008L
  20. #define DISPLAY_DX2 0x00000010L
  21. #define DISPLAY_GDI2 0x00000020L
  22. //定义创建内存映射的名字宏
  23. #define TS_MAPVIEW_NAME "TSMAPVIEW:REMOTECTRL"
  24. //定义创建绑定窗口标识名字宏
  25. //定义创建绑定窗口标识名字宏
  26. #define TS_BINDWINDOW_GDIWINDOW "TSBINDWINDOWNAME_GDIWINDOW:"
  27. #define TS_BINDWINDOW_SETWINDOWHOOK "TSBINDWINDOWNAME_SETWINDOWHOOK:"
  28. #define TS_BINDWINDOW_IME "TSBINDWINDOWNAME_IME:"
  29. #define TS_BINDWINDOW_IME101 "TSBINDWINDOWNAME_IME101:"
  30. #define TS_BINDWINDOW_103 "TSBINDWINDOWNAME_103:"
  31. #define TS_EVENT_IMEHOOK "TSEVENT:IMEHOOK:"
  32. #define TS_EVENT_WRITEMEM L"TSEVENT:WRITEMEM:"
  33. //定义一个事件内核对象名,用于处理图色处理API
  34. #define TS_EVENT_NAME L"TSEVENT:DISPLAY"
  35. #define TS_EVENT_FINDPIC L"TSEVENT:FINDPIC"
  36. #define TS_EVENT_FINDSTR L"TSEVENT:FINDSTR"
  37. #define TS_EVENT_FINDCOLOR L"TSEVENT:FINDCOLOR"
  38. #define TS_EVENT_KEYHOOKNAME L"TSEVENT:KEYHOOK"
  39. #define TS_IMEUNHOOKAPI_NAME L"TSEVENT:IMEUNHOOKAPI"
  40. #define TS_BIND201_NAME L"TSEVENT:BIND201"
  41. //定义内存映射最大值
  42. #define TS_MAFVIEW_MAXSIZE 1024*5
  43. //绑定模式
  44. enum BIND_MODE
  45. {
  46. BIND_WINHOOK, // HOOK注入;
  47. BIND_IME, // 输入法注入;
  48. BIND_IME101 = 101,
  49. BIND_103 = 103,
  50. BIND_201 = 201,
  51. BIND_203 = 203,
  52. BIND_MAX,
  53. };
  54. ////绑定的显示模式
  55. //enum DISPLAY_MODE
  56. //{
  57. // DISPLAY_GDI,
  58. // DISPLAY_DX,
  59. // DISPLAY_MAX,
  60. //};
  61. class DXBind
  62. {
  63. public:
  64. //////////////////////////////////这里是本地使用的API接口////////////////////////////////////
  65. //MyFindPictureClass fpic;
  66. //绑定操作
  67. bool bind(HWND wnd, DWORD keyMod, DWORD mouseMod, DWORD disMod, BIND_MODE bindMode);
  68. bool UnBind();
  69. //发送消息
  70. LRESULT SendMsg(UINT Msg, WPARAM wParam = 0, LPARAM lParam = 0) {
  71. return ::SendMessage(m_mousekeyhwnd, Msg, wParam, lParam);
  72. }
  73. bool SetWindowHookExInject(HWND wnd);
  74. //输入法注入
  75. bool IMEInject(HWND wnd);
  76. //201注入
  77. bool Inject201();
  78. //
  79. int findPic(LONG x1, LONG y1, LONG x2, LONG y2, wchar_t* pic_name, wchar_t* color, DOUBLE sim, LONG dir, LONG& intX, LONG& intY, wchar_t* retstring = NULL, int type = 0);
  80. //
  81. int findColor(LONG x1, LONG y1, LONG x2, LONG y2, int color, DOUBLE sim, LONG dir, LONG& intX, LONG& intY, wchar_t* colorstr = NULL, wchar_t* retstring = NULL, wchar_t* MultiColor = NULL);
  82. int GetColor(LONG x, LONG y, BSTR sColor);
  83. bool CmpColor(LONG x, LONG y, BSTR sColor, DOUBLE sim);
  84. bool TSSetpath(wchar_t* path);
  85. //
  86. void setIsBind(bool isbind);
  87. int Capture(LONG x1, LONG y1, LONG x2, LONG y2, wchar_t* pic_path, int pictype);
  88. int CaptureGif(LONG x1, LONG y1, LONG x2, LONG y2, wchar_t* pic_path, int delay, int time);
  89. bool TSSetDict(int index, wchar_t* filepath);
  90. bool TSUseDict(int index);
  91. int Ocr(LONG x1, LONG y1, LONG x2, LONG y2, wchar_t* color, DOUBLE sim, int type = 0);
  92. //Findstrtype=0,Findstr=Findstr;Findstrtype=1,Findstr=FindstrFast;
  93. int Findstr(LONG x1, LONG y1, LONG x2, LONG y2, wchar_t* findstring, wchar_t* color, DOUBLE sim, LONG& intX, LONG& intY, BYTE Findstrtype, wchar_t* retstring = NULL, int type = 0);
  94. //判断是否卡屏
  95. int IsDisplayDead(LONG x1, LONG y1, LONG x2, LONG y2, int times);
  96. bool TSGetScreenData(LONG x1, LONG y1, LONG x2, LONG y2);
  97. //
  98. bool isBind();
  99. //////////////////////////////////这里是注入游戏远程使用的API接口///////////////////////////////
  100. //拦截API,会起一个循环检测的线程
  101. bool hookApi();
  102. bool DownCpu(DWORD sleeptime);
  103. bool TSMatchPicName(wchar_t* pic_name, wchar_t* ret_name);
  104. bool TSGetMachineCode(wchar_t* retcode);
  105. void mysleep(DWORD delaytime);
  106. void InitGdiNormal();
  107. bool TSEnableRealMouse(LONG X, LONG Y);
  108. DWORD TSRealKeyMousSleepTime(DWORD type);
  109. void TSMoveToEx(ULONG x, ULONG y, ULONG w, ULONG h, wchar_t* retstring);
  110. public:
  111. DWORD ColorDataInfo[2000][2000];
  112. COLORREF** pWndBmpBuffer;
  113. short** pWndBmpStrxy;
  114. BYTE* pBuffer;
  115. DWORD winver;
  116. DWORD nPid;
  117. DWORD KeyDownsleep;//键盘单击延时
  118. DWORD NormalKeysleep;
  119. DWORD MouseClicksleep;//鼠标单击延时
  120. DWORD WindowsKeyMouseClicksleep;// Windows模式键盘\鼠标单击延时
  121. DWORD NormalClicksleep;
  122. HWND m_hwnd; //被绑定的窗口的句柄
  123. HWND m_mousekeyhwnd; //鼠标键盘后台窗口绑定
  124. HWND m_parenthwnd; //父窗口句柄
  125. HANDLE m_eventMsg;
  126. int BindMode;
  127. MySetWindowHook mSetHook;
  128. wchar_t m_SetPath[MAX_PATH];
  129. wchar_t m_Retstr[MAX_PATH * 100];
  130. short LastMouseMoveX;
  131. short LastMouseMoveY;
  132. bool m_isBind;
  133. DWORD m_displayMode;
  134. DWORD m_keyMode;
  135. DWORD m_mouseMode;
  136. DWORD m_dwExStyle;
  137. bool g_IsSYSKEY;
  138. bool IsNpProtect;
  139. CMessageData* pData;
  140. bool Isdxkmprotect; //dx键鼠不被恶意检测盾
  141. bool Isdxantiapi;//开启dx.public.anti.api保护
  142. pMyDictInfo MyDictCount[20]; //存储当前所有字库,默认最大字库个数为20个
  143. int nMaxStrHight[20]; //记录每个字库中,最高的字高.
  144. int nMyDictCountsize[20]; //记录每个字库的数量
  145. int NowUsingDictIndex;//记录当前正在使用字库的下标
  146. bool Isgraphicprotect;//防止图色检测盾
  147. bool isdxpic;
  148. BYTE CallCode[0x50];//201注入的代码
  149. bool IsTSEnableRealMouse;
  150. bool IsTSEnableRealKeypad;
  151. LONG mousedelay;
  152. LONG mousestep;
  153. DWORD GDI_dwExStyle;
  154. private:
  155. int CallCodelen;
  156. LPVOID Alloaddr;//201注入的申请到的内存地址
  157. HKL MSetUpIME;
  158. HKL SysIME;
  159. int Colors[MAX_PATH];//颜色
  160. BYTE m_colorOffR[MAX_PATH]; // R的偏移量
  161. BYTE m_colorOffG[MAX_PATH]; // G的偏移量
  162. BYTE m_colorOffB[MAX_PATH]; // B的偏移量
  163. public:
  164. DXBind(void);
  165. ~DXBind(void);
  166. };