Refactoring

This commit is contained in:
Changhua 2022-08-13 20:03:22 +08:00
parent c9902b35ac
commit abf980ecac
8 changed files with 101 additions and 107 deletions

View File

@ -170,10 +170,10 @@
<ClInclude Include="framework.h" /> <ClInclude Include="framework.h" />
<ClInclude Include="get_contacts.h" /> <ClInclude Include="get_contacts.h" />
<ClInclude Include="load_calls.h" /> <ClInclude Include="load_calls.h" />
<ClInclude Include="monitor.h" />
<ClInclude Include="receive_msg.h" /> <ClInclude Include="receive_msg.h" />
<ClInclude Include="rpc_server.h" /> <ClInclude Include="rpc_server.h" />
<ClInclude Include="send_msg.h" /> <ClInclude Include="send_msg.h" />
<ClInclude Include="spy.h" />
<ClInclude Include="spy_types.h" /> <ClInclude Include="spy_types.h" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
@ -184,10 +184,10 @@
<ClCompile Include="exec_sql.cpp" /> <ClCompile Include="exec_sql.cpp" />
<ClCompile Include="get_contacts.cpp" /> <ClCompile Include="get_contacts.cpp" />
<ClCompile Include="load_calls.cpp" /> <ClCompile Include="load_calls.cpp" />
<ClCompile Include="monitor.cpp" />
<ClCompile Include="receive_msg.cpp" /> <ClCompile Include="receive_msg.cpp" />
<ClCompile Include="rpc_server.cpp" /> <ClCompile Include="rpc_server.cpp" />
<ClCompile Include="send_msg.cpp" /> <ClCompile Include="send_msg.cpp" />
<ClCompile Include="spy.cpp" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Midl Include="..\Rpc\rpc.idl"> <Midl Include="..\Rpc\rpc.idl">

View File

@ -24,9 +24,6 @@
<ClInclude Include="..\Rpc\rpc_h.h"> <ClInclude Include="..\Rpc\rpc_h.h">
<Filter>头文件</Filter> <Filter>头文件</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="monitor.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="rpc_server.h"> <ClInclude Include="rpc_server.h">
<Filter>头文件</Filter> <Filter>头文件</Filter>
</ClInclude> </ClInclude>
@ -51,6 +48,9 @@
<ClInclude Include="exec_sql.h"> <ClInclude Include="exec_sql.h">
<Filter>头文件</Filter> <Filter>头文件</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="spy.h">
<Filter>头文件</Filter>
</ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="dllmain.cpp"> <ClCompile Include="dllmain.cpp">
@ -62,9 +62,6 @@
<ClCompile Include="..\Rpc\rpc_memory.cpp"> <ClCompile Include="..\Rpc\rpc_memory.cpp">
<Filter>源文件</Filter> <Filter>源文件</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="monitor.cpp">
<Filter>源文件</Filter>
</ClCompile>
<ClCompile Include="rpc_server.cpp"> <ClCompile Include="rpc_server.cpp">
<Filter>源文件</Filter> <Filter>源文件</Filter>
</ClCompile> </ClCompile>
@ -86,6 +83,9 @@
<ClCompile Include="exec_sql.cpp"> <ClCompile Include="exec_sql.cpp">
<Filter>源文件</Filter> <Filter>源文件</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="spy.cpp">
<Filter>源文件</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Midl Include="..\Rpc\rpc.idl"> <Midl Include="..\Rpc\rpc.idl">

View File

@ -1,35 +1,21 @@
#include <stdlib.h> #include "framework.h"
#include "monitor.h" #include "spy.h"
#include "rpc_server.h"
extern HANDLE g_hEvent;
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{ {
switch (ul_reason_for_call) { switch (ul_reason_for_call) {
case DLL_PROCESS_ATTACH: { case DLL_PROCESS_ATTACH: {
// MessageBox(NULL, L"RpcStartServer", L"Hey", 0); // MessageBox(NULL, L"InitSpy", L"DllMain", 0);
if (InitDLL() != 0) { InitSpy(hModule);
// Exit
FreeLibraryAndExitThread(hModule, 0);
}
HANDLE rpcThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)RpcStartServer, hModule, NULL, 0);
if (rpcThread != 0) {
CloseHandle(rpcThread);
}
g_hEvent = CreateEvent(NULL, TRUE, FALSE, NULL); // 创建消息句柄
HANDLE mThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)Monitor, hModule, NULL, 0);
if (mThread != 0) {
CloseHandle(mThread);
}
break; break;
} }
case DLL_THREAD_ATTACH: case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH: case DLL_THREAD_DETACH:
break; break;
case DLL_PROCESS_DETACH: { case DLL_PROCESS_DETACH: {
RpcStopServer(); // MessageBox(NULL, L"DestroySpy", L"DllMain", 0);
DestroySpy();
break; break;
} }
} }

