Compare commits
4
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3da32cce12 | ||
|
|
d1ce40c216 | ||
|
|
3cd6953920 | ||
|
|
83886fe464 |
@@ -526,7 +526,7 @@ DWORD GetPIDForProcess(wchar_t* process)
|
||||
if (!hSnapshot) {
|
||||
return 0;
|
||||
}
|
||||
pe32.dwSize = sizeof(PROCESSENTRY32);
|
||||
pe32.dwSize = sizeof(PROCESSENTRY32W);
|
||||
for (working = Process32FirstW(hSnapshot, &pe32); working; working = Process32NextW(hSnapshot, &pe32))
|
||||
{
|
||||
if (!wcscmp(pe32.szExeFile, process))
|
||||
|
||||
+1
-1
@@ -186,7 +186,7 @@ int AccountMgr::CheckLogin() {
|
||||
POPAD
|
||||
}
|
||||
if (service_addr) {
|
||||
success = *(DWORD *)(service_addr + 0x4C8);
|
||||
success = *(DWORD *)(service_addr + 0x4E0);
|
||||
}
|
||||
return success;
|
||||
}
|
||||
|
||||
@@ -74,6 +74,7 @@ typedef enum HTTP_API_ROUTE {
|
||||
WECHAT_GET_QRCODE,
|
||||
WECHAT_INVITE_MEMBERS,
|
||||
WECHAT_GET_MEMBER_PROFILE,
|
||||
WECHAT_REVOKE_MSG,
|
||||
} WECHAT_HTTP_APIS,
|
||||
*PWECHAT_HTTP_APIS;
|
||||
|
||||
|
||||
@@ -614,6 +614,13 @@ string Dispatch(struct mg_connection *c, struct mg_http_message *hm) {
|
||||
|
||||
break;
|
||||
}
|
||||
case WECHAT_REVOKE_MSG:{
|
||||
ULONG64 msg_id = GetULong64Param(j_param, "msgId");
|
||||
int success = g_context.misc_mgr->RevokeMsg(msg_id);
|
||||
json ret_data = {{"code", success}, {"result", "OK"}};
|
||||
ret = ret_data.dump();
|
||||
break;
|
||||
}
|
||||
default:
|
||||
json ret_data = {{"result", "ERROR"}, {"msg", "not support api"}};
|
||||
ret = ret_data.dump();
|
||||
|
||||
@@ -415,4 +415,45 @@ int MiscMgr::SearchContactNetScene(wchar_t *keyword,UserInfo ** user) {
|
||||
return success;
|
||||
}
|
||||
|
||||
int MiscMgr::RevokeMsg(ULONG64 msg_id){
|
||||
int success = -1;
|
||||
char chat_msg[0x2D8] = {0};
|
||||
DWORD new_chat_msg_addr = base_addr_ + WX_NEW_CHAT_MSG_OFFSET;
|
||||
DWORD free_addr = base_addr_ + WX_FREE_CHAT_MSG_INSTANCE_COUNTER_OFFSET;
|
||||
DWORD get_chat_mgr_addr = base_addr_ + WX_CHAT_MGR_OFFSET;
|
||||
DWORD get_by_local_Id_addr = base_addr_ + WX_GET_MGR_BY_PREFIX_LOCAL_ID_OFFSET;
|
||||
DWORD revoke_msg_addr = base_addr_ + WX_REVOKE_MSG_OFFSET;
|
||||
|
||||
int db_index = 0;
|
||||
int local_id = DB::GetInstance().GetLocalIdByMsgId(msg_id, db_index);
|
||||
if (local_id < 1) {
|
||||
return -2;
|
||||
}
|
||||
__asm{
|
||||
PUSHAD
|
||||
PUSHFD
|
||||
LEA ECX,chat_msg
|
||||
CALL new_chat_msg_addr
|
||||
CALL get_chat_mgr_addr
|
||||
PUSH dword ptr [db_index]
|
||||
LEA ECX,chat_msg
|
||||
PUSH dword ptr [local_id]
|
||||
CALL get_by_local_Id_addr
|
||||
ADD ESP,0x8
|
||||
CALL get_chat_mgr_addr
|
||||
LEA ECX,chat_msg
|
||||
PUSH ECX
|
||||
MOV ECX,EAX
|
||||
CALL revoke_msg_addr
|
||||
MOV success,EAX
|
||||
LEA ECX,chat_msg
|
||||
PUSH 0x0
|
||||
CALL free_addr
|
||||
POPFD
|
||||
POPAD
|
||||
}
|
||||
|
||||
return success;
|
||||
|
||||
}
|
||||
} // namespace wxhelper
|
||||
@@ -18,6 +18,7 @@ class MiscMgr :public BaseMgr{
|
||||
int GetVoice(ULONG64 msg_id, wchar_t* dir);
|
||||
int GetImgByName(wchar_t* file_path,wchar_t* save_dir);
|
||||
int SearchContactNetScene(wchar_t *keyword,UserInfo ** user);
|
||||
int RevokeMsg(ULONG64 msg_id);
|
||||
};
|
||||
} // namespace wxhelper
|
||||
|
||||
|
||||
@@ -37,8 +37,6 @@ int SendMessageMgr::SendText(wchar_t* wxid, wchar_t* msg) {
|
||||
POPFD
|
||||
POPAD
|
||||
}
|
||||
SPDLOG_INFO("SendText code = {}",success);
|
||||
SPDLOG_INFO("global log with source info");
|
||||
return success;
|
||||
}
|
||||
int SendMessageMgr::SendAtText(wchar_t* chat_room_id, wchar_t** wxids, int len,
|
||||
|
||||
@@ -98,7 +98,8 @@
|
||||
#define WX_DOWNLOAD_VIDEO_IMG_OFFSET 0xd46c30
|
||||
|
||||
|
||||
|
||||
// revoke
|
||||
#define WX_REVOKE_MSG_OFFSET 0xbb6dc0
|
||||
|
||||
|
||||
// pat
|
||||
|
||||
Reference in New Issue
Block a user