Impl Functions_FUNC_SEND_IMG

This commit is contained in:
Changhua 2023-06-03 18:13:18 +08:00
parent b7c71152e1
commit 479827789d
4 changed files with 28 additions and 22 deletions

View File

@ -11,7 +11,7 @@ WxCalls_t wxCalls = {
/* Receive Message: /* Receive Message:
Hook, call, type, self, id, msgXml, roomId, wxId, content, thumb, extra */ Hook, call, type, self, id, msgXml, roomId, wxId, content, thumb, extra */
{ 0x550F4C, 0xA96350, 0x38, 0x3C, 0x184, 0x1EC, 0x48, 0x170, 0x70, 0x198, 0x1AC }, { 0x550F4C, 0xA96350, 0x38, 0x3C, 0x184, 0x1EC, 0x48, 0x170, 0x70, 0x198, 0x1AC },
{ 0xBD780, 0x771980, 0x521640 }, // Send Image Message { 0x768140, 0XF59E40, 0XCE6640, 0x756960 }, // Send Image Message
{ 0xC3B70, 0x771980, 0x3ED8C0 }, // Send File Message { 0xC3B70, 0x771980, 0x3ED8C0 }, // Send File Message
{ 0xB8A70, 0x3ED5E0, 0x107F00, 0x3ED7B0, 0x2386FE4 }, // Send xml Message { 0xB8A70, 0x3ED5E0, 0x107F00, 0x3ED7B0, 0x2386FE4 }, // Send xml Message
{ 0x771980, 0x4777E0, 0x239E888 }, // Send Emotion Message { 0x771980, 0x4777E0, 0x239E888 }, // Send Emotion Message

View File

@ -584,12 +584,12 @@ static bool dispatcher(uint8_t *in, size_t in_len, uint8_t *out, size_t *out_len
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_IMG: { case Functions_FUNC_SEND_IMG: {
LOG_DEBUG("[Functions_FUNC_SEND_IMG]"); LOG_DEBUG("[Functions_FUNC_SEND_IMG]");
ret = func_send_img(req.msg.file.path, req.msg.file.receiver, out, out_len); ret = func_send_img(req.msg.file.path, req.msg.file.receiver, out, out_len);
break; break;
} }
#if 0
case Functions_FUNC_SEND_FILE: { case Functions_FUNC_SEND_FILE: {
LOG_DEBUG("[Functions_FUNC_SEND_FILE]"); LOG_DEBUG("[Functions_FUNC_SEND_FILE]");
ret = func_send_file(req.msg.file.path, req.msg.file.receiver, out, out_len); ret = func_send_file(req.msg.file.path, req.msg.file.receiver, out, out_len);

View File

@ -13,7 +13,7 @@ extern string GetSelfWxid(); // Defined in spy.cpp
void SendTextMessage(string wxid, string msg, string atWxids) void SendTextMessage(string wxid, string msg, string atWxids)
{ {
int success = 0; int success = 0;
char buffer[0x2D8] = { 0 }; char buffer[0x2D8] = { 0 };
WxString_t wxMsg = { 0 }; WxString_t wxMsg = { 0 };
WxString_t wxWxid = { 0 }; WxString_t wxWxid = { 0 };
@ -78,11 +78,12 @@ void SendImageMessage(string wxid, string path)
if (g_WeChatWinDllAddr == 0) { if (g_WeChatWinDllAddr == 0) {
return; return;
} }
int success = 0;
DWORD tmpEAX = 0; DWORD tmpEAX = 0;
char buf1[0x48] = { 0 }; char buf[0x2D8] = { 0 };
char buf2[0x3B0] = { 0 };
WxString_t imgWxid = { 0 }; WxString_t imgWxid = { 0 };
WxString_t imgPath = { 0 }; WxString_t imgPath = { 0 };
WxString_t unkObj = { 0 };
wstring wsWxid = String2Wstring(wxid); wstring wsWxid = String2Wstring(wxid);
wstring wspath = String2Wstring(path); wstring wspath = String2Wstring(path);
@ -99,25 +100,29 @@ void SendImageMessage(string wxid, string path)
DWORD sendCall1 = g_WeChatWinDllAddr + g_WxCalls.sendImg.call1; DWORD sendCall1 = g_WeChatWinDllAddr + g_WxCalls.sendImg.call1;
DWORD sendCall2 = g_WeChatWinDllAddr + g_WxCalls.sendImg.call2; DWORD sendCall2 = g_WeChatWinDllAddr + g_WxCalls.sendImg.call2;
DWORD sendCall3 = g_WeChatWinDllAddr + g_WxCalls.sendImg.call3; DWORD sendCall3 = g_WeChatWinDllAddr + g_WxCalls.sendImg.call3;
DWORD sendCall4 = g_WeChatWinDllAddr + g_WxCalls.sendImg.call4;
__asm { __asm {
pushad pushad;
call sendCall1 call sendCall1;
sub esp, 0x14 sub esp,0x14;
mov tmpEAX, eax mov tmpEAX,eax;
lea eax, buf1 lea eax,unkObj;
mov ecx, esp mov ecx,esp;
lea edi, imgPath lea edi,imgPath;
push eax push eax;
call sendCall2 call sendCall2;
mov ecx, dword ptr[tmpEAX] mov ecx,dword ptr [tmpEAX];
lea eax, imgWxid lea eax,imgWxid;
push edi push edi;
push eax push eax;
lea eax, buf2 lea eax,buf;
push eax push eax;
call sendCall3 call sendCall3;
popad mov success,eax;
lea ecx,buf;
call sendCall4;
popad;
} }
} }

View File

@ -33,6 +33,7 @@ typedef struct Sendfile {
DWORD call1; DWORD call1;
DWORD call2; DWORD call2;
DWORD call3; DWORD call3;
DWORD call4;
} Sendfile_t; } Sendfile_t;
typedef struct Contact { typedef struct Contact {