From 1d9dcf448c185baefe46c00e2ff01ef81901f809 Mon Sep 17 00:00:00 2001 From: Changhua Date: Thu, 27 Feb 2025 01:47:41 +0800 Subject: [PATCH] refactor(message): refactoring --- WeChatFerry/spy/message_sender.cpp | 34 ++++++++---------------------- WeChatFerry/spy/message_sender.h | 6 +++--- 2 files changed, 12 insertions(+), 28 deletions(-) diff --git a/WeChatFerry/spy/message_sender.cpp b/WeChatFerry/spy/message_sender.cpp index b92d639..25ea084 100644 --- a/WeChatFerry/spy/message_sender.cpp +++ b/WeChatFerry/spy/message_sender.cpp @@ -13,20 +13,6 @@ extern QWORD g_WeChatWinDllAddr; -#define OS_NEW 0x1B5E140 -#define OS_SEND_IMAGE 0x22BC2F0 -#define OS_GET_APP_MSG_MGR 0x1B58F70 -#define OS_SEND_FILE 0x20D0230 -#define OS_RTM_NEW 0x1B5D690 -#define OS_RTM_FREE 0x1B5CA60 -#define OS_SEND_RICH_TEXT 0x20DA210 -#define OS_SEND_PAT_MSG 0x2CAEC00 -#define OS_FORWARD_MSG 0x22C60E0 -#define OS_GET_EMOTION_MGR 0x1BCEF10 -#define OS_SEND_EMOTION 0x21B52D5 -#define OS_XML_BUFSIGN 0x24F0D70 -#define OS_SEND_XML 0x20CF360 - namespace message { @@ -40,7 +26,7 @@ Sender &Sender::get_instance() Sender::Sender() { - func_get_instance = reinterpret_cast(g_WeChatWinDllAddr + OsSend::INSTANCE); + func_new_chat_msg = reinterpret_cast(g_WeChatWinDllAddr + OsSend::INSTANCE); func_free_chat_msg = reinterpret_cast(g_WeChatWinDllAddr + OsSend::FREE); func_send_msg_mgr = reinterpret_cast(g_WeChatWinDllAddr + OsSend::MGR); func_send_text = reinterpret_cast(g_WeChatWinDllAddr + OsSend::TEXT); @@ -101,8 +87,7 @@ void Sender::send_text(const std::string &wxid, const std::string &msg, const st char buffer[1104] = { 0 }; func_send_msg_mgr(); - func_send_text(reinterpret_cast(&buffer), reinterpret_cast(&holderWxid.wx), - reinterpret_cast(&holderMsg.wx), pWxAtWxids, 1, 1, 0, 0); + func_send_text(reinterpret_cast(&buffer), &holderWxid.wx, &holderMsg.wx, pWxAtWxids, 1, 1, 0, 0); func_free_chat_msg(reinterpret_cast(&buffer)); } @@ -116,16 +101,15 @@ void Sender::send_image(const std::string &wxid, const std::string &path) QWORD *flag[10] = { 0 }; QWORD tmp1 = 1, tmp2 = 0, tmp3 = 0; - QWORD pMsgTmp = func_get_instance((QWORD)(&msgTmp)); + QWORD pMsgTmp = func_new_chat_msg((QWORD)(&msgTmp)); flag[0] = reinterpret_cast(tmp1); flag[1] = reinterpret_cast(pMsgTmp); flag[8] = &tmp2; flag[9] = &tmp3; - QWORD pMsg = func_get_instance((QWORD)(&msg)); + QWORD pMsg = func_new_chat_msg((QWORD)(&msg)); QWORD sendMgr = func_send_msg_mgr(); - func_send_image(sendMgr, pMsg, reinterpret_cast(&holderWxid.wx), reinterpret_cast(&holderPath.wx), - reinterpret_cast(&flag)); + func_send_image(sendMgr, pMsg, &holderWxid.wx, &holderPath.wx, reinterpret_cast(&flag)); func_free_chat_msg(pMsg); func_free_chat_msg(pMsgTmp); @@ -181,8 +165,8 @@ void Sender::send_xml(const std::string &receiver, const std::string &xml, const std::unique_ptr buff2(new char[0x500]()); char nullBuf[0x1C] = { 0 }; - func_get_instance(reinterpret_cast(buff.get())); - func_get_instance(reinterpret_cast(buff2.get())); + func_new_chat_msg(reinterpret_cast(buff.get())); + func_new_chat_msg(reinterpret_cast(buff2.get())); QWORD sbuf[4] = { 0, 0, 0, 0 }; QWORD sign = func_xml_buf_sign(reinterpret_cast(buff2.get()), reinterpret_cast(sbuf), 0x1); @@ -293,8 +277,8 @@ int Sender::forward(QWORD msgid, const std::string &receiver) } LARGE_INTEGER l; - l.HighPart = dbIdx; - l.LowPart = static_cast(localId); + l.HighPart = dbIdx; + l.LowPart = static_cast(localId); WxStringHolder holderReceiver(receiver); diff --git a/WeChatFerry/spy/message_sender.h b/WeChatFerry/spy/message_sender.h index 44cc4ce..7811395 100644 --- a/WeChatFerry/spy/message_sender.h +++ b/WeChatFerry/spy/message_sender.h @@ -46,8 +46,8 @@ private: using Free_t = QWORD (*)(QWORD); using SendMsgMgr_t = QWORD (*)(); using GetAppMgr_t = QWORD (*)(); - using SendText_t = QWORD (*)(QWORD, QWORD, QWORD, QWORD, QWORD, QWORD, QWORD, QWORD); - using SendImage_t = QWORD (*)(QWORD, QWORD, QWORD, QWORD, QWORD); + using SendText_t = QWORD (*)(QWORD, WxString *, WxString *, QWORD, QWORD, QWORD, QWORD, QWORD); + using SendImage_t = QWORD (*)(QWORD, QWORD, WxString *, WxString *, QWORD); using SendFile_t = QWORD (*)(QWORD, char *, WxString *, WxString *, QWORD, QWORD *, QWORD, QWORD *, QWORD, QWORD *, QWORD, QWORD); using SendRichText_t = QWORD (*)(QWORD, WxString *, char *); @@ -58,7 +58,7 @@ private: using XmlBufSign_t = QWORD (*)(QWORD, QWORD, QWORD); using SendXml_t = QWORD (*)(QWORD, QWORD, QWORD, QWORD, QWORD, QWORD, QWORD, QWORD, QWORD, QWORD); - New_t func_get_instance; + New_t func_new_chat_msg; Free_t func_free_chat_msg; SendMsgMgr_t func_send_msg_mgr; GetAppMgr_t func_get_app_mgr;