diff --git a/WeChatFerry/spy/message_sender.cpp b/WeChatFerry/spy/message_sender.cpp index efe79da..103ea27 100644 --- a/WeChatFerry/spy/message_sender.cpp +++ b/WeChatFerry/spy/message_sender.cpp @@ -50,7 +50,7 @@ Sender::Sender() func_new_mmreader = reinterpret_cast(g_WeChatWinDllAddr + OsSend::NEW_MM_READER); func_free_mmreader = reinterpret_cast(g_WeChatWinDllAddr + OsSend::FREE_MM_READER); func_send_rich_text = reinterpret_cast(g_WeChatWinDllAddr + OsSend::RICH_TEXT); - func_send_pat = reinterpret_cast(g_WeChatWinDllAddr + OS_SEND_PAT_MSG); + func_send_pat = reinterpret_cast(g_WeChatWinDllAddr + OsSend::PAT); func_forward = reinterpret_cast(g_WeChatWinDllAddr + OS_FORWARD_MSG); func_get_emotion_mgr = reinterpret_cast(g_WeChatWinDllAddr + OsSend::EMOTION_MGR); func_send_emotion = reinterpret_cast(g_WeChatWinDllAddr + OsSend::EMOTION); @@ -274,10 +274,10 @@ int Sender::send_pat(const std::string &roomid, const std::string &wxid) { QWORD status = -1; - auto wxRoomid = new_wx_string(roomid); - auto wxWxid = new_wx_string(wxid); + WxStringHolder holderRoom(roomid); + WxStringHolder holderWxid(wxid); - status = func_send_pat(reinterpret_cast(wxRoomid.get()), reinterpret_cast(wxWxid.get())); + status = func_send_pat(&holderRoom.wx, &holderWxid.wx); return static_cast(status); } diff --git a/WeChatFerry/spy/message_sender.h b/WeChatFerry/spy/message_sender.h index ee752a6..1f509fd 100644 --- a/WeChatFerry/spy/message_sender.h +++ b/WeChatFerry/spy/message_sender.h @@ -51,7 +51,7 @@ private: using SendFile_t = QWORD (*)(QWORD, char *, WxString *, WxString *, QWORD, QWORD *, QWORD, QWORD *, QWORD, QWORD *, QWORD, QWORD); using SendRichText_t = QWORD (*)(QWORD, WxString *, char *); - using SendPat_t = QWORD (*)(QWORD, QWORD); + using SendPat_t = QWORD (*)(WxString *, WxString *); using Forward_t = QWORD (*)(QWORD, QWORD, QWORD, QWORD); using GetEmotionMgr_t = QWORD (*)(); using SendEmotion_t = QWORD (*)(QWORD, WxString *, QWORD *, WxString *, QWORD, QWORD *, QWORD, QWORD *); diff --git a/WeChatFerry/spy/rpc_server.cpp b/WeChatFerry/spy/rpc_server.cpp index bdcde26..74afb5f 100644 --- a/WeChatFerry/spy/rpc_server.cpp +++ b/WeChatFerry/spy/rpc_server.cpp @@ -254,7 +254,7 @@ const std::unordered_map RpcServer::rpcFu { Functions_FUNC_SEND_XML, [](const Request &r, uint8_t *out, size_t *len) { return RpcServer::getInstance().sender_.rpc_send_xml(r.msg.xml, out, len); } }, { Functions_FUNC_SEND_EMOTION, [](const Request &r, uint8_t *out, size_t *len) { return RpcServer::getInstance().sender_.rpc_send_emotion(r.msg.file, out, len); } }, { Functions_FUNC_SEND_RICH_TXT, [](const Request &r, uint8_t *out, size_t *len) { return RpcServer::getInstance().sender_.rpc_send_rich_text(r.msg.rt, out, len); } }, - // { Functions_FUNC_SEND_PAT_MSG, [](const Request &r, uint8_t *out, size_t *len) { return sender.rpc_send_pat(r.msg.pm, out, len); } }, + { Functions_FUNC_SEND_PAT_MSG, [](const Request &r, uint8_t *out, size_t *len) { return RpcServer::getInstance().sender_.rpc_send_pat(r.msg.pm, out, len); } }, // { Functions_FUNC_FORWARD_MSG, [](const Request &r, uint8_t *out, size_t *len) { return sender.rpc_forward(r.msg.fm, out, len); } }, // { Functions_FUNC_EXEC_DB_QUERY, [](const Request &r, uint8_t *out, size_t *len) { return db::rpc_exec_db_query(r.msg.query, out, len); } }, // { Functions_FUNC_ACCEPT_FRIEND, [](const Request &r, uint8_t *out, size_t *len) { return contact::rpc_accept_friend(r.msg.v, out, len); } },