From 7be2903dd2f49ae683f90c58194e3503db3117e5 Mon Sep 17 00:00:00 2001 From: hugy <504650082@qq.com> Date: Fri, 10 Feb 2023 15:52:55 +0800 Subject: [PATCH] =?UTF-8?q?3.9.0.28=E7=89=88=E6=9C=AC=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=BA=93=E5=92=8C=E7=BE=A4=E7=9B=B8=E5=85=B3=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 80 ++++++++++++++++++++++---------------------- src/chat_room.cc | 38 ++++++++++----------- src/forward.cc | 4 +-- src/get_db_handle.cc | 12 +++---- src/hook_img.cc | 6 ++-- src/new_sqlite3.h | 36 ++++++++++---------- 6 files changed, 88 insertions(+), 88 deletions(-) diff --git a/README.md b/README.md index fb1e9c6..bebb8af 100644 --- a/README.md +++ b/README.md @@ -109,20 +109,20 @@ vcpkg 6.发送文件 9.hook消息 10.取消hook消息 -~~11.hook图片~~ -~~12.取消hook图片~~ +11.hook图片 +12.取消hook图片 ~~17.删除好友~~ -~~25.获取群成员~~ -~~27.删除群成员~~ -~~28.增加群成员~~ -~~31.修改群昵称~~ -~~32.获取数据库句柄~~ -~~34.查询数据库~~ -~~40.转发消息~~ +25.获取群成员 +27.删除群成员 +28.增加群成员 +31.修改群昵称 +32.获取数据库句柄 +34.查询数据库 +40.转发消息 44.退出登录 ~~45.确认收款~~ 46.联系人列表 -~~47.获取群详情~~ +47.获取群详情 48.获取解密图片 ~~49.图片提取文字ocr~~ ~~50.拍一拍~~ @@ -226,7 +226,7 @@ vcpkg ###### 请求参数 |参数|必选|类型|说明| |---|---|---|---| -|wxid |ture |string| 接收人wxid | +|wxid |true |string| 接收人wxid | |msg|true |string|消息文本内容| ###### 返回字段 @@ -265,7 +265,7 @@ vcpkg ###### 请求参数 |参数|必选|类型|说明| |---|---|---|---| -|wxid |ture |string| 接收人wxid | +|wxid |true |string| 接收人wxid | |imagePath|true |string|图片路径| ###### 返回字段 @@ -303,7 +303,7 @@ vcpkg ###### 请求参数 |参数|必选|类型|说明| |---|---|---|---| -|wxid |ture |string| 接收人wxid | +|wxid |true |string| 接收人wxid | |filePath|true |string|文件路径| ###### 返回字段 @@ -340,8 +340,8 @@ vcpkg ###### 请求参数 |参数|必选|类型|说明| |---|---|---|---| -|port |ture |string| 本地服务端端口,用来接收消息内容 | -|ip |ture |string| 服务端ip地址,用来接收消息内容,可以是任意ip,即tcp客户端连接的服务端的ip (3.8.1.26版本)| +|port |true |string| 本地服务端端口,用来接收消息内容 | +|ip |true |string| 服务端ip地址,用来接收消息内容,可以是任意ip,即tcp客户端连接的服务端的ip (3.8.1.26版本)| ###### 返回字段 |返回字段|字段类型|说明 | @@ -410,7 +410,7 @@ vcpkg ###### 请求参数 |参数|必选|类型|说明| |---|---|---|---| -|imgDir |ture |string| 图片保存的目录 | +|imgDir |true |string| 图片保存的目录 | ###### 返回字段 @@ -479,7 +479,7 @@ vcpkg ###### 请求参数 |参数|必选|类型|说明| |---|---|---|---| -|wxid |ture |string| 好友wxid | +|wxid |true |string| 好友wxid | ###### 返回字段 @@ -516,7 +516,7 @@ vcpkg ###### 请求参数 |参数|必选|类型|说明| |---|---|---|---| -|chatRoomId |ture |string| 群id | +|chatRoomId |true |string| 群id | ###### 返回字段 @@ -557,8 +557,8 @@ vcpkg ###### 请求参数 |参数|必选|类型|说明| |---|---|---|---| -|chatRoomId |ture |string| 群id | -|memberIds |ture |string| 成员id,以,分割 | +|chatRoomId |true |string| 群id | +|memberIds |true |string| 成员id,以,分割 | ###### 返回字段 @@ -596,8 +596,8 @@ vcpkg ###### 请求参数 |参数|必选|类型|说明| |---|---|---|---| -|chatRoomId |ture |string| 群id | -|memberIds |ture |string| 成员id,以,分割 | +|chatRoomId |true |string| 群id | +|memberIds |true |string| 成员id,以,分割 | ###### 返回字段 @@ -634,9 +634,9 @@ vcpkg ###### 请求参数 |参数|必选|类型|说明| |---|---|---|---| -|chatRoomId |ture |string| 群id | -|wxid |ture |string| 自己的id,只能修改自己的群名片 | -|nickName |ture |string| 修改的昵称 | +|chatRoomId |true |string| 群id | +|wxid |true |string| 自己的id,只能修改自己的群名片 | +|nickName |true |string| 修改的昵称 | ###### 返回字段 |返回字段|字段类型|说明 | @@ -733,8 +733,8 @@ vcpkg ###### 请求参数 |参数|必选|类型|说明| |---|---|---|---| -|dbHandle |ture |int| 句柄 | -|sql |ture |string| sql语句 | +|dbHandle |true |int| 句柄 | +|sql |true |string| sql语句 | ###### 返回字段 @@ -773,8 +773,8 @@ vcpkg ###### 请求参数 |参数|必选|类型|说明| |---|---|---|---| -|wxid |ture |string| 消息接收人wxid | -|msgid |ture |number| 消息id,hook消息接口中返回的消息id | +|wxid |true |string| 消息接收人wxid | +|msgid |true |number| 消息id,hook消息接口中返回的消息id | ###### 返回字段 @@ -931,7 +931,7 @@ vcpkg ###### 请求参数 |参数|必选|类型|说明| |---|---|---|---| -|chatRoomId |ture |string| 群id | +|chatRoomId |true |string| 群id | ###### 返回字段 |返回字段|字段类型|说明 | @@ -974,8 +974,8 @@ vcpkg ###### 请求参数 |参数|必选|类型|说明| |---|---|---|---| -|imagePath |ture |string| 图片路径 | -|savePath |ture |string| 保存路径 | +|imagePath |true |string| 图片路径 | +|savePath |true |string| 保存路径 | ###### 返回字段 |返回字段|字段类型|说明 | @@ -1014,7 +1014,7 @@ vcpkg ###### 请求参数 |参数|必选|类型|说明| |---|---|---|---| -|imagePath |ture |string| 图片路径 | +|imagePath |true |string| 图片路径 | ###### 返回字段 |返回字段|字段类型|说明 | @@ -1037,8 +1037,8 @@ vcpkg ###### 请求参数 |参数|必选|类型|说明| |---|---|---|---| -|chatRoomId |ture |string| 微信群聊id | -|wxid |ture |string| 要拍的用户wxid,如果使用用户自定义的微信号,则不会显示群内昵称 | +|chatRoomId |true |string| 微信群聊id | +|wxid |true |string| 要拍的用户wxid,如果使用用户自定义的微信号,则不会显示群内昵称 | ###### 返回字段 |返回字段|字段类型|说明 | |---|---|---| @@ -1075,8 +1075,8 @@ vcpkg ###### 请求参数 |参数|必选|类型|说明| |---|---|---|---| -|wxid |ture |string| 置顶消息的发送人wxid | -|msgid |ture |string| 消息id | +|wxid |true |string| 置顶消息的发送人wxid | +|msgid |true |string| 消息id | ###### 返回字段 |返回字段|字段类型|说明 | |---|---|---| @@ -1113,8 +1113,8 @@ vcpkg ###### 请求参数 |参数|必选|类型|说明| |---|---|---|---| -|chatRoomId |ture |string| 微信群聊id | -|msgid |ture |string| 消息id | +|chatRoomId |true |string| 微信群聊id | +|msgid |true |string| 消息id | ###### 返回字段 |返回字段|字段类型|说明 | |---|---|---| @@ -1215,7 +1215,7 @@ vcpkg ###### 请求参数 |参数|必选|类型|说明| |---|---|---|---| -|snsId |ture |string| 朋友圈的snsId | +|snsId |true |string| 朋友圈的snsId | diff --git a/src/chat_room.cc b/src/chat_room.cc index ceed580..465984f 100644 --- a/src/chat_room.cc +++ b/src/chat_room.cc @@ -7,21 +7,21 @@ #include "base64.h" using namespace std; -#define WX_CHAT_ROOM_MGR_OFFSET 0x67ee70 -#define WX_GET_CHAT_ROOM_DETAIL_INFO_OFFSET 0xa73a80 -#define WX_NEW_CHAT_ROOM_INFO_OFFSET 0xd07010 -#define WX_FREE_CHAT_ROOM_INFO_OFFSET 0xd072f0 -#define WX_DEL_CHAT_ROOM_MEMBER_OFFSET 0xa69a50 -#define WX_INIT_CHAT_MSG_OFFSET 0xdbf380 -#define WX_FREE_CHAT_MSG_OFFSET 0x649ac0 -#define WX_ADD_MEMBER_TO_CHAT_ROOM_OFFSET 0xa69560 -#define WX_GET_MEMBER_FROM_CHAT_ROOM_OFFSET 0xa749b0 -#define WX_INIT_CHAT_ROOM_OFFSET 0xd04d80 -#define WX_FREE_CHAT_ROOM_OFFSET 0xa7c620 -#define WX_MOD_CHAT_ROOM_MEMBER_NICK_NAME_OFFSET 0xa6f8f0 -#define WX_NEW_CHAT_MSG_OFFSET 0x64adc0 -#define WX_TOP_MSG_OFFSET 0xa76e60 -#define WX_REMOVE_TOP_MSG_OFFSET 0xa76c50 +#define WX_CHAT_ROOM_MGR_OFFSET 0x72cf60 +#define WX_GET_CHAT_ROOM_DETAIL_INFO_OFFSET 0xb6f260 +#define WX_NEW_CHAT_ROOM_INFO_OFFSET 0xe15de0 +#define WX_FREE_CHAT_ROOM_INFO_OFFSET 0xe160b0 +#define WX_DEL_CHAT_ROOM_MEMBER_OFFSET 0xb64180 +#define WX_INIT_CHAT_MSG_OFFSET 0xed3be0 +#define WX_ADD_MEMBER_TO_CHAT_ROOM_OFFSET 0xb63c50 +#define WX_GET_MEMBER_FROM_CHAT_ROOM_OFFSET 0xB70260 +#define WX_INIT_CHAT_ROOM_OFFSET 0xe13b30 +#define WX_FREE_CHAT_ROOM_OFFSET 0xe13d50 +#define WX_MOD_CHAT_ROOM_MEMBER_NICK_NAME_OFFSET 0xb6adf0 +#define WX_NEW_CHAT_MSG_OFFSET 0x70e2a0 +#define WX_FREE_CHAT_MSG_OFFSET 0x6f4ea0 +#define WX_TOP_MSG_OFFSET 0xb727e0 +#define WX_REMOVE_TOP_MSG_OFFSET 0xb725a0 int GetChatRoomDetailInfo(wchar_t* chat_room_id, ChatRoomInfoInner& room_info) { int success = 0; @@ -182,8 +182,8 @@ int AddMemberToChatRoom(wchar_t* chat_room_id, wchar_t** wxids,int len){ int GetMemberFromChatRoom(wchar_t* chat_room_id,ChatRoomInner & out){ int success = 0; - WeChatString chat_room(chat_room_id); - DWORD chat_room_ptr = (DWORD) &chat_room; + WeChatString chat_room(chat_room_id); + DWORD chat_room_ptr = (DWORD) &chat_room; char buffer[0x1D4] = {0}; DWORD base = GetWeChatWinBase(); DWORD get_member_addr = base + WX_GET_MEMBER_FROM_CHAT_ROOM_OFFSET; @@ -261,12 +261,12 @@ int ModChatRoomMemberNickName(wchar_t* chat_room_id,wchar_t* wxid,wchar_t * nick int SetTopMsg(wchar_t* wxid,ULONG64 msg_id){ int success = -1; - char chat_msg[0x2A8] ={0}; + char chat_msg[0x2C4] ={0}; DWORD base = GetWeChatWinBase(); DWORD new_chat_msg_addr = base + WX_NEW_CHAT_MSG_OFFSET; DWORD get_chat_room_mgr_addr = base + WX_CHAT_ROOM_MGR_OFFSET; DWORD handle_top_msg_addr = base + WX_TOP_MSG_OFFSET; - DWORD free_addr = base + WX_FREE_CHAT_ROOM_OFFSET; + DWORD free_addr = base + WX_FREE_CHAT_MSG_OFFSET; vector local_msg = GetChatMsgByMsgId(msg_id); if(local_msg.empty()){ return -2; diff --git a/src/forward.cc b/src/forward.cc index 3ec3b0d..5d936c8 100644 --- a/src/forward.cc +++ b/src/forward.cc @@ -4,8 +4,8 @@ #include "common.h" #include "get_db_handle.h" #include "wechat_data.h" -#define WX_FORWARD_MSG_OFFSET 0xb6a4e0 -#define WX_INIT_CHAT_MSG_OFFSET 0xdbf380 +#define WX_FORWARD_MSG_OFFSET 0xc715f0 +#define WX_INIT_CHAT_MSG_OFFSET 0xed3be0 int ForwardMsg(wchar_t *wxid, unsigned long long msgid) { int success = 0; diff --git a/src/get_db_handle.cc b/src/get_db_handle.cc index 6a26f2d..d684f36 100644 --- a/src/get_db_handle.cc +++ b/src/get_db_handle.cc @@ -5,7 +5,7 @@ #include "new_sqlite3.h" #include "pch.h" #include "wechat_data.h" -#define CONTACT_G_PINSTANCE 0x2c42e78 +#define CONTACT_G_PINSTANCE_OFFSET 0x2e2d628 #define DB_MICRO_MSG_OFFSET 0x68 #define DB_CHAT_MSG_OFFSET 0x1C0 #define DB_MISC_OFFSET 0x3D8 @@ -15,10 +15,10 @@ #define DB_FUNCTION_MSG_OFFSET 0x11B0 #define DB_NAME_OFFSET 0x14 -#define PUBLIC_MSG_MGR_OFFSET 0x2c7ec88 -#define MULTI_DB_MSG_MGR_OFFSET 0x2c807d0 -#define FAVORITE_STORAGE_MGR_OFFSET 0x2c801f8 -#define FTS_FAVORITE_MGR_OFFSET 0x2c439b8 +#define PUBLIC_MSG_MGR_OFFSET 0x2e6ce20 +#define MULTI_DB_MSG_MGR_OFFSET 0x2e6ec84 +#define FAVORITE_STORAGE_MGR_OFFSET 0x2e6e630 +#define FTS_FAVORITE_MGR_OFFSET 0x2e2e168 using namespace std; map dbmap; @@ -64,7 +64,7 @@ std::vector GetDbHandles() { dbs.clear(); dbmap.clear(); DWORD base = GetWeChatWinBase(); - DWORD p_contact_addr = *(DWORD *)(base + CONTACT_G_PINSTANCE); + DWORD p_contact_addr = *(DWORD *)(base + CONTACT_G_PINSTANCE_OFFSET); DWORD micro_msg_db_addr = *(DWORD *)(p_contact_addr + DB_MICRO_MSG_OFFSET); DWORD chat_msg_db_addr = *(DWORD *)(p_contact_addr + DB_CHAT_MSG_OFFSET); DWORD misc_db_addr = *(DWORD *)(p_contact_addr + DB_MISC_OFFSET); diff --git a/src/hook_img.cc b/src/hook_img.cc index 7a052d4..4a1a6aa 100644 --- a/src/hook_img.cc +++ b/src/hook_img.cc @@ -6,9 +6,9 @@ using namespace std; // #define WX_HOOK_IMG_OFFSET 0xd7eaa5 // #define WX_HOOK_IMG_NEXT_OFFSET 0xda56e0 -#define WX_HOOK_IMG_OFFSET 0xc672cc -#define WX_HOOK_IMG_NEXT_OFFSET 0xd82370 -#define WX_SELF_ID_OFFSET 0x2C42A38 +#define WX_HOOK_IMG_OFFSET 0xd723dc +#define WX_HOOK_IMG_NEXT_OFFSET 0xe91d90 +#define WX_SELF_ID_OFFSET 0x2E2CD3C #define BUFSIZE 1024 #define JPEG0 0xFF diff --git a/src/new_sqlite3.h b/src/new_sqlite3.h index a27713f..c95d005 100644 --- a/src/new_sqlite3.h +++ b/src/new_sqlite3.h @@ -135,24 +135,24 @@ #define SQLITE_NULL 5 #define SQLITE_TEXT 3 -#define SQLITE3_EXEC_OFFSET 0x1ba9de0 -#define SQLITE3_BACKUP_INIT_OFFSET 0x1b6f760 -#define SQLITE3_PREPARE_OFFSET 0x1bb0730 -#define SQLITE3_OPEN_OFFSET 0x1bde730 -#define SQLITE3_BACKUP_STEP_OFFSET 0x1b6fb60 -#define SQLITE3_BACKUP_REMAINING_OFFSET 0x1b702a0 -#define SQLITE3_BACKUP_PAGECOUNT_OFFSET 0x1b702b0 -#define SQLITE3_BACKUP_FINISH_OFFSET 0x1b701a0 -#define SQLITE3_SLEEP_OFFSET 0x1bdef70 -#define SQLITE3_ERRCODE_OFFSET 0x1bdd3d0 -#define SQLITE3_CLOSE_OFFSET 0x1bdbb20 -#define SQLITE3_STEP_OFFSET 0x1b785d0 -#define SQLITE3_COLUMN_COUNT_OFFSET 0x1b78ae0 -#define SQLITE3_COLUMN_NAME_OFFSET 0x1b793d0 -#define SQLITE3_COLUMN_TYPE_OFFSET 0x1b79270 -#define SQLITE3_COLUMN_BLOB_OFFSET 0x1b78b20 -#define SQLITE3_COLUMN_BYTES_OFFSET 0x1b78c00 -#define SQLITE3_FINALIZE_OFFSET 0x1b775a0 +#define SQLITE3_EXEC_OFFSET 0x1d5cf70 +#define SQLITE3_BACKUP_INIT_OFFSET 0x1d228d0 +#define SQLITE3_PREPARE_OFFSET 0x1d638c0 +#define SQLITE3_OPEN_OFFSET 0x1d918b0 +#define SQLITE3_BACKUP_STEP_OFFSET 0x1d22ce0 +#define SQLITE3_BACKUP_REMAINING_OFFSET 0x1d23420 +#define SQLITE3_BACKUP_PAGECOUNT_OFFSET 0x1d23430 +#define SQLITE3_BACKUP_FINISH_OFFSET 0x1d23320 +#define SQLITE3_SLEEP_OFFSET 0x1d920f0 +#define SQLITE3_ERRCODE_OFFSET 0x1d90550 +#define SQLITE3_CLOSE_OFFSET 0x1d8ecd0 +#define SQLITE3_STEP_OFFSET 0x1d2b750 +#define SQLITE3_COLUMN_COUNT_OFFSET 0x1d2bc60 +#define SQLITE3_COLUMN_NAME_OFFSET 0x1d2c550 +#define SQLITE3_COLUMN_TYPE_OFFSET 0x1d2c3f0 +#define SQLITE3_COLUMN_BLOB_OFFSET 0x1d2bca0 +#define SQLITE3_COLUMN_BYTES_OFFSET 0x1d2bd80 +#define SQLITE3_FINALIZE_OFFSET 0x1d2a720 typedef int (*Sqlite3_callback)(void*, int, char**, char**);