Add PYQ control flag
This commit is contained in:
parent
fed3143b19
commit
2d5097ee3d
@ -44,6 +44,7 @@ message Request
|
||||
DecPath dec = 10;
|
||||
Transfer tf = 11;
|
||||
uint64 ui64 = 12; // 64 位整数,通用
|
||||
bool flag = 13;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,8 +1,10 @@
|
||||
#include "framework.h"
|
||||
|
||||
#include "log.h"
|
||||
#include "spy_types.h"
|
||||
#include "util.h"
|
||||
|
||||
extern bool gIsListeningPyq;
|
||||
extern WxCalls_t g_WxCalls;
|
||||
extern DWORD g_WeChatWinDllAddr;
|
||||
|
||||
@ -62,6 +64,11 @@ static int GetNextPage(uint64_t id)
|
||||
|
||||
int RefreshPyq(uint64_t id)
|
||||
{
|
||||
if (!gIsListeningPyq) {
|
||||
LOG_ERROR("没有启动朋友圈消息接收,参考:enable_receiving_msg");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (id == 0) {
|
||||
return GetFirstPage();
|
||||
}
|
||||
|
@ -12,7 +12,7 @@
|
||||
#include "util.h"
|
||||
|
||||
// Defined in rpc_server.cpp
|
||||
extern bool gIsListening;
|
||||
extern bool gIsListening, gIsListeningPyq;
|
||||
extern mutex gMutex;
|
||||
extern condition_variable gCV;
|
||||
extern queue<WxMsg_t> gMsgQueue;
|
||||
@ -31,7 +31,6 @@ static DWORD recvPyqHookAddr = 0;
|
||||
static DWORD recvPyqCallAddr = 0;
|
||||
static DWORD recvPyqJumpBackAddr = 0;
|
||||
static CHAR recvPyqBackupCode[5] = { 0 };
|
||||
static bool gIsListeningPyq = false;
|
||||
|
||||
MsgTypes_t GetMsgTypes()
|
||||
{
|
||||
@ -172,7 +171,6 @@ void ListenMessage()
|
||||
|
||||
HookAddress(recvMsgHookAddr, RecieveMsgFunc, recvMsgBackupCode);
|
||||
gIsListening = true;
|
||||
ListenPyq();
|
||||
}
|
||||
|
||||
void UnListenMessage()
|
||||
@ -182,7 +180,6 @@ void UnListenMessage()
|
||||
}
|
||||
UnHookAddress(recvMsgHookAddr, recvMsgBackupCode);
|
||||
gIsListening = false;
|
||||
UnListenPyq();
|
||||
}
|
||||
|
||||
void DispatchPyq(DWORD reg)
|
||||
|
@ -39,7 +39,8 @@
|
||||
|
||||
extern int IsLogin(void); // Defined in spy.cpp
|
||||
|
||||
bool gIsListening;
|
||||
bool gIsListening = false;
|
||||
bool gIsListeningPyq = false;
|
||||
mutex gMutex;
|
||||
condition_variable gCV;
|
||||
queue<WxMsg_t> gMsgQueue;
|
||||
@ -377,7 +378,7 @@ static void PushMessage()
|
||||
nng_close(msg_sock);
|
||||
}
|
||||
|
||||
bool func_enable_recv_txt(uint8_t *out, size_t *len)
|
||||
bool func_enable_recv_txt(bool pyq, uint8_t *out, size_t *len)
|
||||
{
|
||||
Response rsp = Response_init_default;
|
||||
rsp.func = Functions_FUNC_ENABLE_RECV_TXT;
|
||||
@ -385,6 +386,9 @@ bool func_enable_recv_txt(uint8_t *out, size_t *len)
|
||||
rsp.msg.status = -1;
|
||||
|
||||
ListenMessage();
|
||||
if (pyq) {
|
||||
ListenPyq();
|
||||
}
|
||||
HANDLE msgThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)PushMessage, NULL, NULL, NULL);
|
||||
if (msgThread != 0) {
|
||||
CloseHandle(msgThread);
|
||||
@ -408,6 +412,7 @@ bool func_disable_recv_txt(uint8_t *out, size_t *len)
|
||||
rsp.which_msg = Response_status_tag;
|
||||
rsp.msg.status = 0;
|
||||
|
||||
UnListenPyq();
|
||||
UnListenMessage(); // 可能需要1秒之后才能退出,见 PushMessage
|
||||
|
||||
pb_ostream_t stream = pb_ostream_from_buffer(out, *len);
|
||||
@ -650,7 +655,8 @@ static bool dispatcher(uint8_t *in, size_t in_len, uint8_t *out, size_t *out_len
|
||||
#endif
|
||||
case Functions_FUNC_ENABLE_RECV_TXT: {
|
||||
LOG_DEBUG("[Functions_FUNC_ENABLE_RECV_TXT]");
|
||||
ret = func_enable_recv_txt(out, out_len);
|
||||
LOG_BUFFER(in, in_len);
|
||||
ret = func_enable_recv_txt(req.msg.flag, out, out_len);
|
||||
break;
|
||||
}
|
||||
case Functions_FUNC_DISABLE_RECV_TXT: {
|
||||
|
@ -358,7 +358,7 @@ class Wcf():
|
||||
"""
|
||||
return self.msgQ.get(block, timeout=1)
|
||||
|
||||
def enable_receiving_msg(self) -> bool:
|
||||
def enable_receiving_msg(self, pyq=False) -> bool:
|
||||
"""允许接收消息,成功后通过 `get_msg` 读取消息"""
|
||||
def listening_msg():
|
||||
rsp = wcf_pb2.Response()
|
||||
@ -379,13 +379,14 @@ class Wcf():
|
||||
|
||||
req = wcf_pb2.Request()
|
||||
req.func = wcf_pb2.FUNC_ENABLE_RECV_TXT # FUNC_ENABLE_RECV_TXT
|
||||
req.flag = pyq
|
||||
rsp = self._send_request(req)
|
||||
if rsp.status != 0:
|
||||
return False
|
||||
|
||||
self._is_receiving_msg = True
|
||||
# 阻塞,把控制权交给用户
|
||||
# self._rpc_get_message(callback)
|
||||
# self.listening_msg(callback)
|
||||
|
||||
# 不阻塞,启动一个新的线程来接收消息
|
||||
Thread(target=listening_msg, name="GetMessage", daemon=True).start()
|
||||
@ -541,7 +542,6 @@ class Wcf():
|
||||
rsp = self._send_request(req)
|
||||
return rsp.status
|
||||
|
||||
|
||||
def decrypt_image(self, src: str, dst: str) -> bool:
|
||||
"""解密图片:
|
||||
|
||||
|
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user