From 27b8d2f45b33f72417e43eecaadcc9b6eed23a76 Mon Sep 17 00:00:00 2001 From: ljc545w Date: Sat, 20 Aug 2022 19:15:05 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84http=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DWeChatRobot/GetDbHandles.cpp | 24 +-- DWeChatRobot/HookImageMessage.cpp | 170 ++++++++------- DWeChatRobot/HookVoiceMessage.cpp | 136 +++++++----- DWeChatRobot/ReceiveMessage.h | 6 +- DWeChatRobot/SendAtText.cpp | 58 ++--- DWeChatRobot/SendAtText.h | 6 +- DWeChatRobot/SendCard.cpp | 34 +-- DWeChatRobot/SendFile.cpp | 48 +++-- DWeChatRobot/SendFile.h | 6 +- DWeChatRobot/SendImage.cpp | 32 +-- DWeChatRobot/SendImage.h | 6 +- DWeChatRobot/SendText.cpp | 32 +-- DWeChatRobot/SendText.h | 6 +- DWeChatRobot/http_overload.hpp | 24 +-- DWeChatRobot/pch.cpp | 81 +++---- DWeChatRobot/wxsocket.cpp | 343 ++++++++++++++++++++++++++++-- DWeChatRobot/wxsocketapi.h | 5 +- Python/wxRobot.py | 12 +- Release/CWeChatRobot.exe | Bin 144896 -> 144896 bytes Release/DWeChatRobot.dll | Bin 82432 -> 83968 bytes Release/socket/SWeChatRobot.dll | Bin 137728 -> 231936 bytes Release/socket/wxDriver.dll | Bin 20480 -> 20480 bytes Release/socket/wxDriver.py | 246 +++++++++++++++++++++ Release/socket/wxDriver64.dll | Bin 27648 -> 27648 bytes Release/socket/wxDriverTest.py | 44 ---- 25 files changed, 948 insertions(+), 371 deletions(-) create mode 100644 Release/socket/wxDriver.py delete mode 100644 Release/socket/wxDriverTest.py diff --git a/DWeChatRobot/GetDbHandles.cpp b/DWeChatRobot/GetDbHandles.cpp index 50111af..8359937 100644 --- a/DWeChatRobot/GetDbHandles.cpp +++ b/DWeChatRobot/GetDbHandles.cpp @@ -11,10 +11,10 @@ vector dbs; /* -* 根据数据库名从`dbs`中检索数据库句柄 -* dbname:数据库名 -* return:DWORD,如果检索成功,返回数据库句柄,否则返回`0` -*/ + * 根据数据库名从`dbs`中检索数据库句柄 + * dbname:数据库名 + * return:DWORD,如果检索成功,返回数据库句柄,否则返回`0` + */ DWORD GetDbHandleByDbName(wchar_t *dbname) { if (dbs.size() == 0) @@ -28,9 +28,9 @@ DWORD GetDbHandleByDbName(wchar_t *dbname) } /* -* 供外部调用的获取数据库信息接口 -* return:DWORD,`dbs`首个成员地址 -*/ + * 供外部调用的获取数据库信息接口 + * return:DWORD,`dbs`首个成员地址 + */ #ifndef USE_SOCKET DWORD GetDbHandlesRemote() { @@ -41,9 +41,9 @@ DWORD GetDbHandlesRemote() #endif /* -* 获取数据库信息的具体实现 -* return:void -*/ + * 获取数据库信息的具体实现 + * return:void + */ vector GetDbHandles() { dbs.clear(); @@ -134,7 +134,7 @@ vector GetDbHandles() } #endif vector ret_array; - for (auto it : dbs) - ret_array.push_back(&it); + for (unsigned int i = 0; i < dbs.size() - 1; i++) + ret_array.push_back(&dbs[i]); return ret_array; } diff --git a/DWeChatRobot/HookImageMessage.cpp b/DWeChatRobot/HookImageMessage.cpp index d3f03b7..eeb4988 100644 --- a/DWeChatRobot/HookImageMessage.cpp +++ b/DWeChatRobot/HookImageMessage.cpp @@ -9,54 +9,58 @@ static DWORD WeChatWinBase = GetWeChatWinBase(); static DWORD HookImageMsgAddr = WeChatWinBase + HookImageMsgAddrOffset; static DWORD HookImageMsgNextCall = WeChatWinBase + HookImageMsgNextCallOffset; static DWORD HookImageMsgJmpBackAddr = HookImageMsgAddr + 0x5; -static char ImageMsgOldAsm[5] = { 0 }; +static char ImageMsgOldAsm[5] = {0}; static wstring savepath = L""; -void SaveImageMsg(unsigned char* buffer, int length, DWORD msgHandle) { - int l_datpath = *(int*)(msgHandle + 0x4) + 1; - wchar_t* datpath = new wchar_t[l_datpath]; - memcpy(datpath, (void*)(*(DWORD*)msgHandle), l_datpath * 2); - wstring wdatpath(datpath); - delete[] datpath; - datpath = NULL; - if (wdatpath.find(L"_t.dat") != wstring::npos) { - return; - } - int pos_begin = wdatpath.find_last_of(L"\\") + 1; - int pos_end = wdatpath.find_last_of(L"."); - wstring filename = wdatpath.substr(pos_begin, pos_end - pos_begin); +void SaveImageMsg(unsigned char *buffer, int length, DWORD msgHandle) +{ + int l_datpath = *(int *)(msgHandle + 0x4) + 1; + wchar_t *datpath = new wchar_t[l_datpath]; + memcpy(datpath, (void *)(*(DWORD *)msgHandle), l_datpath * 2); + wstring wdatpath(datpath); + delete[] datpath; + datpath = NULL; + if (wdatpath.find(L"_t.dat") != wstring::npos) + { + return; + } + int pos_begin = wdatpath.find_last_of(L"\\") + 1; + int pos_end = wdatpath.find_last_of(L"."); + wstring filename = wdatpath.substr(pos_begin, pos_end - pos_begin); - unsigned char magic_head[4] = { 0 }; - wchar_t postfix[5] = { 0 }; - memcpy(magic_head, buffer, 3); - if (magic_head[0] == 137 && magic_head[1] == 80 && magic_head[2] == 78) - { - lstrcpy(postfix,L".png"); - } - else if (magic_head[0] == 71 && magic_head[1] == 73 && magic_head[2] == 70) - { - lstrcpy(postfix, L".gif"); - } - else if (magic_head[0] == 255 && magic_head[1] == 216 && magic_head[2] == 255) - { - lstrcpy(postfix, L".jpg"); - } - else { - lstrcpy(postfix, L""); - } - wstring filepath = savepath + filename + postfix; - HANDLE hFile = CreateFile(filepath.c_str(), GENERIC_ALL, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); - if (hFile == INVALID_HANDLE_VALUE) - { - return; - } - DWORD dwWrite = 0; - WriteFile(hFile, (LPCVOID)buffer, length, &dwWrite, 0); - CloseHandle(hFile); + unsigned char magic_head[4] = {0}; + wchar_t postfix[5] = {0}; + memcpy(magic_head, buffer, 3); + if (magic_head[0] == 137 && magic_head[1] == 80 && magic_head[2] == 78) + { + lstrcpy(postfix, L".png"); + } + else if (magic_head[0] == 71 && magic_head[1] == 73 && magic_head[2] == 70) + { + lstrcpy(postfix, L".gif"); + } + else if (magic_head[0] == 255 && magic_head[1] == 216 && magic_head[2] == 255) + { + lstrcpy(postfix, L".jpg"); + } + else + { + lstrcpy(postfix, L""); + } + wstring filepath = savepath + filename + postfix; + HANDLE hFile = CreateFile(filepath.c_str(), GENERIC_ALL, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); + if (hFile == INVALID_HANDLE_VALUE) + { + return; + } + DWORD dwWrite = 0; + WriteFile(hFile, (LPCVOID)buffer, length, &dwWrite, 0); + CloseHandle(hFile); } -__declspec(naked) void dealImageMsg() { - __asm { +__declspec(naked) void dealImageMsg() +{ + __asm { pushad; pushfd; push esi; @@ -68,41 +72,61 @@ __declspec(naked) void dealImageMsg() { popad; call HookImageMsgNextCall; jmp HookImageMsgJmpBackAddr; - } + } } -void __stdcall HookImageMsg() { - WeChatWinBase = GetWeChatWinBase(); - if (ImageMsgHooked || !WeChatWinBase) - return; - HookImageMsgAddr = WeChatWinBase + HookImageMsgAddrOffset; - HookImageMsgNextCall = WeChatWinBase + HookImageMsgNextCallOffset; - HookImageMsgJmpBackAddr = HookImageMsgAddr + 0x5; - HookAnyAddress(HookImageMsgAddr, dealImageMsg, ImageMsgOldAsm); - char settime[] = "00:00-00:00"; - DWORD AutoDownloadTimeSettingAddr = GetWeChatWinBase() + AutoDownloadTimeSettingOffset; - WriteProcessMemory(GetCurrentProcess(), (LPVOID)AutoDownloadTimeSettingAddr, settime, strlen(settime) + 1, 0); - ImageMsgHooked = true; +void __stdcall HookImageMsg() +{ + WeChatWinBase = GetWeChatWinBase(); + if (ImageMsgHooked || !WeChatWinBase) + return; + HookImageMsgAddr = WeChatWinBase + HookImageMsgAddrOffset; + HookImageMsgNextCall = WeChatWinBase + HookImageMsgNextCallOffset; + HookImageMsgJmpBackAddr = HookImageMsgAddr + 0x5; + HookAnyAddress(HookImageMsgAddr, dealImageMsg, ImageMsgOldAsm); + char settime[] = "00:00-00:00"; + DWORD AutoDownloadTimeSettingAddr = GetWeChatWinBase() + AutoDownloadTimeSettingOffset; + WriteProcessMemory(GetCurrentProcess(), (LPVOID)AutoDownloadTimeSettingAddr, settime, strlen(settime) + 1, 0); + ImageMsgHooked = true; } -void UnHookImageMsg() { - if (!ImageMsgHooked) - return; - UnHookAnyAddress(HookImageMsgAddr, ImageMsgOldAsm); - ImageMsgHooked = false; +void UnHookImageMsg() +{ + if (!ImageMsgHooked) + return; + UnHookAnyAddress(HookImageMsgAddr, ImageMsgOldAsm); + ImageMsgHooked = false; } #ifndef USE_SOCKET -BOOL HookImageMsgRemote(LPVOID lpParameter) { - savepath = (wstring)(wchar_t*)lpParameter; - if (savepath.back() != '\\') { - savepath += L"\\"; - } - wstring createpath = savepath.substr(0, savepath.length() - 1); - if (!FindOrCreateDirectory(createpath.c_str())) { - return false; - } - HookImageMsg(); - return true; +BOOL HookImageMsgRemote(LPVOID lpParameter) +{ + savepath = (wstring)(wchar_t *)lpParameter; + if (savepath.back() != '\\') + { + savepath += L"\\"; + } + wstring createpath = savepath.substr(0, savepath.length() - 1); + if (!FindOrCreateDirectory(createpath.c_str())) + { + return false; + } + HookImageMsg(); + return true; } -#endif \ No newline at end of file +#else +BOOL __stdcall HookImageMsg(wstring savepath) +{ + if (savepath.back() != '\\') + { + savepath += L"\\"; + } + wstring createpath = savepath.substr(0, savepath.length() - 1); + if (!FindOrCreateDirectory(createpath.c_str())) + { + return false; + } + HookImageMsg(); + return true; +} +#endif diff --git a/DWeChatRobot/HookVoiceMessage.cpp b/DWeChatRobot/HookVoiceMessage.cpp index 3c624ec..7c27ad0 100644 --- a/DWeChatRobot/HookVoiceMessage.cpp +++ b/DWeChatRobot/HookVoiceMessage.cpp @@ -8,40 +8,42 @@ static DWORD WeChatWinBase = GetWeChatWinBase(); static DWORD HookVoiceMsgAddr = WeChatWinBase + HookVoiceMsgAddrOffset; static DWORD HookVoiceMsgNextCall = WeChatWinBase + HookVoiceMsgNextCallOffset; static DWORD HookVoiceMsgJmpBackAddr = HookVoiceMsgAddr + 0x5; -static char VoiceMsgOldAsm[5] = { 0 }; +static char VoiceMsgOldAsm[5] = {0}; static wstring savepath = L""; -void SaveVoiceMsg(unsigned char* buffer, int length, DWORD msgHandle) { - /*time_t curtime = time(0); - wchar_t timestamp[32] = { 0 }; - _itow_s((int)curtime, timestamp, 10);*/ - wchar_t* temp; - int wxid_length = *(DWORD*)(msgHandle + 0x174); - temp = new wchar_t[wxid_length + 1]; - memcpy(temp, (void*)(*(DWORD*)(msgHandle + 0x170)), (wxid_length + 1) * 2); - wstring sender(temp); - delete[] temp; - temp = NULL; - - int clientmsg_length = *(DWORD*)(msgHandle + 0x188); - temp = new wchar_t[clientmsg_length + 1]; - memcpy(temp, (void*)(*(DWORD*)(msgHandle + 0x184)), (clientmsg_length + 1) * 2); - wstring clientmsgid(temp); - delete[] temp; - temp = NULL; - wstring filename = savepath + sender + L"-" + clientmsgid + L".amr"; - HANDLE hFile = CreateFile(filename.c_str(), GENERIC_ALL, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); - if (hFile == INVALID_HANDLE_VALUE) - { - return; - } - DWORD dwWrite = 0; - WriteFile(hFile, (LPCVOID)buffer, length, &dwWrite, 0); - CloseHandle(hFile); +void SaveVoiceMsg(unsigned char *buffer, int length, DWORD msgHandle) +{ + /*time_t curtime = time(0); + wchar_t timestamp[32] = { 0 }; + _itow_s((int)curtime, timestamp, 10);*/ + wchar_t *temp; + int wxid_length = *(DWORD *)(msgHandle + 0x174); + temp = new wchar_t[wxid_length + 1]; + memcpy(temp, (void *)(*(DWORD *)(msgHandle + 0x170)), (wxid_length + 1) * 2); + wstring sender(temp); + delete[] temp; + temp = NULL; + + int clientmsg_length = *(DWORD *)(msgHandle + 0x188); + temp = new wchar_t[clientmsg_length + 1]; + memcpy(temp, (void *)(*(DWORD *)(msgHandle + 0x184)), (clientmsg_length + 1) * 2); + wstring clientmsgid(temp); + delete[] temp; + temp = NULL; + wstring filename = savepath + sender + L"-" + clientmsgid + L".amr"; + HANDLE hFile = CreateFile(filename.c_str(), GENERIC_ALL, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); + if (hFile == INVALID_HANDLE_VALUE) + { + return; + } + DWORD dwWrite = 0; + WriteFile(hFile, (LPCVOID)buffer, length, &dwWrite, 0); + CloseHandle(hFile); } -__declspec(naked) void dealVoiceMsg() { - __asm { +__declspec(naked) void dealVoiceMsg() +{ + __asm { pushad; pushfd; push edi; @@ -53,38 +55,58 @@ __declspec(naked) void dealVoiceMsg() { popad; call HookVoiceMsgNextCall; jmp HookVoiceMsgJmpBackAddr; - } + } } -void __stdcall HookVoiceMsg() { - WeChatWinBase = GetWeChatWinBase(); - if (VoiceMsgHooked || !WeChatWinBase) - return; - HookVoiceMsgAddr = WeChatWinBase + HookVoiceMsgAddrOffset; - HookVoiceMsgNextCall = WeChatWinBase + HookVoiceMsgNextCallOffset; - HookVoiceMsgJmpBackAddr = HookVoiceMsgAddr + 0x5; - HookAnyAddress(HookVoiceMsgAddr, dealVoiceMsg, VoiceMsgOldAsm); - VoiceMsgHooked = true; +void __stdcall HookVoiceMsg() +{ + WeChatWinBase = GetWeChatWinBase(); + if (VoiceMsgHooked || !WeChatWinBase) + return; + HookVoiceMsgAddr = WeChatWinBase + HookVoiceMsgAddrOffset; + HookVoiceMsgNextCall = WeChatWinBase + HookVoiceMsgNextCallOffset; + HookVoiceMsgJmpBackAddr = HookVoiceMsgAddr + 0x5; + HookAnyAddress(HookVoiceMsgAddr, dealVoiceMsg, VoiceMsgOldAsm); + VoiceMsgHooked = true; } -void UnHookVoiceMsg() { - if (!VoiceMsgHooked) - return; - UnHookAnyAddress(HookVoiceMsgAddr, VoiceMsgOldAsm); - VoiceMsgHooked = false; +void UnHookVoiceMsg() +{ + if (!VoiceMsgHooked) + return; + UnHookAnyAddress(HookVoiceMsgAddr, VoiceMsgOldAsm); + VoiceMsgHooked = false; } #ifndef USE_SOCKET -BOOL HookVoiceMsgRemote(LPVOID lpParameter) { - savepath = (wstring)(wchar_t*)lpParameter; - if (savepath.back() != '\\') { - savepath += L"\\"; - } - wstring createpath = savepath.substr(0, savepath.length() - 1); - if (!FindOrCreateDirectory(createpath.c_str())) { - return false; - } - HookVoiceMsg(); - return true; +BOOL HookVoiceMsgRemote(LPVOID lpParameter) +{ + savepath = (wstring)(wchar_t *)lpParameter; + if (savepath.back() != '\\') + { + savepath += L"\\"; + } + wstring createpath = savepath.substr(0, savepath.length() - 1); + if (!FindOrCreateDirectory(createpath.c_str())) + { + return false; + } + HookVoiceMsg(); + return true; +} +#else +BOOL __stdcall HookVoiceMsg(wstring savepath) +{ + if (savepath.back() != '\\') + { + savepath += L"\\"; + } + wstring createpath = savepath.substr(0, savepath.length() - 1); + if (!FindOrCreateDirectory(createpath.c_str())) + { + return false; + } + HookVoiceMsg(); + return true; } -#endif \ No newline at end of file +#endif diff --git a/DWeChatRobot/ReceiveMessage.h b/DWeChatRobot/ReceiveMessage.h index b6c6325..39e8719 100644 --- a/DWeChatRobot/ReceiveMessage.h +++ b/DWeChatRobot/ReceiveMessage.h @@ -1,5 +1,5 @@ #pragma once -#include +#include #ifndef USE_SOCKET extern "C" __declspec(dllexport) VOID HookReceiveMessage(int port); extern "C" __declspec(dllexport) VOID UnHookReceiveMessage(); @@ -12,7 +12,9 @@ VOID HookReceiveMessage(int port); VOID UnHookReceiveMessage(); void UnHookImageMsg(); void UnHookVoiceMsg(); +BOOL __stdcall HookVoiceMsg(wstring savepath); +BOOL __stdcall HookImageMsg(wstring savepath); #endif void __stdcall HookVoiceMsg(); -void __stdcall HookImageMsg(); \ No newline at end of file +void __stdcall HookImageMsg(); diff --git a/DWeChatRobot/SendAtText.cpp b/DWeChatRobot/SendAtText.cpp index 21a1cc2..59ea674 100644 --- a/DWeChatRobot/SendAtText.cpp +++ b/DWeChatRobot/SendAtText.cpp @@ -6,12 +6,12 @@ #define DeleteAtTextCacheCallOffset 0x78757780 - 0x786A0000 /* -* 外部调用时传递的参数结构 -* chatroomid:群聊ID的保存地址 -* wxidlist:艾特列表的保存地址,真实类型应当是`wchar_t**` -* wxmsg:发送的内容保存地址 -* length:艾特的人数量,用于指示wxidlist长度 -*/ + * 外部调用时传递的参数结构 + * chatroomid:群聊ID的保存地址 + * wxidlist:艾特列表的保存地址,真实类型应当是`wchar_t**` + * wxmsg:发送的内容保存地址 + * length:艾特的人数量,用于指示wxidlist长度 + */ #ifndef USE_SOCKET struct SendAtTextStruct { @@ -24,13 +24,13 @@ struct SendAtTextStruct #endif /* -* 内存中使用的参数结构 -* 构造与Release版本vector动态数组相仿 -* 成员类型:`WxString` -* AtUser:类似`vector`的`data`方法,保存数组首个成员的地址 -* addr_end1:数组尾地址 -* addr_end2:数组尾地址 -*/ + * 内存中使用的参数结构 + * 构造与Release版本vector动态数组相仿 + * 成员类型:`WxString` + * AtUser:类似`vector`的`data`方法,保存数组首个成员的地址 + * addr_end1:数组尾地址 + * addr_end2:数组尾地址 + */ struct AtStruct { DWORD AtUser; @@ -39,10 +39,10 @@ struct AtStruct }; /* -* 供外部调用的发送艾特消息接口 -* lpParameter:SendAtTextStruct类型结构体指针 -* return:void -*/ + * 供外部调用的发送艾特消息接口 + * lpParameter:SendAtTextStruct类型结构体指针 + * return:void + */ #ifndef USE_SOCKET void SendAtTextRemote(LPVOID lpParameter) { @@ -59,15 +59,15 @@ void SendAtTextRemote(LPVOID lpParameter) #endif /* -* 发送艾特消息的具体实现 -* wsChatRoomId:群聊ID -* wsWxId:艾特的人列表 -* wsTextMsg:发送的消息内容 -* length:艾特的人数量 -* AutoNickName:是否自动填充被艾特人昵称 -* return:void -*/ -void __stdcall SendAtText(wchar_t *wsChatRoomId, DWORD wsWxId[], wchar_t *wsTextMsg, int length, BOOL AutoNickName) + * 发送艾特消息的具体实现 + * wsChatRoomId:群聊ID + * wsWxId:艾特的人列表 + * wsTextMsg:发送的消息内容 + * length:艾特的人数量 + * AutoNickName:是否自动填充被艾特人昵称 + * return:BOOL,发送成功返回`1`,发送失败返回`0` + */ +BOOL __stdcall SendAtText(wchar_t *wsChatRoomId, DWORD wsWxId[], wchar_t *wsTextMsg, int length, BOOL AutoNickName) { // +1的作用是补充一个空结构体,将`AtStruct`尾地址设定为空结构的首地址即可 WxString *AtUsers = new WxString[length + 1]; @@ -97,7 +97,7 @@ void __stdcall SendAtText(wchar_t *wsChatRoomId, DWORD wsWxId[], wchar_t *wsText } AtMessage += wsTextMsg; if (!querySuccess) - return; + return FALSE; WxString wxChatRoomId(wsChatRoomId); WxString wxTextMsg((wchar_t *)AtMessage.c_str()); AtStruct at = {0}; @@ -111,7 +111,7 @@ void __stdcall SendAtText(wchar_t *wsChatRoomId, DWORD wsWxId[], wchar_t *wsText DWORD dllBaseAddress = GetWeChatWinBase(); DWORD callAddress = dllBaseAddress + SendAtTextCallOffset; DWORD DeleteTextCacheCall = dllBaseAddress + DeleteAtTextCacheCallOffset; - + int isSuccess = 0; __asm { lea eax, at; push 0x1; @@ -121,10 +121,12 @@ void __stdcall SendAtText(wchar_t *wsChatRoomId, DWORD wsWxId[], wchar_t *wsText lea edx, wxChatRoomId; lea ecx, buffer; call callAddress; + mov isSuccess,eax; add esp, 0xC; lea ecx, buffer; call DeleteTextCacheCall; } delete[] AtUsers; AtUsers = NULL; + return isSuccess == 1; } diff --git a/DWeChatRobot/SendAtText.h b/DWeChatRobot/SendAtText.h index 62940c0..8e24747 100644 --- a/DWeChatRobot/SendAtText.h +++ b/DWeChatRobot/SendAtText.h @@ -1,7 +1,7 @@ #pragma once -#include +#include -void __stdcall SendAtText(wchar_t* wsChatRoomId, DWORD wsWxId[], wchar_t* wsTextMsg, int length, BOOL AutoNickName); +BOOL __stdcall SendAtText(wchar_t *wsChatRoomId, DWORD wsWxId[], wchar_t *wsTextMsg, int length, BOOL AutoNickName); #ifndef USE_SOCKET extern "C" __declspec(dllexport) void SendAtTextRemote(LPVOID lpParameter); -#endif \ No newline at end of file +#endif diff --git a/DWeChatRobot/SendCard.cpp b/DWeChatRobot/SendCard.cpp index 372184b..0ea28f8 100644 --- a/DWeChatRobot/SendCard.cpp +++ b/DWeChatRobot/SendCard.cpp @@ -6,11 +6,11 @@ #define DeleteCardCacheCallOffset 0x78757780 - 0x786A0000 /* -* 外部调用时提供的参数结构 -* receiver:名片消息接收人wxid保存地址 -* sharedwxid:被推荐人的wxid保存地址 -* nickname:名片显示的昵称保存地址 -*/ + * 外部调用时提供的参数结构 + * receiver:名片消息接收人wxid保存地址 + * sharedwxid:被推荐人的wxid保存地址 + * nickname:名片显示的昵称保存地址 + */ #ifndef USE_SOCKET struct SendCardStruct { @@ -21,10 +21,10 @@ struct SendCardStruct #endif /* -* 供外部调用的发送名片接口 -* lparameter:SendCardStruct类型结构体指针 -* return:void -*/ + * 供外部调用的发送名片接口 + * lparameter:SendCardStruct类型结构体指针 + * return:void + */ #ifndef USE_SOCKET VOID SendCardRemote(LPVOID lparameter) { @@ -37,12 +37,12 @@ VOID SendCardRemote(LPVOID lparameter) #endif /* -* 发送名片消息的具体实现 -* receiver:消息接收人wxid -* sharedwxid:被推荐人wxid -* nickname:名片显示的昵称 -* return:BOOL,发送成功返回`0`,发送失败返回`1` -*/ + * 发送名片消息的具体实现 + * receiver:消息接收人wxid + * sharedwxid:被推荐人wxid + * nickname:名片显示的昵称 + * return:BOOL,发送成功返回`1`,发送失败返回`0` + */ BOOL __stdcall SendCard(wchar_t *receiver, wchar_t *sharedwxid, wchar_t *nickname) { DWORD WeChatWinBase = GetWeChatWinBase(); @@ -69,10 +69,10 @@ BOOL __stdcall SendCard(wchar_t *receiver, wchar_t *sharedwxid, wchar_t *nicknam add esp, 0xC; lea ecx, buffer; call DeleteCardCacheCall; - mov isSuccess, eax; + mov isSuccess, eax; popad; } delete[] xml; xml = NULL; - return isSuccess; + return isSuccess == 0; } diff --git a/DWeChatRobot/SendFile.cpp b/DWeChatRobot/SendFile.cpp index 7c07b70..8cbc97b 100644 --- a/DWeChatRobot/SendFile.cpp +++ b/DWeChatRobot/SendFile.cpp @@ -10,10 +10,10 @@ #define DeleteSendFileCacheCallOffset (0x78757780 - 0x786A0000) /* -* 外部调用时传递的参数结构 -* wxid:wxid的保存地址 -* filepath:文件绝对路径的保存地址 -*/ + * 外部调用时传递的参数结构 + * wxid:wxid的保存地址 + * filepath:文件绝对路径的保存地址 + */ #ifndef USE_SOCKET struct FileParamStruct { @@ -23,14 +23,14 @@ struct FileParamStruct #endif /* -* 内存中使用的参数结构 -* type:消息类型,文件消息为3 -* buffer:文件绝对路径 -* length:绝对路径字符数 -* maxLength:绝对路径最大字节数 -* fill:占位用空缓冲区 -* WxFileStruct:默认构造函数 -*/ + * 内存中使用的参数结构 + * type:消息类型,文件消息为3 + * buffer:文件绝对路径 + * length:绝对路径字符数 + * maxLength:绝对路径最大字节数 + * fill:占位用空缓冲区 + * WxFileStruct:默认构造函数 + */ struct WxFileStruct { int type = 3; @@ -48,10 +48,10 @@ struct WxFileStruct }; /* -* 供外部调用的发送文件消息接口 -* lpParamStruct:FileParamStruct类型结构体指针 -* return:void -*/ + * 供外部调用的发送文件消息接口 + * lpParamStruct:FileParamStruct类型结构体指针 + * return:void + */ #ifndef USE_SOCKET void SendFileRemote(LPVOID lpParamStruct) { @@ -61,12 +61,12 @@ void SendFileRemote(LPVOID lpParamStruct) #endif /* -* 发送文件消息的具体实现 -* receiver:接收人wxid -* FilePath:文件绝对路径 -* return:void -*/ -void __stdcall SendFile(wchar_t *receiver, wchar_t *FilePath) + * 发送文件消息的具体实现 + * receiver:接收人wxid + * FilePath:文件绝对路径 + * return:BOOL,发送成功返回`1`,发送失败返回`0` + */ +BOOL __stdcall SendFile(wchar_t *receiver, wchar_t *FilePath) { WxString pReceiver(receiver); WxString pFilePath(FilePath); @@ -85,7 +85,7 @@ void __stdcall SendFile(wchar_t *receiver, wchar_t *FilePath) DWORD edi_ = pReceiver.length; DWORD ptrReceiver = (DWORD)pReceiver.buffer; - + int isSuccess = 0; __asm { pushad; pushfd; @@ -118,9 +118,11 @@ void __stdcall SendFile(wchar_t *receiver, wchar_t *FilePath) lea eax, buffer; push eax; call WxSendFileCall3; + mov isSuccess,eax; lea ecx, buffer; call DeleteSendFileCacheCall; popfd; popad; } + return isSuccess == 1; } diff --git a/DWeChatRobot/SendFile.h b/DWeChatRobot/SendFile.h index b283e1c..15ef623 100644 --- a/DWeChatRobot/SendFile.h +++ b/DWeChatRobot/SendFile.h @@ -1,7 +1,7 @@ #pragma once -#include +#include -void __stdcall SendFile(wchar_t* receiver, wchar_t* FilePath); +BOOL __stdcall SendFile(wchar_t *receiver, wchar_t *FilePath); #ifndef USE_SOCKET extern "C" __declspec(dllexport) void SendFileRemote(LPVOID lpParamStruct); -#endif \ No newline at end of file +#endif diff --git a/DWeChatRobot/SendImage.cpp b/DWeChatRobot/SendImage.cpp index f414a27..d6cf8f9 100644 --- a/DWeChatRobot/SendImage.cpp +++ b/DWeChatRobot/SendImage.cpp @@ -10,10 +10,10 @@ #define DeleteSendImageCacheCallOffset (0x78757780 - 0x786A0000) /* -* 外部调用时传递的参数结构 -* wxid:保存wxid的地址 -* imagepath:保存图片绝对路径的地址 -*/ + * 外部调用时传递的参数结构 + * wxid:保存wxid的地址 + * imagepath:保存图片绝对路径的地址 + */ #ifndef USE_SOCKET struct ImageParamStruct { @@ -23,10 +23,10 @@ struct ImageParamStruct #endif /* -* 供外部调用的发送图片消息接口 -* lpParamStruct:ImageParamStruct类型结构体指针 -* return:void -*/ + * 供外部调用的发送图片消息接口 + * lpParamStruct:ImageParamStruct类型结构体指针 + * return:void + */ #ifndef USE_SOCKET void SendImageRemote(LPVOID lpParamStruct) { @@ -36,12 +36,12 @@ void SendImageRemote(LPVOID lpParamStruct) #endif /* -* 发送图片消息的具体实现 -* receiver:接收人wxid -* ImagePath:图片绝对路径 -* return:void -*/ -void __stdcall SendImage(wchar_t *receiver, wchar_t *ImagePath) + * 发送图片消息的具体实现 + * receiver:接收人wxid + * ImagePath:图片绝对路径 + * return:BOOL,发送成功返回`1`,发送失败返回`0` + */ +BOOL __stdcall SendImage(wchar_t *receiver, wchar_t *ImagePath) { DWORD WeChatWinBase = GetWeChatWinBase(); DWORD SendImageCall1 = WeChatWinBase + SendImageCall1Offset; @@ -54,7 +54,7 @@ void __stdcall SendImage(wchar_t *receiver, wchar_t *ImagePath) WxString pImagePath(ImagePath); WxString nullStruct = {0}; DWORD tempeax = 0; - + int isSuccess = 0; __asm { pushad; call SendImageCall1; @@ -72,8 +72,10 @@ void __stdcall SendImage(wchar_t *receiver, wchar_t *ImagePath) lea eax, buffer; push eax; call SendImageCall3; + mov isSuccess,eax; lea ecx, buffer; call DeleteSendImageCacheCall; popad; } + return isSuccess == 1; } diff --git a/DWeChatRobot/SendImage.h b/DWeChatRobot/SendImage.h index 95ade93..6e8d1c7 100644 --- a/DWeChatRobot/SendImage.h +++ b/DWeChatRobot/SendImage.h @@ -1,7 +1,7 @@ #pragma once -#include +#include -void __stdcall SendImage(wchar_t* receiver, wchar_t* ImagePath); +BOOL __stdcall SendImage(wchar_t *receiver, wchar_t *ImagePath); #ifndef USE_SOCKET extern "C" __declspec(dllexport) void SendImageRemote(LPVOID lpParamStruct); -#endif \ No newline at end of file +#endif diff --git a/DWeChatRobot/SendText.cpp b/DWeChatRobot/SendText.cpp index 1bc08f6..f695185 100644 --- a/DWeChatRobot/SendText.cpp +++ b/DWeChatRobot/SendText.cpp @@ -6,10 +6,10 @@ #define DeleteTextCacheCallOffset 0x78757780 - 0x786A0000 /* -* 外部调用时传递的参数结构 -* wxid:wxid保存地址 -* wxmsg:发送的内容保存地址 -*/ + * 外部调用时传递的参数结构 + * wxid:wxid保存地址 + * wxmsg:发送的内容保存地址 + */ #ifndef USE_SOCKET struct SendTextStruct { @@ -19,10 +19,10 @@ struct SendTextStruct #endif /* -* 供外部调用的发送文本消息接口 -* lpParameter:SendTextStruct类型结构体指针 -* return:void -*/ + * 供外部调用的发送文本消息接口 + * lpParameter:SendTextStruct类型结构体指针 + * return:void + */ #ifndef USE_SOCKET void SendTextRemote(LPVOID lpParameter) { @@ -34,12 +34,12 @@ void SendTextRemote(LPVOID lpParameter) #endif /* -* 发送文本消息的具体实现 -* wsWxId:接收人wxid -* wsTextMsg:发送的消息内容 -* return:void -*/ -void __stdcall SendText(wchar_t *wsWxId, wchar_t *wsTextMsg) + * 发送文本消息的具体实现 + * wsWxId:接收人wxid + * wsTextMsg:发送的消息内容 + * return:BOOL,发送成功返回`1`,发送失败返回`0` + */ +BOOL __stdcall SendText(wchar_t *wsWxId, wchar_t *wsTextMsg) { WxString wxWxid(wsWxId); WxString wxTextMsg(wsTextMsg); @@ -50,7 +50,7 @@ void __stdcall SendText(wchar_t *wsWxId, wchar_t *wsTextMsg) DWORD dllBaseAddress = GetWeChatWinBase(); DWORD callAddress = dllBaseAddress + SendTextCallOffset; DWORD DeleteTextCacheCall = dllBaseAddress + DeleteTextCacheCallOffset; - + int isSuccess = 0; __asm { pushad; lea eax, wxNull; @@ -61,9 +61,11 @@ void __stdcall SendText(wchar_t *wsWxId, wchar_t *wsTextMsg) lea edx, wxWxid; lea ecx, buffer; call callAddress; + mov isSuccess,eax; add esp, 0xC; lea ecx, buffer; call DeleteTextCacheCall; popad; } + return isSuccess == 1; } diff --git a/DWeChatRobot/SendText.h b/DWeChatRobot/SendText.h index 5f58dcc..ee8ef32 100644 --- a/DWeChatRobot/SendText.h +++ b/DWeChatRobot/SendText.h @@ -1,7 +1,7 @@ #pragma once -#include +#include -void __stdcall SendText(wchar_t* wsWxId, wchar_t* wsTextMsg); +BOOL __stdcall SendText(wchar_t *wsWxId, wchar_t *wsTextMsg); #ifndef USE_SOCKET extern "C" __declspec(dllexport) void SendTextRemote(LPVOID lpParameter); -#endif \ No newline at end of file +#endif diff --git a/DWeChatRobot/http_overload.hpp b/DWeChatRobot/http_overload.hpp index d10eede..3d4de4c 100644 --- a/DWeChatRobot/http_overload.hpp +++ b/DWeChatRobot/http_overload.hpp @@ -4,16 +4,16 @@ #ifdef USE_SOCKET #define WS2LW(wstr) (LPWSTR) wstr.c_str() -void __stdcall SendText(wstring wxid, wstring msg) +BOOL __stdcall SendText(wstring wxid, wstring msg) { return SendText(WS2LW(wxid), WS2LW(msg)); } -void __stdcall SendAtText(wstring wsChatRoomId, vector wxids, wstring wsTextMsg, BOOL AutoNickName) +BOOL __stdcall SendAtText(wstring wsChatRoomId, vector wxids, wstring wsTextMsg, BOOL AutoNickName) { vector wxid_list; - for (auto wxid : wxids) - wxid_list.push_back((DWORD)wxid.c_str()); + for (unsigned int i = 0; i < wxids.size(); i++) + wxid_list.push_back((DWORD)wxids[i].c_str()); return SendAtText(WS2LW(wsChatRoomId), wxid_list.data(), WS2LW(wsTextMsg), wxid_list.size(), AutoNickName); } @@ -22,12 +22,12 @@ BOOL __stdcall SendCard(wstring receiver, wstring sharedwxid, wstring nickname) return SendCard(WS2LW(receiver), WS2LW(sharedwxid), WS2LW(nickname)); } -void __stdcall SendImage(wstring receiver, wstring ImagePath) +BOOL __stdcall SendImage(wstring receiver, wstring ImagePath) { return SendImage(WS2LW(receiver), WS2LW(ImagePath)); } -void __stdcall SendFile(wstring receiver, wstring FilePath) +BOOL __stdcall SendFile(wstring receiver, wstring FilePath) { return SendFile(WS2LW(receiver), WS2LW(FilePath)); } @@ -90,16 +90,16 @@ wstring __stdcall GetChatRoomMemberNickname(wstring chatroomid, wstring wxid) BOOL __stdcall DelChatRoomMember(wstring chatroomid, vector wxids) { vector wxid_list; - for (auto wxid : wxids) - wxid_list.push_back((wchar_t *)wxid.c_str()); + for (unsigned int i = 0; i < wxids.size(); i++) + wxid_list.push_back(WS2LW(wxids[i])); return DelChatRoomMember(WS2LW(chatroomid), wxid_list.data(), wxid_list.size()); } BOOL __stdcall AddChatRoomMember(wstring chatroomid, vector wxids) { vector wxid_list; - for (auto wxid : wxids) - wxid_list.push_back((wchar_t *)wxid.c_str()); + for (unsigned int i = 0; i < wxids.size(); i++) + wxid_list.push_back(WS2LW(wxids[i])); return AddChatRoomMember(WS2LW(chatroomid), wxid_list.data(), wxid_list.size()); } @@ -123,9 +123,9 @@ BOOL __stdcall ChangeWeChatVersion(wstring verStr) return ChangeWeChatVer(WS2LW(verStr)); } -int __stdcall BackupSQLiteDB(DWORD DbHandle, wstring BackupFile) +BOOL __stdcall BackupSQLiteDB(DWORD DbHandle, wstring BackupFile) { string filepath = unicode_to_utf8(WS2LW(BackupFile)); - return BackupSQLiteDB(DbHandle, filepath.c_str()); + return BackupSQLiteDB(DbHandle, filepath.c_str()) == SQLITE_OK; } #endif diff --git a/DWeChatRobot/pch.cpp b/DWeChatRobot/pch.cpp index 999de2b..47eb8c9 100644 --- a/DWeChatRobot/pch.cpp +++ b/DWeChatRobot/pch.cpp @@ -1,13 +1,14 @@ 锘// pch.cpp: 涓庨缂栬瘧鏍囧ご瀵瑰簲鐨勬簮鏂囦欢 #include "pch.h" +#include // 褰撲娇鐢ㄩ缂栬瘧鐨勫ご鏃讹紝闇瑕佷娇鐢ㄦ婧愭枃浠讹紝缂栬瘧鎵嶈兘鎴愬姛銆 /* -* 鍒涘缓涓涓帶鍒跺彴绐楀彛 -* return锛欱OOL锛屾垚鍔熻繑鍥瀈0`锛屽け璐ヨ繑鍥瀈1` -*/ + * 鍒涘缓涓涓帶鍒跺彴绐楀彛 + * return锛欱OOL锛屾垚鍔熻繑鍥瀈0`锛屽け璐ヨ繑鍥瀈1` + */ BOOL CreateConsole(void) { if (AllocConsole()) @@ -26,9 +27,9 @@ BOOL CreateConsole(void) } /* -* 鑾峰彇`WeChatWin.dll`鍩哄潃 -* return锛欴WORD锛宍WeChatWin.dll`妯″潡鍩哄潃 -*/ + * 鑾峰彇`WeChatWin.dll`鍩哄潃 + * return锛欴WORD锛宍WeChatWin.dll`妯″潡鍩哄潃 + */ DWORD GetWeChatWinBase() { return (DWORD)GetModuleHandleA("WeChatWin.dll"); @@ -52,8 +53,8 @@ BOOL FindOrCreateDirectory(const wchar_t *pszPath) } /* -* 灏嗗瀛楄妭瀛楃涓茶浆鎹㈡垚`std::string` -*/ + * 灏嗗瀛楄妭瀛楃涓茶浆鎹㈡垚`std::string` + */ string unicode_to_gb2312(wchar_t *wchar) { wchar_t *wText = wchar; @@ -67,8 +68,8 @@ string unicode_to_gb2312(wchar_t *wchar) } /* -* 灏哢TF8缂栫爜鏁版嵁杞崲涓篏BK缂栫爜 -*/ + * 灏哢TF8缂栫爜鏁版嵁杞崲涓篏BK缂栫爜 + */ string utf8_to_gb2312(const char *strUTF8) { int len = MultiByteToWideChar(CP_UTF8, 0, strUTF8, -1, NULL, 0); @@ -87,8 +88,8 @@ string utf8_to_gb2312(const char *strUTF8) } /* -* 灏哢TF8缂栫爜鏁版嵁杞崲涓篏BK缂栫爜 -*/ + * 灏哢TF8缂栫爜鏁版嵁杞崲涓篏BK缂栫爜 + */ wstring utf8_to_unicode(const char *buffer) { int c_size = MultiByteToWideChar(CP_UTF8, 0, buffer, -1, 0, 0); @@ -114,12 +115,12 @@ string unicode_to_utf8(wchar_t *wstr) } /* -* 瀵逛换鎰忓湴鍧娣诲姞HOOK -* dwHookAddr锛欻OOK鐨勭洰鏍囧湴鍧 -* dwJmpAddress锛氳烦杞埌鐨勫湴鍧 -* originalRecieveCode锛氫繚瀛樻棫鎸囦护鐨勬暟缁 -* return锛歷oid -*/ + * 瀵逛换鎰忓湴鍧娣诲姞HOOK + * dwHookAddr锛欻OOK鐨勭洰鏍囧湴鍧 + * dwJmpAddress锛氳烦杞埌鐨勫湴鍧 + * originalRecieveCode锛氫繚瀛樻棫鎸囦护鐨勬暟缁 + * return锛歷oid + */ void HookAnyAddress(DWORD dwHookAddr, LPVOID dwJmpAddress, char *originalRecieveCode) { //缁勮璺宠浆鏁版嵁 @@ -144,11 +145,11 @@ void HookAnyAddress(DWORD dwHookAddr, LPVOID dwJmpAddress, char *originalRecieve } /* -* 瀵逛换鎰忓湴鍧鍙栨秷HOOK -* dwHookAddr锛欻OOK鐨勭洰鏍囧湴鍧 -* originalRecieveCode锛氫繚瀛樻棫鎸囦护鐨勬暟缁 -* return锛歷oid -*/ + * 瀵逛换鎰忓湴鍧鍙栨秷HOOK + * dwHookAddr锛欻OOK鐨勭洰鏍囧湴鍧 + * originalRecieveCode锛氫繚瀛樻棫鎸囦护鐨勬暟缁 + * return锛歷oid + */ void UnHookAnyAddress(DWORD dwHookAddr, char *originalRecieveCode) { DWORD OldProtext = 0; @@ -158,9 +159,9 @@ void UnHookAnyAddress(DWORD dwHookAddr, char *originalRecieveCode) } /* -* 鍙栨秷鎵鏈塇OOK -* return锛歷oid -*/ + * 鍙栨秷鎵鏈塇OOK + * return锛歷oid + */ void UnHookAll() { UnHookLogMsgInfo(); @@ -173,12 +174,12 @@ void UnHookAll() } /* -* 灏嗗崟瀛楃鏇挎崲涓烘寚瀹氱殑瀛楃涓 -* source锛氭簮瀛楃涓 -* replaced锛氳鏇挎崲鐨勫崟瀛楃 -* replaceto锛氭浛鎹㈡垚鐨勫瓧绗︿覆 -* return锛歴td::wstring锛屾浛鎹㈠悗鐨勫瓧绗︿覆 -*/ + * 灏嗗崟瀛楃鏇挎崲涓烘寚瀹氱殑瀛楃涓 + * source锛氭簮瀛楃涓 + * replaced锛氳鏇挎崲鐨勫崟瀛楃 + * replaceto锛氭浛鎹㈡垚鐨勫瓧绗︿覆 + * return锛歴td::wstring锛屾浛鎹㈠悗鐨勫瓧绗︿覆 + */ wstring wreplace(wstring source, wchar_t replaced, wstring replaceto) { wstring temp = L""; @@ -196,8 +197,8 @@ wstring wreplace(wstring source, wchar_t replaced, wstring replaceto) } /* -* 鑾峰彇褰撳墠鏃堕棿 -*/ + * 鑾峰彇褰撳墠鏃堕棿 + */ wstring GetTimeW(long long timestamp) { wchar_t *wstr = new wchar_t[20]; @@ -217,7 +218,6 @@ void PrintProcAddr() { CreateConsole(); printf("WeChatVersion %s\n", GetWeChatVerStr().c_str()); -#ifndef USE_SOCKET printf("SendImage 0x%08X\n", (DWORD)SendImage); printf("SendText 0x%08X\n", (DWORD)SendText); printf("SendFile 0x%08X\n", (DWORD)SendFile); @@ -226,8 +226,11 @@ void PrintProcAddr() printf("GetUserInfoByWxId 0x%08X\n", (DWORD)GetUserInfoByWxId); printf("SendArticle 0x%08X\n", (DWORD)SendArticle); printf("SendCard 0x%08X\n", (DWORD)SendCard); - printf("CheckFriendStatus 0x%08X\n", (DWORD)CheckFriendStatus); - printf("GetChatRoomMembers 0x%08X\n", (DWORD)GetChatRoomMembers); + void(__stdcall * check_friend_status)(wchar_t *) = CheckFriendStatus; + printf("CheckFriendStatus 0x%08X\n", (DWORD)check_friend_status); + BOOL(__stdcall * get_chatroom_members) + (wchar_t *) = GetChatRoomMembers; + printf("GetChatRoomMembers 0x%08X\n", (DWORD)get_chatroom_members); printf("ExecuteSql 0x%08X\n", (DWORD)ExecuteSQL); printf("BackupSQLiteDB 0x%08X\n", (DWORD)BackupSQLiteDB); printf("VerifyFriendApply 0x%08X\n", (DWORD)VerifyFriendApply); @@ -235,13 +238,13 @@ void PrintProcAddr() printf("AddFriendByWxid 0x%08X\n", (DWORD)AddFriendByWxid); printf("AddBrandContact 0x%08X\n", (DWORD)AddBrandContact); printf("SelectData 0x%08X\n", (DWORD)SelectData); - printf("SearchContactByNet 0x%08X\n", (DWORD)SearchContactByNet); + void *(__stdcall * search_contact_by_net)(wchar_t *) = SearchContactByNet; + printf("SearchContactByNet 0x%08X\n", (DWORD)search_contact_by_net); printf("AddChatRoomMember 0x%08X\n", (DWORD)AddChatRoomMember); printf("DelChatRoomMember 0x%08X\n", (DWORD)DelChatRoomMember); printf("SetChatRoomAnnouncement 0x%08X\n", (DWORD)SetChatRoomAnnouncement); printf("SetChatRoomSelfNickname 0x%08X\n", (DWORD)SetChatRoomSelfNickname); printf("SetChatRoomName 0x%08X\n", (DWORD)SetChatRoomName); -#endif } BOOL ProcessIsWeChat() diff --git a/DWeChatRobot/wxsocket.cpp b/DWeChatRobot/wxsocket.cpp index 0981708..e30a890 100644 --- a/DWeChatRobot/wxsocket.cpp +++ b/DWeChatRobot/wxsocket.cpp @@ -92,7 +92,14 @@ static int get_http_param_int(mg_http_message *hm, json jData, string key, int m } case HTTP_METHOD_POST: { - result = STOI_S((string)jData[key]); + try + { + result = jData[key]; + } + catch (json::exception) + { + result = STOI_S((string)jData[key]); + } break; } default: @@ -122,21 +129,42 @@ static vector get_http_param_array(mg_http_message *hm, json jData, str return result; } -void request_event(mg_http_message *hm) +void request_event(mg_http_message *hm, string &ret) { int method = I_METHOD(getMgStrA(hm->method)); // 第四个参数设置为false,不抛出异常 json jData = json::parse(hm->body.ptr, hm->body.ptr + hm->body.len, nullptr, false); if (jData.is_discarded() == true && method == HTTP_METHOD_POST) + { + json ret_data = {{"result", "ERROR"}, + {"err_msg", "json string is invalid."}}; + ret = ret_data.dump(); return; - int num = STOI_S(getMgVarA(hm, "type")); - switch (num) + } + int api_number = STOI_S(getMgVarA(hm, "type")); + switch (api_number) + { + case WECHAT_IS_LOGIN: + { + BOOL logined = isWxLogin(); + json ret_data = {{"is_login", logined}, {"result", "OK"}}; + ret = ret_data.dump(); + break; + } + case WECHAT_GET_SELF_INFO: { + wstring self_info = GetSelfInfo(); + json ret_data = {{"self_info", unicode_to_utf8(WS2LW(self_info))}, {"result", "OK"}}; + ret = ret_data.dump(); + break; + } case WECHAT_MSG_SEND_TEXT: { wstring wxid = get_http_param_str(hm, jData, "wxid", method); wstring msg = get_http_param_str(hm, jData, "msg", method); - SendText(wxid, msg); + BOOL status = SendText(wxid, msg); + json ret_data = {{"msg", 1}, {"result", "OK"}}; + ret = ret_data.dump(); break; } case WECHAT_MSG_SEND_AT: @@ -145,7 +173,9 @@ void request_event(mg_http_message *hm) vector wxids = get_http_param_array(hm, jData, "wxids", method); wstring msg = get_http_param_str(hm, jData, "msg", method); int auto_nickname = get_http_param_int(hm, jData, "auto_nickname", method); - SendAtText(chatroom, wxids, msg, auto_nickname); + BOOL status = SendAtText(chatroom, wxids, msg, auto_nickname); + json ret_data = {{"msg", status}, {"result", "OK"}}; + ret = ret_data.dump(); break; } case WECHAT_MSG_SEND_CARD: @@ -153,21 +183,27 @@ void request_event(mg_http_message *hm) wstring receiver = get_http_param_str(hm, jData, "receiver", method); wstring shared_wxid = get_http_param_str(hm, jData, "shared_wxid", method); wstring nickname = get_http_param_str(hm, jData, "nickname", method); - SendCard(receiver, shared_wxid, nickname); + BOOL status = SendCard(receiver, shared_wxid, nickname); + json ret_data = {{"msg", status}, {"result", "OK"}}; + ret = ret_data.dump(); break; } case WECHAT_MSG_SEND_IMAGE: { wstring receiver = get_http_param_str(hm, jData, "receiver", method); wstring img_path = get_http_param_str(hm, jData, "img_path", method); - SendImage(receiver, img_path); + BOOL status = SendImage(receiver, img_path); + json ret_data = {{"msg", status}, {"result", "OK"}}; + ret = ret_data.dump(); break; } case WECHAT_MSG_SEND_FILE: { wstring receiver = get_http_param_str(hm, jData, "receiver", method); wstring file_path = get_http_param_str(hm, jData, "file_path", method); - SendFile(receiver, file_path); + BOOL status = SendFile(receiver, file_path); + json ret_data = {{"msg", status}, {"result", "OK"}}; + ret = ret_data.dump(); break; } case WECHAT_MSG_SEND_ARTICLE: @@ -177,14 +213,287 @@ void request_event(mg_http_message *hm) wstring abstract = get_http_param_str(hm, jData, "abstract", method); wstring url = get_http_param_str(hm, jData, "url", method); wstring img_path = get_http_param_str(hm, jData, "img_path", method); - SendArticle(wxid, title, abstract, url, img_path); + BOOL status = SendArticle(wxid, title, abstract, url, img_path); + json ret_data = {{"msg", status}, {"result", "OK"}}; + ret = ret_data.dump(); break; } case WECHAT_MSG_SEND_APP: { wstring wxid = get_http_param_str(hm, jData, "wxid", method); wstring appid = get_http_param_str(hm, jData, "appid", method); - SendAppMsg(wxid, appid); + BOOL status = SendAppMsg(wxid, appid); + json ret_data = {{"msg", status}, {"result", "OK"}}; + ret = ret_data.dump(); + break; + } + case WECHAT_MSG_START_HOOK: + { + int port = get_http_param_int(hm, jData, "port", method); + HookReceiveMessage(port); + break; + } + case WECHAT_MSG_STOP_HOOK: + { + UnHookReceiveMessage(); + break; + } + case WECHAT_MSG_START_IMAGE_HOOK: + { + wstring savepath = get_http_param_str(hm, jData, "save_path", method); + BOOL status = HookImageMsg(savepath); + json ret_data = {{"msg", status}, {"result", "OK"}}; + ret = ret_data.dump(); + break; + } + case WECHAT_MSG_STOP_IMAGE_HOOK: + { + UnHookImageMsg(); + break; + } + case WECHAT_MSG_START_VOICE_HOOK: + { + wstring savepath = get_http_param_str(hm, jData, "save_path", method); + BOOL status = HookVoiceMsg(savepath); + json ret_data = {{"msg", status}, {"result", "OK"}}; + ret = ret_data.dump(); + break; + } + case WECHAT_MSG_STOP_VOICE_HOOK: + { + UnHookVoiceMsg(); + break; + } + case WECHAT_CONTACT_GET_LIST: + { + vector friend_list = GetWxContact(); + json ret_data = {{"data", json::array()}, {"result", "OK"}}; + for (unsigned int i = 0; i < friend_list.size() - 1; i++) + { + json f_j; + WxFriendStruct f = friend_list[i]; + DWORD buffer_addr = *(DWORD *)f.wxIdAddr; + wstring wxid = buffer_addr != 0 ? wstring((wchar_t *)buffer_addr) : L""; + buffer_addr = *(DWORD *)f.wxNumberAddr; + wstring wxNumber = buffer_addr != 0 ? wstring((wchar_t *)buffer_addr) : L""; + buffer_addr = *(DWORD *)f.wxNickNameAddr; + wstring wxNickName = buffer_addr != 0 ? wstring((wchar_t *)buffer_addr) : L""; + buffer_addr = *(DWORD *)f.wxRemarkAddr; + wstring wxRemark = buffer_addr != 0 ? wstring((wchar_t *)buffer_addr) : L""; + f_j["wxid"] = unicode_to_utf8(WS2LW(wxid)); + f_j["wxNumber"] = unicode_to_utf8(WS2LW(wxNumber)); + f_j["wxNickName"] = unicode_to_utf8(WS2LW(wxNickName)); + f_j["wxRemark"] = unicode_to_utf8(WS2LW(wxRemark)); + ret_data["data"].push_back(f_j); + } + ret = ret_data.dump(); + break; + } + case WECHAT_CONTACT_CHECK_STATUS: + { + wstring wxid = get_http_param_str(hm, jData, "wxid", method); + int status_code = CheckFriendStatus(wxid); + json ret_data = {{"status", status_code}, {"result", "OK"}}; + ret = ret_data.dump(); + break; + } + case WECHAT_CONTACT_DEL: + { + wstring wxid = get_http_param_str(hm, jData, "wxid", method); + BOOL status = DeleteUser(wxid); + json ret_data = {{"msg", status}, {"result", "OK"}}; + ret = ret_data.dump(); + break; + } + case WECHAT_CONTACT_SEARCH_BY_CACHE: + { + wstring wxid = get_http_param_str(hm, jData, "wxid", method); + wstring userinfo = GetUserInfoByWxId(wxid); + json ret_data = {{"userinfo", unicode_to_utf8(WS2LW(userinfo))}, {"result", "OK"}}; + ret = ret_data.dump(); + break; + } + case WECHAT_CONTACT_SEARCH_BY_NET: + { + wstring keyword = get_http_param_str(hm, jData, "keyword", method); + map userinfo = SearchContactByNet(keyword); + json ret_data; + for (auto it : userinfo) + { + string key = unicode_to_utf8(WS2LW(it.first)); + ret_data[key] = unicode_to_utf8(WS2LW(it.second)); + } + ret = ret_data.dump(); + break; + } + case WECHAT_CONTACT_ADD_BY_WXID: + { + wstring wxid = get_http_param_str(hm, jData, "wxid", method); + wstring msg = get_http_param_str(hm, jData, "msg", method); + BOOL status = AddFriendByWxid(wxid, msg); + json ret_data = {{"msg", status}, {"result", "OK"}}; + ret = ret_data.dump(); + break; + } + case WECHAT_CONTACT_ADD_BY_V3: + { + wstring v3 = get_http_param_str(hm, jData, "v3", method); + wstring msg = get_http_param_str(hm, jData, "msg", method); + int add_type = get_http_param_int(hm, jData, "add_type", method); + BOOL status = AddFriendByV3(v3, msg, add_type); + json ret_data = {{"msg", status}, {"result", "OK"}}; + ret = ret_data.dump(); + break; + } + case WECHAT_CONTACT_ADD_BY_PUBLIC_ID: + { + wstring public_id = get_http_param_str(hm, jData, "public_id", method); + BOOL status = AddBrandContact(public_id); + json ret_data = {{"msg", status}, {"result", "OK"}}; + ret = ret_data.dump(); + break; + } + case WECHAT_CONTACT_VERIFY_APPLY: + { + wstring v3 = get_http_param_str(hm, jData, "v3", method); + wstring v4 = get_http_param_str(hm, jData, "v4", method); + BOOL status = VerifyFriendApply(v3, v4); + json ret_data = {{"msg", status}, {"result", "OK"}}; + ret = ret_data.dump(); + break; + } + case WECHAT_CONTACT_EDIT_REMARK: + { + wstring wxid = get_http_param_str(hm, jData, "wxid", method); + wstring remark = get_http_param_str(hm, jData, "remark", method); + BOOL status = EditRemark(wxid, remark); + json ret_data = {{"msg", status}, {"result", "OK"}}; + ret = ret_data.dump(); + break; + } + case WECHAT_CHATROOM_GET_MEMBER_LIST: + { + wstring chatroom_id = get_http_param_str(hm, jData, "chatroom_id", method); + wstring members = GetChatRoomMembers(chatroom_id); + json ret_data = {{"members", unicode_to_utf8(WS2LW(members))}, {"result", "OK"}}; + ret = ret_data.dump(); + break; + } + case WECHAT_CHATROOM_GET_MEMBER_NICKNAME: + { + wstring chatroom_id = get_http_param_str(hm, jData, "chatroom_id", method); + wstring wxid = get_http_param_str(hm, jData, "wxid", method); + wstring nickname = GetChatRoomMemberNickname(chatroom_id, wxid); + json ret_data = {{"nickname", unicode_to_utf8(WS2LW(nickname))}, {"result", "OK"}}; + ret = ret_data.dump(); + break; + } + case WECHAT_CHATROOM_DEL_MEMBER: + { + wstring chatroom_id = get_http_param_str(hm, jData, "chatroom_id", method); + vector wxids = get_http_param_array(hm, jData, "wxids", method); + BOOL status = DelChatRoomMember(chatroom_id, wxids); + json ret_data = {{"msg", status}, {"result", "OK"}}; + ret = ret_data.dump(); + break; + } + case WECHAT_CHATROOM_ADD_MEMBER: + { + wstring chatroom_id = get_http_param_str(hm, jData, "chatroom_id", method); + vector wxids = get_http_param_array(hm, jData, "wxids", method); + BOOL status = AddChatRoomMember(chatroom_id, wxids); + json ret_data = {{"msg", status}, {"result", "OK"}}; + ret = ret_data.dump(); + break; + } + case WECHAT_CHATROOM_SET_ANNOUNCEMENT: + { + wstring chatroom_id = get_http_param_str(hm, jData, "chatroom_id", method); + wstring announcement = get_http_param_str(hm, jData, "announcement", method); + BOOL status = SetChatRoomAnnouncement(chatroom_id, announcement); + json ret_data = {{"msg", status}, {"result", "OK"}}; + ret = ret_data.dump(); + break; + } + case WECHAT_CHATROOM_SET_CHATROOM_NAME: + { + wstring chatroom_id = get_http_param_str(hm, jData, "chatroom_id", method); + wstring new_name = get_http_param_str(hm, jData, "chatroom_name", method); + BOOL status = SetChatRoomName(chatroom_id, new_name); + json ret_data = {{"msg", status}, {"result", "OK"}}; + ret = ret_data.dump(); + break; + } + case WECHAT_CHATROOM_SET_SELF_NICKNAME: + { + wstring chatroom_id = get_http_param_str(hm, jData, "chatroom_id", method); + wstring nickname = get_http_param_str(hm, jData, "nickname", method); + BOOL status = SetChatRoomSelfNickname(chatroom_id, nickname); + json ret_data = {{"msg", status}, {"result", "OK"}}; + ret = ret_data.dump(); + break; + } + case WECHAT_DATABASE_GET_HANDLES: + { + vector v_ptr = GetDbHandles(); + json ret_data = {{"data", json::array()}, {"result", "OK"}}; + for (unsigned int i = 0; i < v_ptr.size(); i++) + { + json db_info; + db_info["tables"] = json::array(); + DbInfoStruct *db = reinterpret_cast(v_ptr[i]); + db_info["handle"] = db->handle; + db_info["db_name"] = unicode_to_utf8(db->dbname); + for (auto table : db->tables) + { + json table_info = {{"name", table.name}, {"tbl_name", table.tbl_name}, {"sql", table.sql}, {"rootpage", table.rootpage}}; + db_info["tables"].push_back(table_info); + } + ret_data["data"].push_back(db_info); + } + ret = ret_data.dump(); + break; + } + case WECHAT_DATABASE_BACKUP: + { + DWORD db_handle = get_http_param_int(hm, jData, "db_handle", method); + wstring savepath = get_http_param_str(hm, jData, "save_path", method); + BOOL status = BackupSQLiteDB(db_handle, savepath); + json ret_data = {{"msg", status}, {"result", "OK"}}; + ret = ret_data.dump(); + break; + } + case WECHAT_DATABASE_QUERY: + { + DWORD db_handle = get_http_param_int(hm, jData, "db_handle", method); + wstring sql = get_http_param_str(hm, jData, "sql", method); + string a_sql = unicode_to_utf8(WS2LW(sql)); + // TODO: 数据库查询目前不可用 + // SelectData(db_handle, a_sql.c_str(), NULL); + break; + } + case WECHAT_SET_VERSION: + { + wstring versionStr = get_http_param_str(hm, jData, "version", method); + BOOL status = ChangeWeChatVersion(versionStr); + json ret_data = {{"msg", status}, {"result", "OK"}}; + ret = ret_data.dump(); + break; + } + case WECHAT_LOG_START_HOOK: + { +#ifndef _DEBUG + CreateConsole(); +#endif + HookLogMsgInfo(); + break; + } + case WECHAT_LOG_STOP_HOOK: + { +#ifndef _DEBUG + FreeConsole(); +#endif + UnHookLogMsgInfo(); break; } default: @@ -197,7 +506,9 @@ void request_event(mg_http_message *hm) // Simply serve static files from `s_root_dir` static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) { +#ifdef _DEBUG wcout.imbue(locale("chs")); +#endif switch (ev) { case MG_EV_HTTP_MSG: @@ -213,17 +524,19 @@ static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) (int)hm->uri.len, hm->uri.ptr, (int)tmp.uri.len, tmp.uri.ptr, (int)cl->len, cl->ptr)); #endif + string ret = R"({"result":"OK"})"; if (mg_http_match_uri(hm, "/api/")) { try { - request_event(hm); - mg_http_reply(c, 200, "", "{\"result\": \"OK\"}", 0, 0); + request_event(hm, ret); } - catch (json::exception) + catch (json::exception &e) { - mg_http_reply(c, 200, "", "{\"result\": \"ERROR\"}", 0, 0); + json res = {{"result", "ERROR"}, {"err_msg", e.what()}}; + ret = res.dump(); } + mg_http_reply(c, 200, "", ret.c_str(), 0, 0); } else if (mg_http_match_uri(hm, "/api/f2/*")) { diff --git a/DWeChatRobot/wxsocketapi.h b/DWeChatRobot/wxsocketapi.h index 4f335c8..592b3e0 100644 --- a/DWeChatRobot/wxsocketapi.h +++ b/DWeChatRobot/wxsocketapi.h @@ -20,7 +20,10 @@ typedef enum HTTP_METHODSTag typedef enum WECHAT_HTTP_APISTag { - WECHAT_GET_SELF_INFO = 1, + // login check + WECHAT_IS_LOGIN = 0, + // self info + WECHAT_GET_SELF_INFO, // send message WECHAT_MSG_SEND_TEXT, WECHAT_MSG_SEND_AT, diff --git a/Python/wxRobot.py b/Python/wxRobot.py index 59c3ca6..83ef587 100644 --- a/Python/wxRobot.py +++ b/Python/wxRobot.py @@ -62,7 +62,7 @@ class ReceiveMsgBaseServer(socketserver.BaseRequestHandler): _fields_ = [("pid", ctypes.wintypes.DWORD), ("type", ctypes.wintypes.DWORD), ("isSendMsg", ctypes.wintypes.DWORD), - ("msgid",ctypes.c_ulonglong), + ("msgid", ctypes.c_ulonglong), ("sender", ctypes.c_wchar * 80), ("wxid", ctypes.c_wchar * 80), ("message", ctypes.c_wchar * 0x1000B), @@ -102,10 +102,10 @@ class ReceiveMsgBaseServer(socketserver.BaseRequestHandler): @staticmethod def msg_callback(data): # 涓荤嚎绋嬩腑宸茬粡娉ㄥ叆锛屾澶勭姝㈣皟鐢⊿tartService鍜孲topService - msg = {'pid': data.pid, 'time': data.time, 'type': data.type, + msg = {'pid': data.pid, 'time': data.time, 'type': data.type, 'isSendMsg': data.isSendMsg, 'msgid': data.msgid, 'wxid': data.wxid, - 'sendto' if data.isSendMsg else 'from': data.sender, + 'sendto' if data.isSendMsg else 'from': data.sender, 'message': data.message} robot = comtypes.client.CreateObject("WeChatRobot.CWeChatRobot") event = comtypes.client.CreateObject("WeChatRobot.RobotEvent") @@ -1047,7 +1047,7 @@ def get_wechat_pid_list() -> list: if psutil.Process(pid).name() == 'WeChat.exe': pid_list.append(pid) except psutil.NoSuchProcess: - pass + pass return pid_list @@ -1108,10 +1108,10 @@ def start_socket_server(port: int = 10808, ---------- port : int socket鐨勭洃鍚鍙e彿. - + request_handler : ReceiveMsgBaseServer 鐢ㄤ簬澶勭悊娑堟伅鐨勭被锛岄渶瑕佺户鎵胯嚜socketserver.BaseRequestHandler鎴朢eceiveMsgBaseServer - + main_thread : bool 鏄惁鍦ㄤ富绾跨▼涓惎鍔╯erver diff --git a/Release/CWeChatRobot.exe b/Release/CWeChatRobot.exe index e1392d37faf26b800b2f081b1607934c738f7f93..e628e019752e9872a4e492f26ca6c7eda94ff1b5 100644 GIT binary patch delta 240 zcmZp8!_n}DV}cE%#6(-?`k(x>9QWpZ5rW|@V(CJgf&BNF>fj!1Pz)onZQ- z@I)ZJlJ$e|elY!2cmt5$oA*^n07%zJe-xetrXlh*(%eFO!1Bppx<>k&Fo++NnVbQ% zlTm1*qQqnYMh=#|gAB==Wf<=;HL+}CVVpAyEHHh+JVpr!YY&XI{l+}TE5gcOLc$u; q5B_u6BYVp#>f=FeMg|537ps`CU?T%VOJ{BE7~jh6=QlALHUj_*pJng> delta 259 zcmZp8!_n}DV}cE%z(iZ;dPcrkj;{G%gkac5JYC2e$QPITAnXaIzY9Bn>94|$VEUtQ zCXfzf`5^2LroRe%0BP6!uRtvkK!Krilg|O)T4380XAl0f|jtFpp6J!rB94ZND*(@rtl= tZ%pA^&xh<@&CLt0x9=^rU<4ZNY84Yul%JKFTv8n4oS(b>{3b@jW&q;ETZ8}r diff --git a/Release/DWeChatRobot.dll b/Release/DWeChatRobot.dll index 4e545183aeeedbe39ad882b8528f3943f3f594d6..5371811ce5afe9f8d8fefdac4e1248d75989132b 100644 GIT binary patch delta 19686 zcmeHvd0Z67^XN>o!lEdv0-~TGqM~>#d*2J{dZP;p;*Ie_L`4NP9$5&Wtm7!!CXjdp zjT)~cL`;H;20Q?jC>jsUR}&JC3}4ZpF-jEOS3Nr@Ci%Vh{(1ks{d{VwySlo&x~lqa zNXu-ImeV4~fW-7h(*Rq`F}_g-9MRz7WIXr5A<+ zo-lstg@J%a$(CNc2YAB}+l9G2UUFeHkL?$oIE9Z#&zYV;>Y(2KZIrtAwpu7^B;A6V zR!U88O0A(#*H(0!&Qv2%MmecvPjL`Es%4Fmrb1d!lvt0K(?Lk=fw$8W)EO^;NdiDJ zh@2UkzJU}K-*3^3X(`hvYNZmW5}Kk^B$dYfQ4d;$V^L39gWp4)+K4@XoDAu00P70( zpyBi;QAAIPJ1yaQ-lnMWrz+u>P(b1x-ozy>A?|h?Cx~Wx{4AxYgaShN@K=08G{a*7 zAxK&Qp~tU$hWp;ew8G5c^KYQ?vu`?X;Y(z}@^5(1bWYC0&l!`*jbz4pn(( zoc3U&=vg^y>4?md)W1T{*(0m&w@XCaf^z(WUkY7@hx#vrZ>fI(T~_#ue-9dj5qIfL z)2FdKAQ)O27Z74PMNzSi)M~qBtCbu414U(=mdH!)he0uWAW41}5}--5>|&t$#c~^) z^ZWdOPXv5OpTseN=jbXN*mVP4iVM0v?+(rj(%lbY%0f?CqocTRATUEjp=DOa(wI@= z6>H`CUc?uJEcAESyW0S0XI!^x`UDOO4uEe|@J9N3d^@;+K8`ncpGlv`&%1v}7vqgR zg5Z0&hhB2tS$?fJMpK8A<%oDARHJ-fsAe9ua7kh~CZkRm*x zcW3x6>%AV7;ucC&lNRdVHr&A5tq44sl7G+j__px#&@30a5X<`q!8f-5arzMUl5T`% z?vV~|{}riP%!~{UW=>6+D6izMe1#oSUmHbBX6%3>C~HPt@|f6hJG`v4M1IB!o;KrC zLT4V^BWvuD95Y#5ZXtb-vPWhnSiNb9eR5s7@+`a8(EA;tqRT9Glq0n+iaF1b`k7TXnbe95 zhuHJ|s}N;9RzZ~%QBiOI2hg#zN>XfWT(^wdHTHpx_uE6XwUtYBrZLs`k^Dc`5>_a51f{YXmV>oFs z4pwUsI*6yLJGz~|3PqbAVVimY+I|2hukpqIQFlY<4{Xw$MtMhYnI;kC?8h=~H{^B% zkJHZ4#xQkE>*5$%QiOwtZ3=B&1i_3tk7uTGS-xqqL-BKSr?oF4pvsQ=0 zVQ1suE4Zn=#LkW+M9X2uo5&c&@bYoDJ3uMCq^Cunk_5i%zV5JDGawUGM3rZab#!$G znXf8tYZ05Sn4?1WtVzJYq$fDE$evn+SLudJ>z?z~l0L!k`5AUBFzHJ@GooQ)&S5ke zB_cbY0<=v1CcQo+9rCc2yfW}dE6XMTJ9ohoX2gSDpp7aZyReaI+<6I}uJ49ieQ>s3 z?)9iOMZqB4_cLB`@)D96U(^rk@R2j&>Yg_VG!t_WhlB^=5r!allQVt!9=yb$w26vd zIUF`7k_#;@w_G7@&1j%K-}eEgj8%1F)>55Fdk(Zz^Rh%)qa0roMY553+#YXWi9C#; z;udU7o@1$%2q}F_Zdai-oq)>J!w?JQ>B~}*pc9gwA!BfFV>kCHu;_rMe7qaS8s~V` zwc=wTyWhy)0(TD|;pjpap{m=(wvqQ6&1}@!e~xrfVVC7{-GCO-qa#~8nIgnJOk43NV7R4 z>}iv|-1tVPg8*-gB^DaJ!h^ThH*ImXS?jgMop09loo}RfYU7k>_zvDsTitm1 zs`KBps3qT`2xr2oW(n@Rp?-JebA&n*{${9dpv1Qg^#~|Uh6)IWykMx6FoqLDSqj3z zAQ=s!Rbntu?Mb|LptP-Lz#uZJ^OG7=VYd|F%7LbkLywxQ<-uDEfp~9P-dbpRqZ@B6 zb!*;Q{;gTPjD#=cwnBFAM>Svd6>we@QhLs7|9-41a|UVcLKK= z+LK<5RYQBzZSl0BezuFC<+sb+Mp|^74B(#QN@jUpb1NSLJ_kmHy5LLnM-WeAEQjT1 z86`h_SI{uF^D__B=A4H@FEpQfhPs?gnIU)NFdvY@Sr0W#5M+j628i?n#3^FCIAefF zbl;QZ=Zz>UbB?u*0wlyPm02n81Okd`H){FzAxSys)Slc)xx07%(v` zO&zI?(cHG*aQcW?n?(#uVdgKprGe=Xda|?u*)5G^BS3;i(5cxoGZ@@~87*d$Y1qM} zJ}LbR6_Ety(xv}~p43-(u6YG|U_~vNpY&y(1FO?voP}&_IG~o^M(Hp3^;=JNU^o3K z&()WKYUOf1;GHF_#O9fKjO0%4mT|AfKA0?U{*%&r443R=VCrFk^AuXa#5AxTs~L-j zJ+hIZ>@au)!F$i+{qF^=2dYGcP>7QUasuK!3QrJ1F6O9J1$J*#F zsK^-KdixnEH9Wzie7D{71R7`c0Lp_G8-ip_a(RnWU+2I%?tl~IV z7GE7xgueUw*tL^O>@#Q($v=A`9=HFb1V;#?L2wsV>TNR*`Ye!JH&|SQktVSb%T4kP>?F z(qByJTS*z2xMreH`?&%~WhE@16CDYKpbPg&!+hTZI_r^2G|n_cISR>%%sB2j#)*^k zgL1Dq9OIgF(vy@>m`y4?dzA3AgXw3#dghcqyV0s5igRSVT~H=p&S zpN~hpbF9OhRsW*l!K-lR>G7!bI&7QX83kT|VP`acFx?ydco2(b*irooykSOH^!*Ba zXhtuzhQYUHM4+e@IB=#v>cL>s%pkYAU10FpC55wR=F{yayz3NCP;(nZFfn)*BZ>t?u@=Yi`^1dqPnFxD`6Dcx)is)MmB0K+?}==0h!$A3_t^x;>bC<^j3U# zj@lz0{3D^l1yS7WB{(E;Flv*9lM}sALndCGH~{U>!sil$(CRGwFfka#XJN0o!AO^d zb#p^e>nuEbZZ(pn;D{t|m-a3+9-lOf-itp?>VY!K@cAS^x&Z%{6fkjcnZp5ALM;0P z*6N9^k03hX;f^{p!*V(a zqKR-;Rh~scd}e=KFyDV#nv=zyjm%6GLAnKc1GGy@N`8IXB8Z;JMFTg>o(9!{^sS;; zI30^(BP+S1?IDk3ASFq3PxNK81P0hLS1iPR7wA!kg*b5mN3X?Wl81FJfNc-Vr;cP1 zYY|(S3eM4qq7pS^@~v0^dwW02wgpaSOK3y6rE$IIQ&iJ7wz4vodBnIv-dOICGn@U)Z&w_9_eq^xE5z0@i0J7KhdrQyQ4Sdtoyd{1CiY6KF`#qXvj zqOFPeZfb92JdWEgF`}?UY+W)7ot=Y=mUKbi&cW47`iS;|SKvo0+II{qCbLy08(Bj} z8<>mX$jh?M%I(97rL(>6B=Dj+eQzCaz+(L6(vIyiVWtB<;``ugHJqq5{&8u%w?*LR z4esQZ`rv}4zW#T~thg!-GPq>e_#+)NsfXm9fHRgY^~##ygSY7)+}c}(tRw>DyvC8wCV`H^loSRA^!c{**t>SRGdJm&Lc2Wp+{pe7KC?22{u6U67kPIV z*hm)?*!-PrXTHYvRY7zZKDcTTn)VJ3e6JfC{tmXh*Mok9liquR;+NugY{9l39?niu z!~Gu5SNSii;c`eJbBL9Tn@SdZ(foHLe4RaM03SE-UlsqAzE11G#{*x-efYSfDc+59 zTLAWc#KywC~7Zjb?9NCR zSE$YoM#w7`PhQ&x-HXA@+V1GP7<_1L82UH{&c}njQeudLMUzj8D0vC_a$z>ynfV57 z9gD9rv1rg(;W)1qwytw^*$vW+Ul)rmjKN>6J0fnJM)a~Ss&EmDXyhJ^m#h!e{uad- z$yC6~`Ya57_BO1@;#>|!abH3XputkwK3Kw(*{68HN{6r4wgO*VKLHJn!l4_Y(PJyN zZ5WAmS@HK9hN1~p+#zQul34Myoc^s63@~ClymR2395Xp8OB?r-WY(Ej>aP(1_qnIF$hUV<4qfb(bg%r2x9j};hPYPo`TV)AhdN9?y)Ht ziKpO^5Q`p#lOc9uGX4-^;!*f0#8M{X8i<{U#3CGwdQZl^aS%$0#G@cqGYO~Q-;s1D zp1C;@S$E<~o1<*T5xo2ESQ$%8U{BBr61ZLhZALSiw?Ip3MxzB7A^t^aaArnUyjzCiqTG?*apOpm2RkTOGcIA759};}o>xZ^``n~!v2_aV-1j;k^|qC+k4 z+>d6_AK}X%U8Gmwogc^0dAQ+Y1D%VNTgZ12|NWBx*74t7TMhJwcozTtl>gT7-_F|% z^apstHh(|WU5CRtpSL3Ox%DMK1h%nqg9hS_+f=j?S8N-OA_w3f^OJDeb~jWVf$iHf z>ECgiPl8Yq9BY3v0{t3}ZJ(r|q;UM_CsR?Ya2%VjrRU+C{Gn)#8FDU0?aX-ej(*5- zAKP}s`h9la;ecrzE^MYIP@n@Vo5jIO!^+K%#PvJ6wY&kxd@M^yI3UjtYjy_E-ErK` znY0<7*cmMvZG=%EXIBrb`*b+H3}<~BEy^|sBzl(;uC>&=qR}-yW_B$@$Mv|y?%t^H za2&RK0?p!ey9ao&4#&|Tm^@*yZ{u9#aDMpL-O+H-sN55UZfHqs-SeDlgBe=C{OT#Oo{xdg}puvBAHd6fUXAVdDMG9flXZltm=;-`b_kx<|bL@4Kj92qM;`q7% z+QWUV#yg6Q^LyH3xB!a zwar!~?+eWBiKn<1%kioG#`b4{1ZO`mg3a=5--0;cDZKc=JE%c{uOH}vsub99ASm$2 zK&L0dInD^tl&Q=qeya^5al6S-&*UjM;@}{ZI|Hvd*dIM;fr}1SqKff&_2*;I?Fjsz z&j+FtaX9b`U-YgF>%JJ-zOU=+i@u^FI3DIK;rOF3R&*2Bf+tbou&{RCcX2PmV8S4T zM9ONnRB&s;vHDAL%{<}DOElVO!hOHWK=1a)hrSx@R^E>cj8$YGinjE_zK0gZGH>b` zlU|o5YIcWF*ZdBH83?yZ%wn&jUSLtXW%FQWpad@En6hSDyAe=4XvuEL$3Gt$V4Iuf zaLAi3JcL==zA8t%!pn301+Y3}$%k9tS)Kv>5}7(dR>i`7Aeq%GAqsbrRkQ4tV#cyL zA-*du0av0OiXw-1AdJi4*j|Y)3Cn=aMiz68Ht6xGRrhVc%(4c@V2FAZara<#49WV6 zl%Adv*phm-wG{v1`ChmL&hjjkkfA&r)C)C-dpVcoV&{PzxeZVAFt?f5Z z4XixB=)=2D#;Qsxbr6U{WxRsBzU#yzBa2yubAw!({)#^?@?wTHW|VacEzKxt%xDPk zT(c7jiH+jsI18!GC)q5U%d^OuhzP-W6fu|V{O*EX4%e=5>xwc?lKa&uaO-;g(sTO< z$-v5A$vU;x>^7BIwUu1VW~}ff7pL~D6yWrf@Ea7*ws368H`6ooE(`@sG~9#I=O>)0)1m0Jw0gH`Sagv7GJBw^wgWJD1qq=CwXTOjA%(8nJFLO$jbWYKos_EHyz-n^L(B&nC=)J$0z{zaV4`PSzt~r`pcxbG zv_*NA0$6z~WsyuyLuC<}{${3mLqMfqrZ&z(z`PF2x{Pu!`>L&ivEYj5|H4od6a$7T z@5KwutjZYzo~sAXT^9kzHcaX+<^mW2SAE@o>@NGNJFEzv8Za8d>>)3iWf#47zg<*p znPnFoX6}L=-4!l>Ib>V4F3XYXCVyHxg4ke$n7LG*75}0pb4_`h2^ z^jx{+Fi{6sdld)w{6!=JMu(c5H-Mf4Bd>rbMeb!6fg7cf8IDR}@Zl!$L$F7) z3rpc)0h=xD98I-ITiOcVBJ6@b&sx$FX)CiTe;oS(*;unIDZ>#1X?bKe=cAn*FJAup( zjZAeSHO4-^D752!(xS-g_#^3lf>y^Y-{4FM&mtTTs z4%I}d_LvG#DRT~nHg+MJmD8O60(o0e$qt8y5<=exgIy}Oa3tfU=e&B$;ne~B$}Kku zVnyxBEj1)$w}`6BEq8F2qk(h-HXro~c>;IQY?cU|*2=w*^A0M^9OOMkLq?sK-QvMo zZsH|J4dE3`rPUE51|kdh(tH@SC1iKRKv|6}OUiP@)Nh*xW?9upPn`lP5{{Lz_DCOE zgnf<$PJO~=r*&Kk_O55M!+l;`zm9CQvl_wLR_+fOF$P(tLqBl3urU1FBM<&>{I-Df zyyS0uyvr?Bq|ro^kx&NQw~%YrG>w<-^#9y%YDgAhh&v=8*hVl5lq9GWW>P^-<(3A* z7!S?omDR{vt}vDCsuIvtJv?MGbGO=)uuGJzqZ) zXnf;N#iSPAok~c^9$Aos(~bq(o{*T}JG>;$rzymDiiq#<&vKlvX?V}61J7xiQs43* za2?W>6N$SJr?7B#OAVVv@vebj6#<42H2PXArzsoMUT&!%LI|G6&&$pS34#*e>fbl* zmg;!ca+>epHRIsH4$G1{95Ik`hwt6aX!SJE9`T_&^i*&m`S3IOyYaG;v4~oaFO>Lqcz+FyLy=_CbB$uEST+QT zDL?TkZDPDQ)@@j5_*{PBa6F=E|3er1pF zgDHL7$t@AgMTh*b?Nl7vorG_k>W4!7u>0wey?=zmHgZez_e;1sxP&W!H0N-3it~)e zw$ribSSNl%)U!8!d3uD;ZylYP$%ZIf*btrRh^L$hLLEEd_s^)&d^ddT%p`PoF78-1 z9v$t8Q_9NGlMdKep6Htm=c7<{f&>;LY*zL&=jgql2mY=+g5LstK{5xcA2X$(P*5$5 z*z&VN$0#SB0E?x+t(o9LOK^{yxObVKt(r~eyT9cMyd-;PFbqspY z6Awat^j-$MKA#`guE70aOce}9@F;E?%%PNLW(P7STk7zw3g2n{d??E0 zDbv6XM%F~Q=QtY7r^Pywlg4qM5^*mIGjPUfe_;ZEUP9I-Z%?XZMva2kYKOTYaG1=b z-hqKtU!M|-!`Fmp$Mc&Q6D&}{9B>YLxO}ivt%LccsApSOSg2Y~!$NhiA zhjFR2_n2Q`B@X$q_s=Gkj4Tw%?{eWNNYx@e+NXEAQ58i^WC6%M`>?}8?a@!l(w z(PtB}+tnZ>{|1L%Js`UFIn2O6S1PgRH8naR#zU`FcV0Ih7Hg4L$m1O7ebvlhQIvkL zIHfh5S9d*(jn|`4m+?5~`e&$nA=XwWde<&(c7WwPzN#1FqUr=$_EjUMRISD3w_ zLO1r~GdHsQ9`A!jrjplsoZEil(QxUwtR3u|-232}Kh8iu>?=I~V`+>AEE^xV-@`SB z1alzR4L`p>neJW~SI5${55D)HJDf9kJPc`f8aQfmVRH&YARBq7Hm)xo{IEOC;iQKh z>ArY1guU>=hatA`KEU`4juL>8v7FARp*=G_zymX8o_@tdX4d)+bU04I%febu2oUTB zm>*Yja+tBfVs?NBGdxXR!5x0+a1`Z{()Kw^BNbQIRu3TA@@lIH=GXbPXLwR^EgJ(* zv`E_5JRz<2bAfla5Z@*+&ICrn#|rc;fp3)%PZju#0^dx5K3Sl52Rgi};M?ZOx9#vN zhJQI%t4)M7=d-*w?O8h#+yI(%`vK$|-Uy)^5GtxBjk^G|5Z`>9_J^145TWPv1^Q=B zI?+&d1QEBOwu)eO8I)Cf27-T6+FG)+f}$6^u4E=Dj3b3jXsQHMc%?R*FK<_E8ebk+ z(ATE&!Q?h1oX96<*S-^h*VT9IKBLizgcy4iRUTAOYHu0{NZFN+cy6BqdF4Dv579 z)Gw~BSV;;acTu&g!b$KZ2`&n^kubUbtDVi0JxJ3gkzizg?O2{fc51c5_@IFVO?;3n z{cGiXFo^_1Ao#aiFDo|zL;^3atnIX(lvrGgw*IXl_{F1^wu5lkQCx7&_1(=A+o#q`F1r@R6z_L~hWEclX@THLi(@5|!AIu}c-}qnw3Et#`6(o3x z57v-i86RvQ!DD<-@(O|ld@zIrcSA72%wK%IJ}9+v*Wt_y(wVN4Ia}o)@3(O3= zjs)lPMewdU-H4ed9c`^44>P<0yxRprMervOlG+BC2#L~(;(R^-X|K~S`R;I;YtlVj zr8**R^Dbrg&g=XA89uBXnyDOZ-QJlr!Quc0vbsHtKKf)O6^`KfVgu$!Th;P zEjem&p0w1i{g>j&9vRxB;Kd^?>rF}zkwNJJ%}Xb<0p9ed_aG${0$t}y?WED9uA17h zfEnlo{-h$P+l#NTfoRa34@w*me5EI1gplALdVK%Sj^5jTYf>hLP*F0eG8=b%>Sx;v zy#E-3GeH^Sg=!UX#75AXFqJInMkE>BLSAx_{Vdcs2;P`*o%*B-0F%DTicg_9GP*{Y(B5 z$UpOS{#Fx70Xd`qD{lL&{kUb21ztimYwHzgYh`V6HgAsV+HwC~6+ZTCIGu=H8|I={ckto{3q1xOX&6n<#_oSD zLQihvRew!En{VS=e}%NV@QcI2|9w+!7c6<6X3I3v)W-lj0S*CF0dN4X0NR=0&$<8< z0O0_m044w=0IUSq1h5O>8-SAl*8u(tK$&T3(IA?dWTC0S0DS;_02+bD0aOAM0en1& z?n%7|0rFc9na%;s2M~orMu2R9Y5?De+$kY+P_I1^G*t|+4j={KCctw5uK^$=KpBLm z04&0f8Ut*DAw+&ZK??a@0lXRDo)AAgkfuriwgO}VNB|N5MgsH(cm;fq0jvP~Ax?fv zAp8XY`E3P!P6!VIsbv6N0LU-?Lke$rdC2`CB`N7nOS=AEIQ&(#OKt&8=j-N8OYXmT zW=denf(3y|3+B%z{JVP6lH?C5i4{Qd5#Vi zB!LhR+SgfeQyN(Y!uEj5gS5QArL_inHDo>rX$PC7<g!kL20 zWeTozsY5Mj>Hz@UY*29PKn1yhxdFZaxC_u(OjDBqP5{&c_=23d3NPBXn-2FFlK)&1 z@#&*;_RQxlACk5X(oKpTBa?<{2Zn}DihMVBffpUy6}Eu=Qf4ko37!W}TqvprB$u{q zqAjB&?%&??qI=NZD>T4 zrc(^Do+uW0=8$+WoRCq}9iS0o0<8-n!YLj_H2`rPC_-RV5L#v~-GSb)Q7X#K=|GD` z#jugs*wrhypabph1{V@REpSI%iu`kLcAz~(9TTy3c#RTDnp<% zfJryNLVOG0HW2?5Fzh6{PzQvBLcl~oQu$$6!V_Um=Wgss%LA(+8V=E>U({r$R=__f z4_ILe+7$;%X=g(5o10|}tcL`k zQ8j=`4V=J8GFLTY^p+xcw*WsqU{VsvCC*Lvqr2JCfCMor8!#yY119;m111&j158wY z7%-8%7_ckga==98mjM%}z6BT%&qq|wLA({JU_d-3DtC3^MRDy&hModmmU-bo zBRoR|Y!z^vfa3+6AmC&HFB5Q@fU^ahBj7v%=L2rCsv)&i_m-cFv1F1lu@a3HcraCMCWEOiUqe;WR~iz@)}5fQc!30VbwU04Am|116>z4w!g< z3}B-Ac)+B*xqylHrweg{i7D1Ou@99i5OxA?YVi{yn_q5n0Nui)896YwYZp48bs*dn z6HX%5NS@Ry9!Lc~=1mVpMfA?rbMFjCrriJnSS{1rq5B zH9RRK4@jhd9KfW3UkNOv4u6G{)(7yLVX;>@M8hGu={M-U(*XiuF+gbXLbin5u7R|_ z+XE*xH$0H;NdKNYA&~ZKQBO(a^|{MQ@G&L1{W$mIKstbal6w?T>pz_tNKuRa%rynl zK3yk1r6kJ%2ra*Z6HkJZDI#Si;QZXqUFnIo1PJm`z|C2Ug*c&+k%QoaY8bl#_ZC2` zqNxIaIH1>eft~=qTmv(74IEX62ZMs{!onZ`-k88dlzaph3|D~;_kkq<`EZFEZ-ASG z0B|Rg1`u8Xv~tK(0r7K?zY@}Z zgm?`I@(biy4CO$6YYxyMf6Z+OgAm6-*dGAy131(+n)24b+72KbAPyiIU@gEdfUg0{ z0ImZ(1CVHGsvCeBU>Lw;fCT^<03QPE11JW#3UCkL8GyTvraA%i0?+^q1sDgA3c&cn zXCFWzz)67X0QUf1ee2zgE_AVx8NKNzAqz?HxD;52H~nIPwz4eDy|3G450Zoqe)=h9tgCA zW;7|#l7S{^MziK_>q-0l|9!^)n|%gy9rx{!Ui79swpnH>9F}Zg%$CxW zus>u|~xCU{ybrN~KptsP?D^s?TU1 zX>xQQ>h|ak=n8cuy34v8y|*#KSYx_pdTM%MaxqKHL1xNIZr0&hlyq}gN!V2ROnIt& zx%_?k2Ah0`JXSG7u|#o5QKpb6{ggYE{Z*`rRu5B;QBPFQQM2kj>R!52x*mFsevCdz zzf(WQu*8sU_}K87q0n%`(8?HS>}4EiTw>~Hh8p6bI|F(soe;J$EH`XV*wr5>lAqRvobb)I^gdY`&bU9PTH-%|goeysM^ z_-R5kk(y}DIL#-T-I`xD_ceXBOLW<~-TD&!S$&nhUhi*kF@_nVjpJ=bPg9g>oN2ac zk!huAlWB`-r)i(*i0M1i1Czl##GGc%GkV7_X8V18z%l3}3*Ep(IimCB_$ z=~U?gX^M2YG)=lzx?TFE^sw}Z^sMwZ=^xVP(#~NM!lsAqlK&=uE~gc4iZ%)_XtO~P z1&yAeuqjq6Y+DrHD2^*GD{d<8Dk!C!(qGv_*Jg-clOWv((GfKdGOn z-85}9VVXgjk(z0mBbr;<7h18dyY3rZg%0Tl>ocHr&-C34A%+hOmkpj^lBLE{qrWND z^s(uLsnWE>oNcDkU`YYOhe?yA8>F7f88+od$|uS;Dy;e(6l_orRL@g?seS=UoUHj$ zb5`S~jn~fBZq#-1VR6_vpXZPd6kQ#u(=sQ;f@vpBhVy=Zsg47fn}9 zznlIvbub5;dzt&2m1dJU!935r(wuHyZN}#9=FiOEfHu#Ye=|QeQ!xD7h*!3j_Lq*6 zz9XFjYRr*-B+Zw8CjC}=T>69bru4S-zo1AeOciDc8!U^H{V5wSpDWiWx+=FQTd3+Z z3$$}|M|5Q%+Ccp%eWT%_i8i~L+na}(N1Iuw@{;+wnabyX+G(S- zY!c)o$I)IrFNJ0a~M{78(u*_w;Q(_?-)NaeQNsL^sTAXbRMkzv#HipZ+d2W zWm;_BV=gvRRj@^Xg0r9>{3=^2et3nVO(O&Fm8cf@RLzw3Nh(Tk*2w( z_e>j1<)-VVzUB$$O*Zq-M5XoQA1J{Uvb0n>Gb}6Yo3Pq2Pgxh4Ql^(h$cD%wWn*OH zW%GHT$dT=o9h7;=yMnGJ%5TcW3U9EwUNKfNUNK9tS5ct2t$3h#0mF7bC06cM&QR@8 z9aFVZOVmBo{na{kgnF#{9d&|wzB)y{Ty0BJuTig8f1uu~{#3nR{gwKNx>S8ueHFBF z8@%EV^-FbYO=nGCjY>00GggzJN!M)GoYP#<+|p!fS?vefD(#Qj+uAxUt!t^%>IUdW z=*H{b(Piow-FDq!U79{$zh8e!e@kDd|5J|)zJ_SSM8i9V1jBs8a>F*mZku7h;kehq%s*y z1586rqfBE>GfdT{R%V5HuK9rZ3g{CSG@#TV=}T#F*h1)CL9!%StxO@mAaAc2rbt&D zQ6z!=+o(pVCLM%1EK7Yx?W)mhR%mW&MB4V+E?Sk=pnXr9t=**EuKh}TO#5H$6YVRl zyRID!Lw$7`T{^Vy1KkeYA>DD^9ot6d>l5|K`sI2!y+|?BnXuUZ z%S_MioDaieyz+8C*-PLwFtTL=RtRYM!3zkV`Rv6ym zWeKunvaPaR;A4kn#j?|~O4$`zjf|3e$ot4O@;G_CJW0Mzo+mGopO)W|*U6vADTNs3 zl#$?plVDa!Qlu&Jp~scLlu`pzN}#fja*%Q;EFt2Q@yZ#>BxRa1Te(%aOIg%fS)x3x atWZ`dtCgUwD-m>`Lh17=_;)+V_kRJ<1>ueW delta 18617 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 brE`|BAC~x8n6LuKOHf8Mx+EP|@#p<776~R~ diff --git a/Release/socket/wxDriver.dll b/Release/socket/wxDriver.dll index 18662d645481a18dcb4c4569a87b5a7637124bcb..c906eee83925ababfe112cbbf212fdac1cda7470 100644 GIT binary patch delta 407 zcmZozz}T>Wae@ug4~B_$PW8364aY5G-c5mF1C`n-hCqI{=KHC(VEXk`4KV#`sxg>; zJJkY6>zcoxY6GM#W8P0G0Mb7+pHH<1)9=9YKQslWfYklad;{hOWhQ5U>|lU`09OVE zA4XPIhVp|9$(wl?zc5WS;Ml~%s>N2~$sn-1WHPs&8e0vBSp#G$Z;sNl;*0>P1?gu3 zVt*ixaRXv2kO%|V91zU|#3Dev1}L`%O^z2Rz5%HD08s7#lHBGu<|RzZ;rrio&v0Jp zvd7eIwHME#CyYSVE>#TG)ud%9O)D&T6V9+Z{Ni0cJsj8|< zNlFJQF7RYvU;)y4MJ359o{o+{CPT^OKpSDn3S^lOhz!tk3@nptZT@d=ux$_m0ATul A;s5{u delta 410 zcmZozz}T>Wae@sK1LH(Hr}|W@hU1FS@20@8hH~u`O(4Hm@BLI&F#UR}0hoR@RU1sd zovHw&O%2{pRRPk9(eI~Z0O>h;&!?(`>33lHIeLOqKrEUGL<(+=~;0`fE0oZVFF?= zAdYbZVk?jc1K1D{%>%?DK)eDdw*pO$7bv~~sCf@iZV!^&<~QagOmc;P_GKvZ?Gcf2Cr6iUls#H}~r6i>T)#Xff xv=P list: + import psutil + pid_list = [] + process_list = psutil.pids() + for pid in process_list: + try: + if psutil.Process(pid).name() == 'WeChat.exe': + pid_list.append(pid) + except psutil.NoSuchProcess: + pass + return pid_list + +def test(): + test_port = 8000 + pids = get_wechat_pid_list() + if len(pids) == 0: + pids.append(new_wechat()) + start_listen(pids[0],test_port) + + if post_wechat_http_api(APIS.WECHAT_IS_LOGIN,port = test_port)["is_login"] == 1: + print(post_wechat_http_api(APIS.WECHAT_GET_SELF_INFO,port = test_port)) + + data = {"wxid":"filehelper","msg":"hello http"} + post_wechat_http_api(APIS.WECHAT_MSG_SEND_TEXT,data = data,port = test_port) + + data = {"receiver":'filehelper',"shared_wxid":"filehelper","nickname":"鏂囦欢浼犺緭鍔╂墜"} + post_wechat_http_api(APIS.WECHAT_MSG_SEND_CARD,data = data,port = test_port) + + data = {"receiver":'filehelper',"img_path":r"D:\VS2019C++\MyWeChatRobot\test\娴嬭瘯鍥剧墖.png"} + post_wechat_http_api(APIS.WECHAT_MSG_SEND_IMAGE,data = data,port = test_port) + + data = {"receiver":'filehelper',"file_path":r"D:\VS2019C++\MyWeChatRobot\test\娴嬭瘯鏂囦欢"} + post_wechat_http_api(APIS.WECHAT_MSG_SEND_FILE,data = data,port = test_port) + + data = {"wxid":'filehelper', + "title":"鐧惧害", + "abstract":"鐧惧害涓涓嬶紝浣犲氨鐭ラ亾", + "url":"https://www.baidu.com/", + "img_path":""} + post_wechat_http_api(APIS.WECHAT_MSG_SEND_ARTICLE,data = data,port = test_port) + + print(post_wechat_http_api(APIS.WECHAT_CONTACT_GET_LIST,port = test_port)) + data = {"wxid":"filehelper"} + print(post_wechat_http_api(APIS.WECHAT_CONTACT_CHECK_STATUS,data = data,port = test_port)) + + stop_listen(pids[0]) + +if __name__ == '__main__': + test() diff --git a/Release/socket/wxDriver64.dll b/Release/socket/wxDriver64.dll index 3a50e61956c279fb93a5b00989a02e444908ff4e..fdc9d6c8f28f75922b6af34819fb3043639a11dd 100644 GIT binary patch delta 2060 zcmZ9MZ%ov69LGODJ?w|U?M^^3p@T%n0uldAg@K-W;vXaqP)BNl$65Hm$?P5|;_h_i z%u1mj4_dR$2iADd7VFleW=o7e06`Tn`z zeeZLZNEwNg(VK{Gt~k0gyD=~GK|Cu@W@a#MtIjo_wCOVgHvOhkpKW>>&n?L{XTt2p z+{_RhtuCCU# zed6_U{i{P2TmhRyCq zQMvYTZQI(lS{r+$=B!ImOJ%V4u%0Y37!{dFUTxTA_$QevW?MQ(WD#$0(pu6O@V2*! zM0k|a{m4OUPh(wS4^}KQM1EmatdPqtkcl}Wey*~|8g8uj7PO1J#ZjdTkR{er;Vo4m ztk~xfUo0kO^kumh5Gmv3c59ubkB`Tg*ILMWH$2Y>S)YWL`BU!N_5~t+BxU^@UgOW_ zZRiQT3q>xIe5;`;VB}i|ngZT)%$;Vg^gZMw>z$?*-ZW-E+pox7>xZTtvpf;!gt2mw zi;F}&5v#6wp|^+fce?piq~GdpK4gqoe>Bf2{@z{x)k=|{$%An(uC&5GaQ^Czs>ZSHa`%L@q#50^hUHLXSg)2wnT3|2=pPnx=fGg{W*1O;h zqEDTMtu*8a^{M8>?Ixw3##8Wjau1(?XJ}QE7MyBZT-$e5DQ^gmtE?uQ7$`%e6%WIu z&x#zzgYXNw_7eVo_c~o%vsk1c!d1cu3F2Kaxq>tBEATbCbpW60T-@#IxZT#;-e;R)X%|-L|=Fa-g5m8EM4o=m9?%1 zVW)bW4Jyani3CiOtsJWKt#dXjOI%kTAo`$P@E_MFVgGv8u~#`nbdB;S*YChJ8|WX_ z1Yx{~fBKbE4!M2_zOa$QS(Ji*5&KGE%O;UGsBeQ`lYV>x-X;m$w^?L1IfWO&IudK+ q7Z{#!{U*Hc_+ne~w>XQG<*q9uWW2*+Hy(;6kFRbwlHShS)Bgj-xU=>E delta 2052 zcmZ9Ne@v8h9LGP8f*sp=9f)F+AA;o0z#mgGutSbOMG-j!np2Bkm(rGt(X|o9?sVi< znSu|0^ha&1xy7tD+qFp>I$J-6Mcd6>yS28Uv2@iM+WBLPRXxS6%k1OF)Bd6TL20JzFNs=Q}#}H)Q^2a6_6qxJ@KHEfF{vEqha$j-xS9}xn?)>cRR7Ufv{z`+{)msi$6%`$< zdhv+)VePuuPqjTpdGSJ#b={%1a9d$-Z*QpmF!RnmE8>Fdy2BlXJ1Z+u8J*X+f4}x! zG6(CHtQo(5q{$wM)0aqPhaTNoWF#bVH}+lK0V6%hP(F(%mx!$8Z%dkG^?9CsEh6n4 z#n*-$HV@TrH^Sz}^(*+kTwm+SY~`A;$d`kxF$;pb48M6Km{s0HTX(ygCsKsmYsYD8 zpWhl^BoYpDqh1mz>6W=M^Yh@Q^tiJ_>!TurByOfQRHS=3wC+2wTI3?}n#~P)hSz+# zAB7rBrxlIQ^=p@uMJOU%wqY>iWiHVUn?@(X71U$+7srU|EP=m zkQ3&yz1?MFSiU<&+)0n5Og}8&J|Xf8xvKq4eXu>inD&ju);69pjB)cqQ&xfRIc93^ z`*1xaNS{46n7_<)H%AvthD>8&ZtP5R$Q}8Eo3YYMWf1is3_Bi$XBxpyPz+dzXIO? z?~nv8IU<+yM6Tm=Mb$dL7_}&m6^L}wuY89@apgpWuK^kpFn5*6Fs|HAw7&~pA$sab zxR3fAqkpbeajn^e23P)0X7Cw!lFAk8aIT7Rt>#i6R~e6}Y$X92%4!nCgK*leA6^POh+dTt9CmyJ-X&TSN{?TpSl7ZK(upg-D(5QVN)U7O_ z;evjmn<_mOJhHkN9wjNf!9Ic$L<>{d6JVVFcj0-WKRgO=IG%*QO1ocK?sx!psz+F$ z(&r3B;UuYMQ>FJQd$F?6ape)B2knA?J3b4CszkC`s~jadM>*wq5>{-Zj+hgGk=OXr zM@~8F_!xX<2M1$P0^TClC54SO{Ewo)34Tvb;4|A}4_MV65$z7lRHFSLjpgvT7e l4*#`%y(PAbcfAe+#iY^-P&rzJe@Ze{s)RA#YX@D diff --git a/Release/socket/wxDriverTest.py b/Release/socket/wxDriverTest.py deleted file mode 100644 index 1cb26b0..0000000 --- a/Release/socket/wxDriverTest.py +++ /dev/null @@ -1,44 +0,0 @@ -import ctypes -import json -import requests - -PORT = 8000 - -def call_http_api(api,data,port = PORT): - url = "http://127.0.0.1:{}/api/?type={}".format(port,api) - resp = requests.post(url = url,data = json.dumps(data)) - print("POST",resp.json()) - -def get_wechat_pid_list() -> list: - import psutil - pid_list = [] - process_list = psutil.pids() - for pid in process_list: - try: - if psutil.Process(pid).name() == 'WeChat.exe': - pid_list.append(pid) - except psutil.NoSuchProcess: - pass - return pid_list - -def test(): - data = {"wxid":"filehelper","msg":"hello http"} - call_http_api(2,data) - data = {"receiver":'filehelper',"shared_wxid":"filehelper","nickname":"鏂囦欢浼犺緭鍔╂墜"} - call_http_api(4,data) - data = {"receiver":'filehelper',"img_path":r"D:\C++\ComWeChatRobot\test\娴嬭瘯鍥剧墖.png"} - call_http_api(5,data) - data = {"receiver":'filehelper',"file_path":r"D:\C++\ComWeChatRobot\test\娴嬭瘯鏂囦欢"} - call_http_api(6,data) - data = {"wxid":'filehelper', - "title":"鐧惧害", - "abstract":"鐧惧害涓涓嬶紝浣犲氨鐭ラ亾", - "url":"https://www.baidu.com/", - "img_path":""} - call_http_api(7,data) - -wx = ctypes.cdll.LoadLibrary('./wxDriver64.dll') -pids = get_wechat_pid_list() -if len(pids) == 0: - pids.append(wx.new_wechat()) -wx.start_listen(pids[0],PORT) \ No newline at end of file -- GitLab