View File

@ -1,7 +0,0 @@
#pragma once
#include "framework.h"
int InitDLL(void);
DWORD WINAPI Monitor(HMODULE hModule);
int IsLogin();

View File

@ -1,3 +1,4 @@
#pragma once #pragma once
void ListenMessage(); void ListenMessage();
void UnListenMessage();

View File

@ -3,11 +3,11 @@
#include "exec_sql.h" #include "exec_sql.h"
#include "get_contacts.h" #include "get_contacts.h"
#include "monitor.h"
#include "rpc_h.h" #include "rpc_h.h"
#include "rpc_server.h" #include "rpc_server.h"
#include "sdk.h" #include "sdk.h"
#include "send_msg.h" #include "send_msg.h"
#include "spy.h"
#include "spy_types.h" #include "spy_types.h"
#include "util.h" #include "util.h"
@ -16,6 +16,7 @@ using namespace std;
extern HANDLE g_hEvent; extern HANDLE g_hEvent;
extern MsgQueue_t g_MsgQueue; extern MsgQueue_t g_MsgQueue;
extern const MsgTypesMap_t g_WxMsgTypes; extern const MsgTypesMap_t g_WxMsgTypes;
extern int IsLogin(void);
int server_IsLogin() { return IsLogin(); } int server_IsLogin() { return IsLogin(); }

View File

@ -1,40 +1,13 @@
#include <atlstr.h> #include "load_calls.h"
#include <stdio.h>
#include "load_calls.h"
#include "monitor.h"
#include "receive_msg.h" #include "receive_msg.h"
#include "rpc_server.h"
#include "spy.h"
#include "util.h" #include "util.h"
HANDLE g_hEvent = NULL; HANDLE g_hEvent = NULL;
WxCalls_t g_WxCalls = { 0 }; WxCalls_t g_WxCalls = { 0 };
DWORD g_WeChatWinDllAddr = 0; DWORD g_WeChatWinDllAddr = 0;
int InitDLL(void)
{
wchar_t version[16] = { 0 };
g_WeChatWinDllAddr = (DWORD)LoadLibrary(L"WeChatWin.dll"); //获取wechatWin模块地址
if (g_WeChatWinDllAddr == 0) {
MessageBox(NULL, L"获取wechatWin.dll模块地址失败", L"错误", 0);
return -1;
}
if (!GetWeChatVersion(version)) { //获取微信版本
MessageBox(NULL, L"获取微信版本失败", L"错误", 0);
return -2;
}
if (LoadCalls(version, &g_WxCalls) != 0) { //加载微信版本对应的Call地址
MessageBox(NULL, L"不支持当前版本", L"错误", 0);
return -3;
}
g_hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
return 0;
}
DWORD WINAPI Monitor(HMODULE hModule) DWORD WINAPI Monitor(HMODULE hModule)
{ {
ListenMessage(); ListenMessage();
@ -42,6 +15,40 @@ DWORD WINAPI Monitor(HMODULE hModule)
return TRUE; return TRUE;
} }
void InitSpy(HMODULE hModule)
{
wchar_t version[16] = { 0 };
g_WeChatWinDllAddr = (DWORD)LoadLibrary(L"WeChatWin.dll"); //获取wechatWin模块地址
if (g_WeChatWinDllAddr == 0) {
MessageBox(NULL, L"获取wechatWin.dll模块地址失败", L"错误", 0);
FreeLibraryAndExitThread(hModule, 0);
}
if (!GetWeChatVersion(version)) { //获取微信版本
MessageBox(NULL, L"获取微信版本失败", L"错误", 0);
FreeLibraryAndExitThread(hModule, 0);
}
if (LoadCalls(version, &g_WxCalls) != 0) { //加载微信版本对应的Call地址
MessageBox(NULL, L"不支持当前版本", L"错误", 0);
FreeLibraryAndExitThread(hModule, 0);
}
g_hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
HANDLE rpcThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)RpcStartServer, hModule, NULL, 0);
if (rpcThread != 0) {
CloseHandle(rpcThread);
}
HANDLE mThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)Monitor, hModule, NULL, 0);
if (mThread != 0) {
CloseHandle(mThread);
}
}
void DestroySpy() { RpcStopServer(); }
int IsLogin(void) int IsLogin(void)
{ {
if (g_WeChatWinDllAddr == 0) { if (g_WeChatWinDllAddr == 0) {

6
Spy/spy.h Normal file
View File

@ -0,0 +1,6 @@
#pragma once
#include "framework.h"
void InitSpy(HMODULE hModule);
void DestroySpy();