Feature: Use frpc.dll to proxy client's TCP port

This commit is contained in:
yuanyuanxiang
2025-12-22 20:02:57 +01:00
parent 5a33628b92
commit d580d282d8
12 changed files with 299 additions and 49 deletions

View File

@@ -270,6 +270,7 @@ enum {
CMD_EXECUTE_DLL = 240, // ִ<>д<EFBFBD><D0B4><EFBFBD>
TOKEN_CLIENT_MSG = 241, // <20>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD>Ϣ
CMD_SET_GROUP = 242, // <20>޸ķ<DEB8><C4B7><EFBFBD>
CMD_EXECUTE_DLL_NEW = 243, // ִ<>д<EFBFBD><D0B4><EFBFBD>
};
enum MachineCommand {
@@ -909,6 +910,38 @@ typedef struct DllExecuteInfo {
char Is32Bit; // <20>Ƿ<EFBFBD>32λDLL
char Reseverd[18];
} DllExecuteInfo;
typedef struct DllExecuteInfoNew {
int RunType; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int Size; // DLL <20><>С
int CallType; // <20><><EFBFBD>÷<EFBFBD>ʽ
char Name[32]; // DLL <20><><EFBFBD><EFBFBD>
char Md5[33]; // DLL MD5
int Pid; // <20><>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID
char Is32Bit; // <20>Ƿ<EFBFBD>32λDLL
char Reseverd[18];
char Parameters[400];
} DllExecuteInfoNew;
inline void SetParameters(DllExecuteInfoNew *p, char *param, int size) {
memcpy(p->Parameters, param, min(size, 400));
}
typedef struct FrpcParam {
char privilegeKey[36];
uint64_t timestamp;
char serverAddr[64];
int serverPort;
int localPort;
int remotePort;
FrpcParam(const char* key, uint64_t time, const char* addr, int serverPort, int localPort, int remotePort) {
strcpy_s(privilegeKey, key);
strcpy_s(serverAddr, addr);
this->timestamp = time;
this->serverPort = serverPort;
this->localPort = localPort;
this->remotePort = remotePort;
}
}FrpcParam;
#pragma pack(pop)
enum {
@@ -920,6 +953,7 @@ enum {
CALLTYPE_DEFAULT = 0, // Ĭ<>ϵ<EFBFBD><CFB5>÷<EFBFBD>ʽ: ֻ<>Ǽ<EFBFBD><C7BC><EFBFBD>DLL,<2C><>Ҫ<EFBFBD><D2AA>DLL<4C><4C><EFBFBD><EFBFBD>ʱִ<CAB1>д<EFBFBD><D0B4><EFBFBD>
CALLTYPE_IOCPTHREAD = 1, // <20><><EFBFBD><EFBFBD>run<75><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD>: DWORD (__stdcall *run)(void* lParam)
CALLTYPE_FRPC_CALL = 2, // <20><><EFBFBD><EFBFBD>FRPC
};
typedef DWORD(__stdcall* PidCallback)(void);