Compare commits

...
Author SHA1 Message Date
hugy a2cfb13217 修改hook消息接口问题 2023-02-01 17:05:12 +08:00
hugy 911f87211c 修改hook消息接口 close #5 2023-02-01 17:01:53 +08:00
hugy 2f1793b2b1 拍一拍实现 2023-02-01 11:57:32 +08:00
hugy 6b36287c4d 修改文档 2023-02-01 10:39:41 +08:00
6 changed files with 117 additions and 6 deletions
+67 -2
View File
@@ -289,7 +289,7 @@ vcpkg
|参数|必选|类型|说明|
|---|---|---|---|
|port |ture |string| 本地服务端端口,用来接收消息内容 |
|ip |ture |string| 服务端ip地址,用来接收消息内容,可以是任意ip,即tcp客户端连接的服务端的ip (3.8.1.26版本)|
###### 返回字段
|返回字段|字段类型|说明 |
@@ -303,6 +303,7 @@ vcpkg
``` javascript
{
"port": "19099"
"ip":"127.0.0.1"
}
```
响应:
@@ -311,6 +312,38 @@ vcpkg
```
#### 10.取消hook消息**
###### 接口功能
> 取消hook消息
###### 接口地址
> [/api/?type=10](/api/?type=10)
###### HTTP请求方式
> POST JSON
###### 请求参数
|参数|必选|类型|说明|
|---|---|---|---|
###### 返回字段
|返回字段|字段类型|说明 |
|---|---|---|
|code|int|返回状态,1成功, 0失败|
|result|string|成功提示|
###### 接口示例
入参:
``` javascript
```
响应:
``` javascript
{"code":1,"result":"OK"}
```
#### 11.hook图片**
###### 接口功能
@@ -348,6 +381,38 @@ vcpkg
```
#### 12.取消hook图片**
###### 接口功能
> 取消hook图片
###### 接口地址
> [/api/?type=12](/api/?type=12)
###### HTTP请求方式
> POST JSON
###### 请求参数
|参数|必选|类型|说明|
|---|---|---|---|
###### 返回字段
|返回字段|字段类型|说明 |
|---|---|---|
|code|int|返回状态,1成功, 0失败|
|result|string|成功提示|
###### 接口示例
入参:
``` javascript
```
响应:
``` javascript
{"code":1,"result":"OK"}
```
#### 17.删除好友**
###### 接口功能
@@ -851,7 +916,7 @@ vcpkg
|---|---|---|
|code|int|返回状态,1成功, -1失败|
|result|string|成功提示|
|text|string|提取的相应文字|
###### 接口示例
+5 -1
View File
@@ -267,7 +267,11 @@ void api_handle(mg_http_message *hm, struct mg_connection *c, string &ret) {
}
case WECHAT_MSG_START_HOOK: {
int port = get_http_req_param_int(hm, j_param, "port", is_post);
int success = HookRecvMsg(port);
wstring ip = get_http_req_param(hm, j_param, "ip", is_post);
string client_ip = Wstring2String(ip);
char ip_cstr[16];
strcpy_s(ip_cstr,client_ip.c_str());
int success = HookRecvMsg(ip_cstr,port);
json ret_data = {{"code", success}, {"result", "OK"}};
ret = ret_data.dump();
break;
+6 -2
View File
@@ -20,6 +20,7 @@ using namespace std;
#define CLIENT_IP "127.0.0.1"
static int kServerPort = 0;
static int kMessageHooked = FALSE;
static char kServerIp[16]= "127.0.0.1";
static DWORD kWeChatWinBase = GetWeChatWinBase();
static char kOriginReceMsgAsmCode[5] = {0};
@@ -59,10 +60,12 @@ BOOL SendBySocket(const char *buffer, size_t len) {
memset(&client_addr, 0, sizeof(client_addr));
client_addr.sin_family = AF_INET;
client_addr.sin_port = htons((u_short)kServerPort);
InetPtonA(AF_INET, CLIENT_IP, &client_addr.sin_addr.s_addr);
InetPtonA(AF_INET, kServerIp, &client_addr.sin_addr.s_addr);
if (connect(client_socket, reinterpret_cast<sockaddr *>(&client_addr),
sizeof(sockaddr)) < 0) {
#ifdef _DEBUG
cout << "kServerIp:" << kServerIp <<endl;
cout << "port:" << kServerPort <<endl;
cout << "connect error,"
<< " errno:" << errno << endl;
#endif
@@ -190,8 +193,9 @@ _declspec(naked) void handle_sync_msg() {
/// @brief hook any address address+0x5
/// @param port 端口
/// @return 成功返回1,已经hook返回2,失败返回-1
int HookRecvMsg(int port) {
int HookRecvMsg(char* client_ip,int port) {
kServerPort = port;
strcpy_s(kServerIp,client_ip);
kWeChatWinBase = GetWeChatWinBase();
if (!kWeChatWinBase) {
return -1;
+1 -1
View File
@@ -4,7 +4,7 @@
/// @brief hook any address address+0x5
/// @param port 端口
/// @return 成功返回1,已经hook返回2
int HookRecvMsg(int port);
int HookRecvMsg(char* client_ip,int port);
int UnHookRecvMsg();
#endif
+34
View File
@@ -0,0 +1,34 @@
#include "pch.h"
#include "pat.h"
#include "common.h"
#include "wechat_data.h"
#define WX_PAT_MGR_OFFSET 0x7e91c0
#define WX_SEND_PAT_MSG_OFFSET 0x1228510
#define WX_RET_OFFSET 0x1AE4A45
int SendPatMsg(wchar_t* chat_room_id, wchar_t* wxid) {
int success = -1;
WeChatString chat_room(chat_room_id);
WeChatString self_wxid(wxid);
DWORD base = GetWeChatWinBase();
DWORD get_pat_mgr_addr = base + WX_PAT_MGR_OFFSET;
DWORD send_pat_msg_addr = base + WX_SEND_PAT_MSG_OFFSET;
DWORD ret_addr = base + WX_RET_OFFSET;
__asm {
PUSHAD
CALL get_pat_mgr_addr
PUSH ret_addr
PUSH 0x0
PUSH EAX
LEA ECX,chat_room
LEA EDX,self_wxid
CALL send_pat_msg_addr
ADD ESP,0xc
MOVZX EAX,AL
MOV success,EAX
POPAD
}
return success;
}
+4
View File
@@ -0,0 +1,4 @@
#ifndef PAT_H_
#define PAT_H_
int SendPatMsg(wchar_t* chat_room_id,wchar_t* wxid);
#endif