Refactoring
This commit is contained in:
parent
4a60e3b5f1
commit
85a31e21e4
@ -24,7 +24,10 @@ WxCalls_t wxCalls = {
|
|||||||
{ 0xA17D50, 0xF59E40, 0xA18BD0, 0xA17E70 }, // Accept New Friend application
|
{ 0xA17D50, 0xF59E40, 0xA18BD0, 0xA17E70 }, // Accept New Friend application
|
||||||
{ 0x78CF20, 0xF59E40, 0xBD1DC0 }, // Add chatroom members
|
{ 0x78CF20, 0xF59E40, 0xBD1DC0 }, // Add chatroom members
|
||||||
{ 0x78CF20, 0xF59E40, 0xBD22A0 }, // Delete chatroom members
|
{ 0x78CF20, 0xF59E40, 0xBD22A0 }, // Delete chatroom members
|
||||||
{ 0x7B2E60, 0x15E2C20, 0x79C250 } // Receive transfer
|
{ 0x7B2E60, 0x15E2C20, 0x79C250 }, // Receive transfer
|
||||||
|
/* Receive PYQ
|
||||||
|
hook, call, call1, call2, call3, start, end, ts, wxid, content, xml, step*/
|
||||||
|
{ 0x14F9E15, 0x14FA0A0, 0xC39680, 0x14E2140, 0x14E21E0, 0x20, 0x24, 0x2C, 0x18, 0x3C, 0x384, 0xB48 }
|
||||||
};
|
};
|
||||||
|
|
||||||
int LoadCalls(const wchar_t *version, WxCalls_t *calls)
|
int LoadCalls(const wchar_t *version, WxCalls_t *calls)
|
||||||
|
@ -17,8 +17,8 @@ typedef struct RawVector {
|
|||||||
static int GetFirstPage()
|
static int GetFirstPage()
|
||||||
{
|
{
|
||||||
int rv = -1;
|
int rv = -1;
|
||||||
DWORD pyqCall1 = g_WeChatWinDllAddr + 0xC39680;
|
DWORD pyqCall1 = g_WeChatWinDllAddr + g_WxCalls.pyq.call1;
|
||||||
DWORD pyqCall2 = g_WeChatWinDllAddr + 0x14E2140;
|
DWORD pyqCall2 = g_WeChatWinDllAddr + g_WxCalls.pyq.call2;
|
||||||
|
|
||||||
char buf[0xB44] = { 0 };
|
char buf[0xB44] = { 0 };
|
||||||
__asm {
|
__asm {
|
||||||
@ -39,8 +39,8 @@ static int GetFirstPage()
|
|||||||
static int GetNextPage(uint64_t id)
|
static int GetNextPage(uint64_t id)
|
||||||
{
|
{
|
||||||
int rv = -1;
|
int rv = -1;
|
||||||
DWORD pyqCall1 = g_WeChatWinDllAddr + 0xC39680;
|
DWORD pyqCall1 = g_WeChatWinDllAddr + g_WxCalls.pyq.call1;
|
||||||
DWORD pyqCall3 = g_WeChatWinDllAddr + 0x14E21E0;
|
DWORD pyqCall3 = g_WeChatWinDllAddr + g_WxCalls.pyq.call3;
|
||||||
|
|
||||||
RawVector_t tmp = { 0 };
|
RawVector_t tmp = { 0 };
|
||||||
|
|
||||||
|
@ -184,8 +184,8 @@ void UnListenMessage()
|
|||||||
|
|
||||||
void DispatchPyq(DWORD reg)
|
void DispatchPyq(DWORD reg)
|
||||||
{
|
{
|
||||||
DWORD startAddr = *(DWORD *)(reg + 0x20);
|
DWORD startAddr = *(DWORD *)(reg + g_WxCalls.pyq.start);
|
||||||
DWORD endAddr = *(DWORD *)(reg + 0x24);
|
DWORD endAddr = *(DWORD *)(reg + g_WxCalls.pyq.end);
|
||||||
|
|
||||||
if (startAddr == 0) {
|
if (startAddr == 0) {
|
||||||
return;
|
return;
|
||||||
@ -197,10 +197,10 @@ void DispatchPyq(DWORD reg)
|
|||||||
wxMsg.type = 0x00; // 朋友圈消息
|
wxMsg.type = 0x00; // 朋友圈消息
|
||||||
wxMsg.is_self = 0x00;
|
wxMsg.is_self = 0x00;
|
||||||
wxMsg.id = GET_QWORD(startAddr);
|
wxMsg.id = GET_QWORD(startAddr);
|
||||||
wxMsg.ts = GET_DWORD(startAddr + 0x2C);
|
wxMsg.ts = GET_DWORD(startAddr + g_WxCalls.pyq.ts);
|
||||||
wxMsg.xml = GetStringByWstrAddr(startAddr + 0x384);
|
wxMsg.xml = GetStringByWstrAddr(startAddr + g_WxCalls.pyq.xml);
|
||||||
wxMsg.sender = GetStringByWstrAddr(startAddr + 0x18);
|
wxMsg.sender = GetStringByWstrAddr(startAddr + g_WxCalls.pyq.wxid);
|
||||||
wxMsg.content = GetStringByWstrAddr(startAddr + 0x3C);
|
wxMsg.content = GetStringByWstrAddr(startAddr + g_WxCalls.pyq.content);
|
||||||
|
|
||||||
{
|
{
|
||||||
unique_lock<mutex> lock(gMutex);
|
unique_lock<mutex> lock(gMutex);
|
||||||
@ -209,7 +209,7 @@ void DispatchPyq(DWORD reg)
|
|||||||
|
|
||||||
gCV.notify_all(); // 通知各方消息就绪
|
gCV.notify_all(); // 通知各方消息就绪
|
||||||
|
|
||||||
startAddr += 0xB48;
|
startAddr += g_WxCalls.pyq.step;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -234,8 +234,8 @@ void ListenPyq()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
recvPyqHookAddr = g_WeChatWinDllAddr + 0x14F9E15;
|
recvPyqHookAddr = g_WeChatWinDllAddr + g_WxCalls.pyq.hook;
|
||||||
recvPyqCallAddr = g_WeChatWinDllAddr + 0x14FA0A0;
|
recvPyqCallAddr = g_WeChatWinDllAddr + g_WxCalls.pyq.call;
|
||||||
recvPyqJumpBackAddr = recvPyqHookAddr + 5;
|
recvPyqJumpBackAddr = recvPyqHookAddr + 5;
|
||||||
|
|
||||||
HookAddress(recvPyqHookAddr, RecievePyqFunc, recvPyqBackupCode);
|
HookAddress(recvPyqHookAddr, RecievePyqFunc, recvPyqBackupCode);
|
||||||
|
@ -87,6 +87,21 @@ typedef struct TF {
|
|||||||
DWORD call3;
|
DWORD call3;
|
||||||
} TF_t;
|
} TF_t;
|
||||||
|
|
||||||
|
typedef struct Pyq {
|
||||||
|
DWORD hook;
|
||||||
|
DWORD call;
|
||||||
|
DWORD call1;
|
||||||
|
DWORD call2;
|
||||||
|
DWORD call3;
|
||||||
|
DWORD start;
|
||||||
|
DWORD end;
|
||||||
|
DWORD ts;
|
||||||
|
DWORD wxid;
|
||||||
|
DWORD content;
|
||||||
|
DWORD xml;
|
||||||
|
DWORD step;
|
||||||
|
} Pyq_t;
|
||||||
|
|
||||||
typedef struct WxCalls {
|
typedef struct WxCalls {
|
||||||
DWORD login; // 登录状态
|
DWORD login; // 登录状态
|
||||||
UserInfoCall_t ui; // 用户信息
|
UserInfoCall_t ui; // 用户信息
|
||||||
@ -102,6 +117,7 @@ typedef struct WxCalls {
|
|||||||
RoomMember_t arm; // 添加群成员
|
RoomMember_t arm; // 添加群成员
|
||||||
RoomMember_t drm; // 删除群成员
|
RoomMember_t drm; // 删除群成员
|
||||||
TF_t tf; // 接收转账
|
TF_t tf; // 接收转账
|
||||||
|
Pyq_t pyq; // 接收朋友圈消息
|
||||||
} WxCalls_t;
|
} WxCalls_t;
|
||||||
|
|
||||||
typedef struct WxString {
|
typedef struct WxString {
|
||||||
|
Loading…
Reference in New Issue
Block a user