Impl send text message
This commit is contained in:
parent
9959b68916
commit
9ab6d8d392
@ -214,7 +214,7 @@ bool func_get_audio_msg(uint64_t id, char *dir, uint8_t *out, size_t *len)
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
bool func_send_txt(TextMsg txt, uint8_t *out, size_t *len)
|
bool func_send_txt(TextMsg txt, uint8_t *out, size_t *len)
|
||||||
{
|
{
|
||||||
Response rsp = Response_init_default;
|
Response rsp = Response_init_default;
|
||||||
@ -242,7 +242,7 @@ bool func_send_txt(TextMsg txt, uint8_t *out, size_t *len)
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
#if 0
|
||||||
bool func_send_img(char *path, char *receiver, uint8_t *out, size_t *len)
|
bool func_send_img(char *path, char *receiver, uint8_t *out, size_t *len)
|
||||||
{
|
{
|
||||||
Response rsp = Response_init_default;
|
Response rsp = Response_init_default;
|
||||||
@ -884,10 +884,12 @@ static bool dispatcher(uint8_t *in, size_t in_len, uint8_t *out, size_t *out_len
|
|||||||
ret = func_get_audio_msg(req.msg.am.id, req.msg.am.dir, out, out_len);
|
ret = func_get_audio_msg(req.msg.am.id, req.msg.am.dir, out, out_len);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
case Functions_FUNC_SEND_TXT: {
|
case Functions_FUNC_SEND_TXT: {
|
||||||
ret = func_send_txt(req.msg.txt, out, out_len);
|
ret = func_send_txt(req.msg.txt, out, out_len);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
#if 0
|
||||||
case Functions_FUNC_SEND_RICH_TXT: {
|
case Functions_FUNC_SEND_RICH_TXT: {
|
||||||
ret = func_send_rich_txt(req.msg.rt, out, out_len);
|
ret = func_send_rich_txt(req.msg.rt, out, out_len);
|
||||||
break;
|
break;
|
||||||
|
@ -12,25 +12,22 @@ extern HANDLE g_hEvent;
|
|||||||
extern WxCalls_t g_WxCalls;
|
extern WxCalls_t g_WxCalls;
|
||||||
extern UINT64 g_WeChatWinDllAddr;
|
extern UINT64 g_WeChatWinDllAddr;
|
||||||
extern string GetSelfWxid(); // Defined in spy.cpp
|
extern string GetSelfWxid(); // Defined in spy.cpp
|
||||||
#if 0
|
|
||||||
|
typedef UINT64 (*funcSendMsgMgr_t)();
|
||||||
|
typedef UINT64 (*funcSendTextMsg_t)(UINT64, UINT64, UINT64, UINT64, UINT64, UINT64, UINT64, UINT64);
|
||||||
|
typedef UINT64 (*funcFree_t)(UINT64);
|
||||||
|
|
||||||
void SendTextMessage(string wxid, string msg, string atWxids)
|
void SendTextMessage(string wxid, string msg, string atWxids)
|
||||||
{
|
{
|
||||||
int success = 0;
|
uint64_t success = 0;
|
||||||
char buffer[0x2D8] = { 0 };
|
wstring wsWxid = String2Wstring(wxid);
|
||||||
|
wstring wsMsg = String2Wstring(msg);
|
||||||
// 发送消息Call地址 = 微信基址 + 偏移
|
|
||||||
DWORD sendCall1 = g_WeChatWinDllAddr + g_WxCalls.sendText.call1;
|
|
||||||
DWORD sendCall2 = g_WeChatWinDllAddr + g_WxCalls.sendText.call2;
|
|
||||||
DWORD sendCall3 = g_WeChatWinDllAddr + g_WxCalls.sendText.call3;
|
|
||||||
|
|
||||||
wstring wsWxid = String2Wstring(wxid);
|
|
||||||
wstring wsMsg = String2Wstring(msg);
|
|
||||||
WxString wxMsg(wsMsg);
|
WxString wxMsg(wsMsg);
|
||||||
WxString wxWxid(wsWxid);
|
WxString wxWxid(wsWxid);
|
||||||
|
|
||||||
|
vector<wstring> vAtWxids;
|
||||||
vector<WxString> vWxAtWxids;
|
vector<WxString> vWxAtWxids;
|
||||||
if (!atWxids.empty()) {
|
if (!atWxids.empty()) {
|
||||||
vector<wstring> vAtWxids;
|
|
||||||
wstringstream wss(String2Wstring(atWxids));
|
wstringstream wss(String2Wstring(atWxids));
|
||||||
while (wss.good()) {
|
while (wss.good()) {
|
||||||
wstring wstr;
|
wstring wstr;
|
||||||
@ -39,31 +36,23 @@ void SendTextMessage(string wxid, string msg, string atWxids)
|
|||||||
WxString wxAtWxid(vAtWxids.back());
|
WxString wxAtWxid(vAtWxids.back());
|
||||||
vWxAtWxids.push_back(wxAtWxid);
|
vWxAtWxids.push_back(wxAtWxid);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
WxString wxEmpty = WxString();
|
||||||
|
vWxAtWxids.push_back(wxEmpty);
|
||||||
}
|
}
|
||||||
|
|
||||||
__asm
|
uint64_t wxAters = (uint64_t) & ((RawVector_t *)&vWxAtWxids)->start;
|
||||||
{
|
|
||||||
pushad;
|
char buffer[0x460] = { 0 };
|
||||||
call sendCall1;
|
funcSendMsgMgr_t funcSendMsgMgr = (funcSendMsgMgr_t)(g_WeChatWinDllAddr + 0x1C1E690);
|
||||||
push 0x0;
|
funcSendTextMsg_t funcSendTextMsg = (funcSendTextMsg_t)(g_WeChatWinDllAddr + 0x238DDD0);
|
||||||
push 0x0;
|
funcFree_t funcFree = (funcFree_t)(g_WeChatWinDllAddr + 0x1C1FF10);
|
||||||
push 0x0;
|
funcSendMsgMgr();
|
||||||
push 0x1;
|
success = funcSendTextMsg((uint64_t)(&buffer), (uint64_t)(&wxWxid), (uint64_t)(&wxMsg), wxAters, 1, 1, 0, 0);
|
||||||
lea eax, vWxAtWxids;
|
funcFree((uint64_t)(&buffer));
|
||||||
push eax;
|
|
||||||
lea eax, wxMsg;
|
|
||||||
push eax;
|
|
||||||
lea edx, wxWxid;
|
|
||||||
lea ecx, buffer;
|
|
||||||
call sendCall2;
|
|
||||||
mov success, eax;
|
|
||||||
add esp, 0x18;
|
|
||||||
lea ecx, buffer;
|
|
||||||
call sendCall3;
|
|
||||||
popad;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
void SendImageMessage(string wxid, string path)
|
void SendImageMessage(string wxid, string path)
|
||||||
{
|
{
|
||||||
if (g_WeChatWinDllAddr == 0) {
|
if (g_WeChatWinDllAddr == 0) {
|
||||||
|
Loading…
Reference in New Issue
Block a user