WeChatFerry/spy/spy.cpp

42 lines
1022 B
C++
Raw Normal View History

2022-10-15 20:25:42 +08:00
#include "spy.h"
#include "load_calls.h"
#include "log.h"
2022-08-13 20:03:22 +08:00
#include "rpc_server.h"
#include "util.h"
2022-10-16 22:14:06 +08:00
WxCalls_t g_WxCalls = { 0 };
2022-08-13 20:03:22 +08:00
DWORD g_WeChatWinDllAddr = 0;
2022-08-20 15:15:04 +08:00
void InitSpy()
2022-08-13 20:03:22 +08:00
{
wchar_t version[16] = { 0 };
2022-10-15 20:25:42 +08:00
InitLogger();
2022-08-20 15:15:04 +08:00
g_WeChatWinDllAddr = (DWORD)GetModuleHandle(L"WeChatWin.dll"); //获取wechatWin模块地址
2022-08-13 20:03:22 +08:00
if (g_WeChatWinDllAddr == 0) {
2022-10-15 20:25:42 +08:00
LOG_ERROR("获取wechatWin.dll模块地址失败");
2022-08-20 15:15:04 +08:00
return;
2022-08-13 20:03:22 +08:00
}
if (!GetWeChatVersion(version)) { //获取微信版本
2022-10-15 20:25:42 +08:00
LOG_ERROR("获取微信版本失败");
2022-08-20 15:15:04 +08:00
return;
2022-08-13 20:03:22 +08:00
}
if (LoadCalls(version, &g_WxCalls) != 0) { //加载微信版本对应的Call地址
2022-10-15 20:25:42 +08:00
LOG_ERROR("不支持当前版本");
2022-08-20 15:15:04 +08:00
return;
2022-08-13 20:03:22 +08:00
}
2022-10-15 20:25:42 +08:00
RpcStartServer();
2022-08-13 20:03:22 +08:00
}
2022-10-15 20:25:42 +08:00
void CleanupSpy()
2022-08-13 23:33:37 +08:00
{
RpcStopServer();
2022-10-15 20:25:42 +08:00
// FreeLibraryAndExitThread(hModule, 0);
2022-08-13 23:33:37 +08:00
}
2022-08-13 20:03:22 +08:00
2022-08-13 21:55:08 +08:00
int IsLogin(void) { return (int)GET_DWORD(g_WeChatWinDllAddr + g_WxCalls.login); }
2022-09-25 11:22:24 +08:00
2022-10-15 20:25:42 +08:00
std::string GetSelfWxid() { return GET_STRING(g_WeChatWinDllAddr + g_WxCalls.ui.wxid); }