diff --git a/Spy/Spy.vcxproj b/Spy/Spy.vcxproj
index 7c79f57..d3c1c4d 100644
--- a/Spy/Spy.vcxproj
+++ b/Spy/Spy.vcxproj
@@ -170,10 +170,10 @@
-
+
@@ -184,10 +184,10 @@
-
+
diff --git a/Spy/Spy.vcxproj.filters b/Spy/Spy.vcxproj.filters
index 0988c9e..f09b380 100644
--- a/Spy/Spy.vcxproj.filters
+++ b/Spy/Spy.vcxproj.filters
@@ -24,9 +24,6 @@
头文件
-
- 头文件
-
头文件
@@ -51,6 +48,9 @@
头文件
+
+ 头文件
+
@@ -62,9 +62,6 @@
源文件
-
- 源文件
-
源文件
@@ -86,6 +83,9 @@
源文件
+
+ 源文件
+
diff --git a/Spy/dllmain.cpp b/Spy/dllmain.cpp
index 01dc863..8af8120 100644
--- a/Spy/dllmain.cpp
+++ b/Spy/dllmain.cpp
@@ -1,37 +1,23 @@
-#include
-
-#include "monitor.h"
-#include "rpc_server.h"
-
-extern HANDLE g_hEvent;
-
-BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
-{
- switch (ul_reason_for_call) {
- case DLL_PROCESS_ATTACH: {
- // MessageBox(NULL, L"RpcStartServer", L"Hey", 0);
- if (InitDLL() != 0) {
- // 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;
- }
- case DLL_THREAD_ATTACH:
- case DLL_THREAD_DETACH:
- break;
- case DLL_PROCESS_DETACH: {
- RpcStopServer();
- break;
- }
- }
- return TRUE;
-}
+#include "framework.h"
+
+#include "spy.h"
+
+BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
+{
+ switch (ul_reason_for_call) {
+ case DLL_PROCESS_ATTACH: {
+ // MessageBox(NULL, L"InitSpy", L"DllMain", 0);
+ InitSpy(hModule);
+ break;
+ }
+ case DLL_THREAD_ATTACH:
+ case DLL_THREAD_DETACH:
+ break;
+ case DLL_PROCESS_DETACH: {
+ // MessageBox(NULL, L"DestroySpy", L"DllMain", 0);
+ DestroySpy();
+ break;
+ }
+ }
+ return TRUE;
+}
diff --git a/Spy/monitor.h b/Spy/monitor.h
deleted file mode 100644
index c227d21..0000000
--- a/Spy/monitor.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#pragma once
-
-#include "framework.h"
-
-int InitDLL(void);
-DWORD WINAPI Monitor(HMODULE hModule);
-int IsLogin();
diff --git a/Spy/receive_msg.h b/Spy/receive_msg.h
index b309f0d..4390490 100644
--- a/Spy/receive_msg.h
+++ b/Spy/receive_msg.h
@@ -1,3 +1,4 @@
-#pragma once
+#pragma once
-void ListenMessage();
\ No newline at end of file
+void ListenMessage();
+void UnListenMessage();
diff --git a/Spy/rpc_server.cpp b/Spy/rpc_server.cpp
index 8c590cb..ad6e268 100644
--- a/Spy/rpc_server.cpp
+++ b/Spy/rpc_server.cpp
@@ -3,11 +3,11 @@
#include "exec_sql.h"
#include "get_contacts.h"
-#include "monitor.h"
#include "rpc_h.h"
#include "rpc_server.h"
#include "sdk.h"
#include "send_msg.h"
+#include "spy.h"
#include "spy_types.h"
#include "util.h"
@@ -16,6 +16,7 @@ using namespace std;
extern HANDLE g_hEvent;
extern MsgQueue_t g_MsgQueue;
extern const MsgTypesMap_t g_WxMsgTypes;
+extern int IsLogin(void);
int server_IsLogin() { return IsLogin(); }
diff --git a/Spy/monitor.cpp b/Spy/spy.cpp
similarity index 58%
rename from Spy/monitor.cpp
rename to Spy/spy.cpp
index f02fce1..e01bead 100644
--- a/Spy/monitor.cpp
+++ b/Spy/spy.cpp
@@ -1,52 +1,59 @@
-#include
-#include
-
-#include "load_calls.h"
-#include "monitor.h"
-#include "receive_msg.h"
-#include "util.h"
-
-HANDLE g_hEvent = NULL;
-WxCalls_t g_WxCalls = { 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)
-{
- ListenMessage();
-
- return TRUE;
-}
-
-int IsLogin(void)
-{
- if (g_WeChatWinDllAddr == 0) {
- return 0;
- }
-
- return (int)GET_DWORD(g_WeChatWinDllAddr + g_WxCalls.login);
-}
+#include "load_calls.h"
+#include "receive_msg.h"
+#include "rpc_server.h"
+#include "spy.h"
+#include "util.h"
+
+HANDLE g_hEvent = NULL;
+WxCalls_t g_WxCalls = { 0 };
+DWORD g_WeChatWinDllAddr = 0;
+
+DWORD WINAPI Monitor(HMODULE hModule)
+{
+ ListenMessage();
+
+ 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)
+{
+ if (g_WeChatWinDllAddr == 0) {
+ return 0;
+ }
+
+ return (int)GET_DWORD(g_WeChatWinDllAddr + g_WxCalls.login);
+}
diff --git a/Spy/spy.h b/Spy/spy.h
new file mode 100644
index 0000000..59d669e
--- /dev/null
+++ b/Spy/spy.h
@@ -0,0 +1,6 @@
+#pragma once
+
+#include "framework.h"
+
+void InitSpy(HMODULE hModule);
+void DestroySpy();