WeChatFerry/spy/receive_transfer.cpp
2023-04-19 23:17:15 +08:00

40 lines
941 B
C++

#include "receive_transfer.h"
#include "load_calls.h"
#include "log.h"
#include "util.h"
using namespace std;
extern WxCalls_t g_WxCalls;
extern DWORD g_WeChatWinDllAddr;
int ReceiveTransfer(string wxid, string transferid)
{
int rv = 0;
DWORD recvTransferCall = g_WeChatWinDllAddr + g_WxCalls.tf.call1;
DWORD recvTransferCall2 = g_WeChatWinDllAddr + g_WxCalls.tf.call2;
wstring wsWxid = String2Wstring(wxid);
wstring wsTid = String2Wstring(transferid);
LOG_DEBUG("Receiving transfer, from: {}, transferid: {}", wxid, transferid);
__asm {
pushad
sub esp, 0x30
mov ecx, esp
lea eax, wsTid
push eax
call recvTransferCall
lea ecx, dword ptr ds:[esp+0x14]
lea eax, wsWxid
push eax
call recvTransferCall
call recvTransferCall2
add esp, 0x30
mov rv, eax
popad
}
return rv;
}