From e9c64e4ef45c2e6169b8aad2cfe13e1fbcda655b Mon Sep 17 00:00:00 2001 From: Changhua Date: Wed, 5 Mar 2025 01:15:07 +0800 Subject: [PATCH] feat(contact): ignore get contact info --- WeChatFerry/spy/contact_manager.cpp | 41 ++--------------------------- WeChatFerry/spy/rpc_server.cpp | 2 +- 2 files changed, 3 insertions(+), 40 deletions(-) diff --git a/WeChatFerry/spy/contact_manager.cpp b/WeChatFerry/spy/contact_manager.cpp index ba34af9..591bbc9 100644 --- a/WeChatFerry/spy/contact_manager.cpp +++ b/WeChatFerry/spy/contact_manager.cpp @@ -98,44 +98,7 @@ int accept_new_friend(const std::string &v3, const std::string &v4, int scene) RpcContact_t get_contact_by_wxid(const string &wxid) { RpcContact_t contact; -#if 0 - char buff[0x440] = { 0 }; - wstring ws_wxid = util::s2w(wxid); - WxString pri(ws_wxid); - - DWORD contact_mgr_addr = g_WeChatWinDllAddr + 0x75A4A0; - DWORD get_contact_addr = g_WeChatWinDllAddr + 0xC04E00; - DWORD free_contact_addr = g_WeChatWinDllAddr + 0xEA7880; - - __asm { - PUSHAD - PUSHFD - CALL contact_mgr_addr - LEA ECX,buff - PUSH ECX - LEA ECX,pri - PUSH ECX - MOV ECX,EAX - CALL get_contact_addr - POPFD - POPAD - } - - contact.wxid = wxid; - contact.code = util::get_str_by_wstr_addr(reinterpret_cast(buff) + g_WxCalls.contact.wxCode); - contact.remark = util::get_str_by_wstr_addr(reinterpret_cast(buff) + g_WxCalls.contact.wxRemark); - contact.name = util::get_str_by_wstr_addr(reinterpret_cast(buff) + g_WxCalls.contact.wxName); - contact.gender = util::get_dword(reinterpret_cast(buff) + 0x148); - - __asm { - PUSHAD - PUSHFD - LEA ECX,buff - CALL free_contact_addr - POPFD - POPAD - } -#endif + LOG_ERROR("技术太菜,实现不了。"); return contact; } @@ -150,8 +113,8 @@ bool rpc_get_contacts(uint8_t *out, size_t *len) bool rpc_get_contact_info(const string &wxid, uint8_t *out, size_t *len) { + vector contacts = { get_contact_by_wxid(wxid) }; return fill_response(out, len, [&](Response &rsp) { - vector contacts = { get_contact_by_wxid(wxid) }; rsp.msg.contacts.contacts.funcs.encode = encode_contacts; rsp.msg.contacts.contacts.arg = &contacts; }); diff --git a/WeChatFerry/spy/rpc_server.cpp b/WeChatFerry/spy/rpc_server.cpp index 4e5b6bf..8c4a6ee 100644 --- a/WeChatFerry/spy/rpc_server.cpp +++ b/WeChatFerry/spy/rpc_server.cpp @@ -261,7 +261,7 @@ const std::unordered_map RpcServer::rpcFu { Functions_FUNC_RECV_TRANSFER, [](const Request &r, uint8_t *out, size_t *len) { return misc::rpc_receive_transfer(r.msg.tf, out, len); } }, { Functions_FUNC_REFRESH_PYQ, [](const Request &r, uint8_t *out, size_t *len) { return misc::rpc_refresh_pyq(r.msg.ui64, out, len); } }, { Functions_FUNC_DOWNLOAD_ATTACH, [](const Request &r, uint8_t *out, size_t *len) { return misc::rpc_download_attachment(r.msg.att, out, len); } }, - // { Functions_FUNC_GET_CONTACT_INFO, [](const Request &r, uint8_t *out, size_t *len) { return contact::rpc_get_contact_info(r.msg.str, out, len); } }, + { Functions_FUNC_GET_CONTACT_INFO, [](const Request &r, uint8_t *out, size_t *len) { return contact::rpc_get_contact_info(r.msg.str, out, len); } }, { Functions_FUNC_REVOKE_MSG, [](const Request &r, uint8_t *out, size_t *len) { return misc::rpc_revoke_message(r.msg.ui64, out, len); } }, { Functions_FUNC_REFRESH_QRCODE, [](const Request &r, uint8_t *out, size_t *len) { return misc::rpc_get_login_url(out, len); } }, { Functions_FUNC_DECRYPT_IMAGE, [](const Request &r, uint8_t *out, size_t *len) { return misc::rpc_decrypt_image(r.msg.dec, out, len); } },