Impl send pat message
This commit is contained in:
parent
f2c8a22fff
commit
f93b66fe36
@ -383,7 +383,6 @@ bool func_send_rich_txt(RichText rt, uint8_t *out, size_t *len)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
|
||||||
bool func_send_pat_msg(char *roomid, char *wxid, uint8_t *out, size_t *len)
|
bool func_send_pat_msg(char *roomid, char *wxid, uint8_t *out, size_t *len)
|
||||||
{
|
{
|
||||||
Response rsp = Response_init_default;
|
Response rsp = Response_init_default;
|
||||||
@ -407,6 +406,7 @@ bool func_send_pat_msg(char *roomid, char *wxid, uint8_t *out, size_t *len)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
bool func_forward_msg(uint64_t id, char *receiver, uint8_t *out, size_t *len)
|
bool func_forward_msg(uint64_t id, char *receiver, uint8_t *out, size_t *len)
|
||||||
{
|
{
|
||||||
Response rsp = Response_init_default;
|
Response rsp = Response_init_default;
|
||||||
@ -904,11 +904,11 @@ static bool dispatcher(uint8_t *in, size_t in_len, uint8_t *out, size_t *out_len
|
|||||||
ret = func_send_rich_txt(req.msg.rt, out, out_len);
|
ret = func_send_rich_txt(req.msg.rt, out, out_len);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#if 0
|
|
||||||
case Functions_FUNC_SEND_PAT_MSG: {
|
case Functions_FUNC_SEND_PAT_MSG: {
|
||||||
ret = func_send_pat_msg(req.msg.pm.roomid, req.msg.pm.wxid, out, out_len);
|
ret = func_send_pat_msg(req.msg.pm.roomid, req.msg.pm.wxid, out, out_len);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
#if 0
|
||||||
case Functions_FUNC_FORWARD_MSG: {
|
case Functions_FUNC_FORWARD_MSG: {
|
||||||
ret = func_forward_msg(req.msg.fm.id, req.msg.fm.receiver, out, out_len);
|
ret = func_forward_msg(req.msg.fm.id, req.msg.fm.receiver, out, out_len);
|
||||||
break;
|
break;
|
||||||
|
@ -23,6 +23,7 @@ typedef QWORD (*funcSendImageMsg_t)(QWORD, QWORD, QWORD, QWORD, QWORD);
|
|||||||
typedef QWORD (*funcSendFileMsg_t)(QWORD, QWORD, QWORD, QWORD, QWORD, QWORD *, QWORD, QWORD *, QWORD, QWORD *, QWORD,
|
typedef QWORD (*funcSendFileMsg_t)(QWORD, QWORD, QWORD, QWORD, QWORD, QWORD *, QWORD, QWORD *, QWORD, QWORD *, QWORD,
|
||||||
QWORD);
|
QWORD);
|
||||||
typedef QWORD (*funcSendRichTextMsg_t)(QWORD, QWORD, QWORD);
|
typedef QWORD (*funcSendRichTextMsg_t)(QWORD, QWORD, QWORD);
|
||||||
|
typedef QWORD (*funcSendPatMsg_t)(QWORD, QWORD);
|
||||||
|
|
||||||
void SendTextMessage(string wxid, string msg, string atWxids)
|
void SendTextMessage(string wxid, string msg, string atWxids)
|
||||||
{
|
{
|
||||||
@ -179,6 +180,21 @@ int SendRichTextMessage(RichText_t &rt)
|
|||||||
return (int)status;
|
return (int)status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int SendPatMessage(string roomid, string wxid)
|
||||||
|
{
|
||||||
|
QWORD status = -1;
|
||||||
|
|
||||||
|
wstring wsRoomid = String2Wstring(roomid);
|
||||||
|
wstring wsWxid = String2Wstring(wxid);
|
||||||
|
WxString wxRoomid(wsRoomid);
|
||||||
|
WxString wxWxid(wsWxid);
|
||||||
|
|
||||||
|
funcSendPatMsg_t funcSendPatMsg = (funcSendPatMsg_t)(g_WeChatWinDllAddr + g_WxCalls.pm.call1);
|
||||||
|
|
||||||
|
status = funcSendPatMsg((QWORD)(&wxRoomid), (QWORD)(&wxWxid));
|
||||||
|
return (int)status;
|
||||||
|
}
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
void SendXmlMessage(string receiver, string xml, string path, int type)
|
void SendXmlMessage(string receiver, string xml, string path, int type)
|
||||||
{
|
{
|
||||||
@ -304,106 +320,6 @@ void SendEmotionMessage(string wxid, string path)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int SendRichTextMessage(RichText_t &rt)
|
|
||||||
{
|
|
||||||
int status = -1;
|
|
||||||
char buff[0x238] = { 0 };
|
|
||||||
|
|
||||||
DWORD rtCall3 = g_WeChatWinDllAddr + g_WxCalls.rt.call3;
|
|
||||||
DWORD rtCall2 = g_WeChatWinDllAddr + g_WxCalls.rt.call2;
|
|
||||||
DWORD rtCall1 = g_WeChatWinDllAddr + g_WxCalls.rt.call1;
|
|
||||||
DWORD rtCall5 = g_WeChatWinDllAddr + g_WxCalls.rt.call5;
|
|
||||||
DWORD rtCall4 = g_WeChatWinDllAddr + g_WxCalls.rt.call4;
|
|
||||||
|
|
||||||
__asm {
|
|
||||||
pushad;
|
|
||||||
pushfd;
|
|
||||||
lea ecx,buff;
|
|
||||||
call rtCall1;
|
|
||||||
popfd;
|
|
||||||
popad;
|
|
||||||
}
|
|
||||||
|
|
||||||
wstring receiver = String2Wstring(rt.receiver);
|
|
||||||
wstring title = String2Wstring(rt.title);
|
|
||||||
wstring url = String2Wstring(rt.url);
|
|
||||||
wstring thumburl = String2Wstring(rt.thumburl);
|
|
||||||
wstring account = String2Wstring(rt.account);
|
|
||||||
wstring name = String2Wstring(rt.name);
|
|
||||||
wstring digest = String2Wstring(rt.digest);
|
|
||||||
|
|
||||||
WxString wxReceiver(receiver);
|
|
||||||
WxString wxTitle(title);
|
|
||||||
WxString wxUrl(url);
|
|
||||||
WxString wxThumburl(thumburl);
|
|
||||||
WxString wxAccount(account);
|
|
||||||
WxString wxName(name);
|
|
||||||
WxString wxDigest(digest);
|
|
||||||
|
|
||||||
memcpy(&buff[0x4], &wxTitle, sizeof(wxTitle));
|
|
||||||
memcpy(&buff[0x2C], &wxUrl, sizeof(wxUrl));
|
|
||||||
memcpy(&buff[0x6C], &wxThumburl, sizeof(wxThumburl));
|
|
||||||
memcpy(&buff[0x94], &wxDigest, sizeof(wxDigest));
|
|
||||||
memcpy(&buff[0x1A0], &wxAccount, sizeof(wxAccount));
|
|
||||||
memcpy(&buff[0x1B4], &wxName, sizeof(wxName));
|
|
||||||
|
|
||||||
__asm {
|
|
||||||
pushad;
|
|
||||||
pushfd;
|
|
||||||
call rtCall2;
|
|
||||||
lea ecx, buff;
|
|
||||||
push ecx;
|
|
||||||
sub esp, 0x14;
|
|
||||||
mov edi, eax;
|
|
||||||
mov ecx, esp;
|
|
||||||
lea ebx, wxReceiver;
|
|
||||||
push ebx;
|
|
||||||
call rtCall3;
|
|
||||||
mov ecx, edi;
|
|
||||||
call rtCall4;
|
|
||||||
mov status, eax;
|
|
||||||
add ebx, 0x14;
|
|
||||||
lea ecx, buff;
|
|
||||||
push 0x0;
|
|
||||||
call rtCall5;
|
|
||||||
popfd;
|
|
||||||
popad;
|
|
||||||
}
|
|
||||||
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
|
|
||||||
int SendPatMessage(string roomid, string wxid)
|
|
||||||
{
|
|
||||||
int status = -1;
|
|
||||||
|
|
||||||
wstring wsRoomid = String2Wstring(roomid);
|
|
||||||
wstring wsWxid = String2Wstring(wxid);
|
|
||||||
WxString wxRoomid(wsRoomid);
|
|
||||||
WxString wxWxid(wsWxid);
|
|
||||||
|
|
||||||
DWORD pmCall1 = g_WeChatWinDllAddr + g_WxCalls.pm.call1;
|
|
||||||
DWORD pmCall2 = g_WeChatWinDllAddr + g_WxCalls.pm.call2;
|
|
||||||
DWORD pmCall3 = g_WeChatWinDllAddr + g_WxCalls.pm.call3;
|
|
||||||
|
|
||||||
__asm {
|
|
||||||
pushad;
|
|
||||||
call pmCall1;
|
|
||||||
push pmCall2;
|
|
||||||
push 0x0;
|
|
||||||
push eax;
|
|
||||||
lea ecx, wxRoomid;
|
|
||||||
lea edx, wxWxid;
|
|
||||||
call pmCall3;
|
|
||||||
add esp, 0xc;
|
|
||||||
movzx eax, al;
|
|
||||||
mov status, eax;
|
|
||||||
popad;
|
|
||||||
}
|
|
||||||
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
|
|
||||||
int ForwardMessage(QWORD msgid, string receiver)
|
int ForwardMessage(QWORD msgid, string receiver)
|
||||||
{
|
{
|
||||||
int status = -1;
|
int status = -1;
|
||||||
|
Loading…
Reference in New Issue
Block a user