代码拉取完成,页面将自动刷新
同步操作将从 Janisa/ComWeChatRobot 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
#include "pch.h"
struct GetPublicMsgStruct
{
DWORD public_id;
DWORD offset;
};
struct GetPublicMsgRespStruct
{
DWORD message;
DWORD length;
};
wstring GetHistoryPublicMsg(DWORD pid, wchar_t *public_id, wchar_t *offset)
{
WeChatProcess hp(pid);
if (!hp.m_init)
return L"";
DWORD GetHistoryPublicMsgReomteAddr = hp.GetProcAddr(GetHistoryPublicMsgRemote);
if (GetHistoryPublicMsgReomteAddr == 0)
{
return L"";
}
GetPublicMsgStruct params = {0};
WeChatData<wchar_t *> r_public_id(hp.GetHandle(), public_id, TEXTLENGTH(public_id));
WeChatData<wchar_t *> r_offset(hp.GetHandle(), offset, TEXTLENGTH(offset));
params.public_id = (DWORD)r_public_id.GetAddr();
params.offset = (DWORD)r_offset.GetAddr();
WeChatData<GetPublicMsgStruct *> r_params(hp.GetHandle(), ¶ms, sizeof(params));
if (!params.public_id || !params.offset || !r_params.GetAddr())
{
return L"";
}
DWORD dwRet = CallRemoteFunction(hp.GetHandle(), GetHistoryPublicMsgReomteAddr, r_params.GetAddr());
DWORD dwReadSize;
GetPublicMsgRespStruct ret_info = {0};
ReadProcessMemory(hp.GetHandle(), (LPCVOID)dwRet, &ret_info, sizeof(ret_info), &dwReadSize);
if (ret_info.message == 0)
return L"";
char *buffer = new char[ret_info.length + 1];
ReadProcessMemory(hp.GetHandle(), (LPCVOID)ret_info.message, buffer, ret_info.length, &dwReadSize);
string result(buffer, ret_info.length);
wstring wresult = gb2312_to_unicode(result.c_str());
delete[] buffer;
return wresult;
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。