fix: sendAppMsg update free addr

This commit is contained in:
hugy 2023-06-03 17:06:48 +08:00
parent 64a603c96b
commit d22aa9de2d
2 changed files with 46 additions and 10 deletions

View File

@ -391,11 +391,16 @@ int SendMessageMgr::SendAppletMsg(wchar_t* wxid, wchar_t* appletid){
receiver_list.push_back(wwxid);
VectorInner* list = (VectorInner*)&receiver_list;
DWORD receiver_list_ptr = (DWORD)&list->start;
WeChatString wapplet(appletid);
char req[0x268]={0};
char req[0x268] = {0};
char temp[0x4] = {0};
char buff[0x88]={0};
char buff[0x88] = {0};
DWORD flag = 0xF;
DWORD zero = 0;
WeChatStr clean;
WeChatStr app_id(c_applet_id);
__asm{
PUSHAD
PUSHFD
@ -406,7 +411,8 @@ int SendMessageMgr::SendAppletMsg(wchar_t* wxid, wchar_t* appletid){
}
// 0x40 gh
// 0xE8 img
memcpy(&req[0x4], &c_applet_id, sizeof(c_applet_id));
memcpy(&req[0x4], &app_id, sizeof(app_id));
__asm{
PUSHAD
PUSHFD
@ -442,15 +448,18 @@ int SendMessageMgr::SendAppletMsg(wchar_t* wxid, wchar_t* appletid){
POPAD
}
__asm{
// no need for WeChat to release memory
memcpy(&req[0x4], &clean, sizeof(clean));
memcpy(&req[0xC8], &zero, sizeof(zero));
memcpy(&req[0xCC], &flag, sizeof(flag));
__asm {
PUSHAD
PUSHFD
LEA ECX,req
PUSH 0x0
CALL free_share_app_msg_req_addr
POPFD
POPAD
}
return success;
}
} // namespace wxhelper
return success;
}
} // namespace wxhelperg

View File

@ -200,7 +200,8 @@
// send app msg
#define NEW_SHARE_APP_MSG_REQ_OFFSET 0xfbae50
#define FREE_SHARE_APP_MSG_REQ_OFFSET 0xfbc0d0
// #define FREE_SHARE_APP_MSG_REQ_OFFSET 0xfbc0d0
#define FREE_SHARE_APP_MSG_REQ_OFFSET 0xfbc100
#define NEW_WA_UPDATABLE_MSG_INFO_OFFSET 0x7b3d30
#define FREE_WA_UPDATABLE_MSG_INFO_OFFSET 0x79d4c0
#define SEND_APP_MSG_OFFSET 0xfe8e40
@ -808,4 +809,30 @@ struct ContactProfile{
std::wstring nickname;
std::wstring head_image;
};
struct WeChatStr{
char * ptr;
DWORD field1;
DWORD field2;
DWORD field3;
DWORD len;
DWORD maxlen;
WeChatStr(const char* p) {
ptr = (char *)p;
field1 = 0;
field2 = 0;
field3 = 0;
len = strlen(p);
maxlen = len | 0xF;
}
WeChatStr() {
ptr = NULL;
field1 = 0;
field2 = 0;
field3 = 0;
len = 0;
maxlen = 0xF;
}
};
#endif