#include "pch.h" struct SendCardStruct { DWORD receiver; DWORD sharedwxid; DWORD nickname; }; BOOL SendCard(DWORD pid,wchar_t* receiver, wchar_t* sharedwxid, wchar_t* nickname) { WeChatProcess hp(pid); if (!hp.m_init) return 1; DWORD SendCardRemoteAddr = hp.GetProcAddr(SendCardRemote); if (SendCardRemoteAddr == 0) { return 1; } SendCardStruct params = { 0 }; WeChatData r_receiver(hp.GetHandle(), receiver, TEXTLENGTH(receiver)); WeChatData r_sharedwxid(hp.GetHandle(), sharedwxid, TEXTLENGTH(sharedwxid)); WeChatData r_nickname(hp.GetHandle(), nickname, TEXTLENGTH(nickname)); params.receiver = (DWORD)r_receiver.GetAddr(); params.sharedwxid = (DWORD)r_sharedwxid.GetAddr(); params.nickname = (DWORD)r_nickname.GetAddr(); WeChatData r_params(hp.GetHandle(), ¶ms, sizeof(params)); if (!params.receiver || !params.sharedwxid || !params.nickname || !r_params.GetAddr()) { return 1; } DWORD dwRet = CallRemoteFunction(hp.GetHandle(), SendCardRemoteAddr, r_params.GetAddr()); return 0; }