mirror of
https://github.com/ttttupup/wxhelper.git
synced 2024-10-05 19:14:09 +08:00
41 lines
1017 B
C++
41 lines
1017 B
C++
#include "pch.h"
|
|
#include "forward.h"
|
|
|
|
#include "common.h"
|
|
#include "get_db_handle.h"
|
|
#include "wechat_data.h"
|
|
#define WX_FORWARD_MSG_OFFSET 0xb68c80
|
|
#define WX_INIT_CHAT_MSG_OFFSET 0xdbcc40
|
|
|
|
int ForwardMsg(wchar_t *wxid, unsigned long long msgid) {
|
|
int success = 0;
|
|
|
|
int db_index = 0;
|
|
int localid = GetLocalIdByMsgId(msgid, db_index);
|
|
|
|
if (localid == 0) return 0;
|
|
WeChatString to_user(wxid);
|
|
DWORD base = GetWeChatWinBase();
|
|
DWORD forward_msg_addr = base + WX_FORWARD_MSG_OFFSET;
|
|
DWORD init_chat_msg_addr = base + WX_INIT_CHAT_MSG_OFFSET;
|
|
__asm {
|
|
PUSHAD
|
|
PUSHFD
|
|
MOV EDX, DWORD PTR [db_index]
|
|
PUSH EDX
|
|
MOV EAX, DWORD PTR [localid]
|
|
PUSH EAX
|
|
SUB ESP,0x14
|
|
MOV ECX,ESP
|
|
LEA ESI, to_user;
|
|
PUSH ESI
|
|
CALL init_chat_msg_addr
|
|
CALL forward_msg_addr
|
|
MOVZX EAX,AL;
|
|
MOV success,EAX
|
|
ADD ESP,0x1c
|
|
POPFD
|
|
POPAD
|
|
}
|
|
return success;
|
|
} |