1 Star 0 Fork 1

陈奇/ComWeChatRobot

forked from Janisa/ComWeChatRobot 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
GetHistoryPublicMsg.cpp 1.54 KB
一键复制 编辑 原始数据 按行查看 历史
Jack Li 提交于 3年前 . 优化与新增功能
#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(), &params, 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;
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/chen_q_i/ComWeChatRobot.git
git@gitee.com:chen_q_i/ComWeChatRobot.git
chen_q_i
ComWeChatRobot
ComWeChatRobot
master

搜索帮助