Impl invite chatroom members

This commit is contained in:
Changhua 2024-06-27 21:13:32 +08:00
parent 64a3a916f0
commit d56163709c
2 changed files with 15 additions and 54 deletions

View File

@ -78,11 +78,17 @@ int DelChatroomMember(string roomid, string wxids)
return status; return status;
} }
#if 0
int InviteChatroomMember(string roomid, string wxids) int InviteChatroomMember(string roomid, string wxids)
{ {
wstring wsRoomid = String2Wstring((roomid)); int status = -1;
WxString wxRoomid(wsRoomid);
if (roomid.empty() || wxids.empty()) {
LOG_ERROR("Empty roomid or wxids.");
return status;
}
funcInviteMemberToChatRoom_t InviteMembers
= (funcInviteMemberToChatRoom_t)(g_WeChatWinDllAddr + g_WxCalls.irm.call1);
vector<wstring> vMembers; vector<wstring> vMembers;
vector<WxString> vWxMembers; vector<WxString> vWxMembers;
@ -94,52 +100,11 @@ int InviteChatroomMember(string roomid, string wxids)
WxString wxMember(vMembers.back()); WxString wxMember(vMembers.back());
vWxMembers.push_back(wxMember); vWxMembers.push_back(wxMember);
} }
QWORD temp[2] = { 0 };
wstring wsRoomid = String2Wstring(roomid);
WxString *pWxRoomid = NewWxStringFromWstr(wsRoomid);
QWORD pMembers = (QWORD) & ((RawVector_t *)&vWxMembers)->start;
LOG_DEBUG("Inviting {} members[{}] to {}", vWxMembers.size(), wxids.c_str(), roomid.c_str()); status = (int)InviteMembers((QWORD)wsRoomid.c_str(), pMembers, (QWORD)pWxRoomid, (QWORD)temp);
return status;
DWORD irmCall1 = g_WeChatWinDllAddr + g_WxCalls.irm.call1;
DWORD irmCall2 = g_WeChatWinDllAddr + g_WxCalls.irm.call2;
DWORD irmCall3 = g_WeChatWinDllAddr + g_WxCalls.irm.call3;
DWORD irmCall4 = g_WeChatWinDllAddr + g_WxCalls.irm.call4;
DWORD irmCall5 = g_WeChatWinDllAddr + g_WxCalls.irm.call5;
DWORD irmCall6 = g_WeChatWinDllAddr + g_WxCalls.irm.call6;
DWORD irmCall7 = g_WeChatWinDllAddr + g_WxCalls.irm.call7;
DWORD irmCall8 = g_WeChatWinDllAddr + g_WxCalls.irm.call8;
DWORD sys_addr = (DWORD)GetModuleHandleA("win32u.dll") + 0x116C;
DWORD addr[2] = { sys_addr, 0 };
__asm {
pushad;
pushfd;
call irmCall1;
lea ecx, addr;
push ecx;
mov ecx, eax;
call irmCall2;
call irmCall3;
sub esp, 0x8;
lea eax, addr;
mov ecx, esp;
push eax;
call irmCall4;
sub esp, 0x14;
mov ecx, esp;
lea eax, wxRoomid;
push eax;
call irmCall5;
lea eax, vWxMembers;
push eax;
call irmCall6;
call irmCall1;
push 0x0;
push 0x1;
mov ecx, eax;
call irmCall7;
lea ecx, addr;
call irmCall8;
popfd;
popad;
}
return 1;
} }
#endif

View File

@ -818,7 +818,6 @@ bool func_del_room_members(char *roomid, char *wxids, uint8_t *out, size_t *len)
return true; return true;
} }
#if 0
bool func_invite_room_members(char *roomid, char *wxids, uint8_t *out, size_t *len) bool func_invite_room_members(char *roomid, char *wxids, uint8_t *out, size_t *len)
{ {
Response rsp = Response_init_default; Response rsp = Response_init_default;
@ -842,7 +841,6 @@ bool func_invite_room_members(char *roomid, char *wxids, uint8_t *out, size_t *l
return true; return true;
} }
#endif
static bool dispatcher(uint8_t *in, size_t in_len, uint8_t *out, size_t *out_len) static bool dispatcher(uint8_t *in, size_t in_len, uint8_t *out, size_t *out_len)
{ {
@ -984,12 +982,10 @@ static bool dispatcher(uint8_t *in, size_t in_len, uint8_t *out, size_t *out_len
ret = func_del_room_members(req.msg.m.roomid, req.msg.m.wxids, out, out_len); ret = func_del_room_members(req.msg.m.roomid, req.msg.m.wxids, out, out_len);
break; break;
} }
#if 0
case Functions_FUNC_INV_ROOM_MEMBERS: { case Functions_FUNC_INV_ROOM_MEMBERS: {
ret = func_invite_room_members(req.msg.m.roomid, req.msg.m.wxids, out, out_len); ret = func_invite_room_members(req.msg.m.roomid, req.msg.m.wxids, out, out_len);
break; break;
} }
#endif
default: { default: {
LOG_ERROR("[UNKNOW FUNCTION]"); LOG_ERROR("[UNKNOW FUNCTION]");
break; break;