368 lines
7.3 KiB
C
368 lines
7.3 KiB
C
#pragma once
|
|
|
|
#define KFILE_PATH 512
|
|
#define KFILE_NAME_PATH 100
|
|
#define KPROCESS_NAME 100
|
|
#define KPROCESS_PATH 1024
|
|
#define PATH_SIZE 1024
|
|
#define DRIVERNAME L"bs1flt"
|
|
#define DRIVERNAMEA "bs1flt"
|
|
#define BS1FLT_PORTNAME L"\\bs1flt"
|
|
#define LOG_SHARE_EVENT L"{bs1flt-4200-BED2-6B5CD0D88247}"
|
|
#define PROCESS_TERMINATE_SHARE_EVENT L"{A5F2956A-A68E-4404-BCD6-2A7DF47353E8}"
|
|
|
|
#define OBJECT_ALTITUDE L"380832"
|
|
#define REG_ALTITUDE L"380831"
|
|
#define ALTITUDE L"380830"
|
|
#define ALTITUDE_NAME _T("bs1fltalttude")
|
|
|
|
|
|
/// 레지스트리 보호대상 정의
|
|
#define REG_BS1_REGPATH_KEY_W L"SOFTWARE\\eCrmHomeEdition"
|
|
#define REG_BS1_REGPATH_KEY_W_64 L"SOFTWARE\\WOW6432NODE\\eCrmHomeEdition"
|
|
|
|
#define REG_MINIMAL_BS1SERVICE_KEY_W L"SYSTEM\\CurrentControlSet\\Services\\SvcCrmHe"
|
|
//#define REG_MINIMAL_SAFEMODE_BS1SERVICE_KEY_W L"\\CONTROL\\SAFEBOOT\\MINIMAL\\BS1SERVICE"
|
|
//#define REG_NETWORK_SAFEMODE_BS1SERVICE_KEY_W L"\\CONTROL\\SAFEBOOT\\NETWORK\\BS1SERVICE"
|
|
//#define REG_MINIMAL_SAFEMODE_BS1FLT_KEY_W L"\\CONTROL\\SAFEBOOT\\MINIMAL\\BS1FLT"
|
|
//#define REG_NETWORK_SAFEMODE_BS1FLT_KEY_W L"\\CONTROL\\SAFEBOOT\\NETWORK\\BS1FLT"
|
|
|
|
/// 파일명 타입
|
|
#define PG_FILE_UNDEFINED 0
|
|
#define PG_FILE_ALLOW 1
|
|
|
|
|
|
typedef struct _BS1FLT_MSG
|
|
{
|
|
DWORD type;
|
|
DWORD pid;
|
|
WCHAR path[1024];
|
|
|
|
}BS1FLT_MSG, *PBS1FLT_MSG;
|
|
|
|
|
|
/// cds_flt 옵션 설정/////
|
|
|
|
/// 프로세스 아이디 타입
|
|
#define PG_PID_UNDEFINED 0
|
|
#define PG_PID_ALLOW 1 /// 모든 경로 접근 가능 프로세스
|
|
#define PG_PID_WHITE 2 /// 화이트 경로에 대한 접근 프로세스
|
|
#define PG_PID_GREEN 4 ///
|
|
#define PG_PID_BLACK 8 /// 접근 차단 프로세스
|
|
#define PG_PID_GRAY 16 /// PG_PATH_GRAY 허용되는 프로세스
|
|
#define PG_PID_BLOCK_RENAME 32 /// 이름변경만 차단
|
|
#define PG_PID_PROTECT 64 /// 보호 프로세스 (종료 불가)
|
|
|
|
|
|
/// 경로 타입
|
|
#define PG_PATH_UNDEFINED 0
|
|
#define PG_PATH_ALLOW 1
|
|
#define PG_PATH_WHITE 2
|
|
#define PG_PATH_BLACK 4
|
|
#define PG_PATH_NOTIFY 8
|
|
#define PG_PATH_GRAY 16
|
|
|
|
#define PG_PATH_ALL (PG_PATH_ALLOW|PG_PATH_WHITE|PG_PATH_BLACK|PG_PATH_NOTIFY)
|
|
|
|
/// 명령어 타입
|
|
#define STATE_SET 0
|
|
#define STATE_DEL 1
|
|
#define STATE_CLEAR 2
|
|
|
|
/// 반출 경로에 대한 cds_flt copy data 설정 구조체
|
|
typedef struct _FLT_DIR_SPEC_POLICY
|
|
{
|
|
WCHAR dir[MAX_PATH];
|
|
DWORD dirtype;
|
|
DWORD processcnt;
|
|
WCHAR prcess[50][MAX_PATH];
|
|
DWORD type[50];
|
|
}FLT_DIR_SPEC_POLICY, * PFLT_DIR_SPEC_POLICY;
|
|
|
|
/// sharelock custom 설정 구조체
|
|
typedef struct _FLT_START_FOR_CUSTOM
|
|
{
|
|
///설정 경로
|
|
WCHAR control_dir[10][MAX_PATH];
|
|
///설정 타입
|
|
///#define PG_PATH_UNDEFINED 0
|
|
///#define PG_PATH_ALLOW 1
|
|
///#define PG_PATH_WHITE 2
|
|
///#define PG_PATH_BLACK 4
|
|
///#define PG_PATH_NOTIFY 8
|
|
///#define PG_PATH_GRAY 16
|
|
DWORD control_type[10];
|
|
///환경 설정 파일
|
|
WCHAR inidir[MAX_PATH];
|
|
|
|
}FLT_START_FOR_CUSTOM, * PFLT_START_FOR_CUSTOM;
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
//장치별 타입
|
|
enum enum_devicetype
|
|
{
|
|
BDC_UNKNOWN_DEV = 0,
|
|
BDC_CDROM,
|
|
BDC_FLOOPY,
|
|
BDC_USB_DISK,
|
|
BDC_LOCAL_DISK,
|
|
BDC_NETWORKDRIVEOUT,
|
|
BDC_EXTERNALHDD,
|
|
BDC_NETWORKDRIVEIN,
|
|
BDC_NETWORKSHAREOUT,
|
|
BDC_USB, // USB Port(HID, Hub 제외)
|
|
BDC_USB_NET,
|
|
BDC_USB_HID,
|
|
BDC_1394,
|
|
BDC_SERIAL,
|
|
BDC_PARALLEL,
|
|
BDC_PCMCIA,
|
|
BDC_PCMCIA_NET,
|
|
BDC_IRDA,
|
|
BDC_MODEM,
|
|
BDC_BLUETOOTH,
|
|
BDC_BLUETOOTH_FILE,
|
|
BDC_WIBRO,
|
|
BDC_TLOGIN,
|
|
BDC_ACTIVE_SYNC,
|
|
BDC_WIRELESS,
|
|
BDC_LGMODEM,
|
|
BDC_TETHERING,
|
|
BDC_SDCARD,
|
|
BDC_PORTABLE_STORAGE,
|
|
BDC_WEBCAM,
|
|
BDC_MTP,
|
|
BDC_MAX_DEVICE_TYPE
|
|
|
|
};
|
|
|
|
enum enum_devicestate
|
|
{
|
|
ENABLE = 0,
|
|
DISABLE,
|
|
READONLY
|
|
};
|
|
|
|
enum enum_pb_kernel_comunicationid
|
|
{
|
|
START = 0x1,
|
|
STOP,
|
|
CLEAR,
|
|
GET_LOG,
|
|
SET_POLICY,
|
|
SET_PATH,
|
|
DEL_PATH,
|
|
SET_PROCESSNAME,
|
|
SET_FILENAME,
|
|
GET_CLOSE_PATH,
|
|
GET_CLOSE_PATH_INFO,
|
|
SET_PID,
|
|
REMOVE_PID,
|
|
START_FOLDER_PROTECT,
|
|
START_IS_SHARE_FOLDER_WATCHE,
|
|
START_DEVICE_PROTECT,
|
|
GET_PROCESS_NOTIFY_STATUS,
|
|
GET_PID,
|
|
SET_DEBUG_LEVEL,
|
|
SET_DELETE_FILE,
|
|
SET_TERMINATE_PROCESS,
|
|
SET_SDIST_CUSTOM_POLICY,
|
|
DEL_PROCESSNAME,
|
|
SET_WRITE_RENAME_PROTECT_FILEPATH,
|
|
|
|
SET_HOOK,
|
|
|
|
SET_REG_PROTECT,
|
|
SET_REG_KEY,
|
|
DEL_REG_KEY,
|
|
|
|
SET_PROCESS_PROTECT,
|
|
SET_PROCESS_PROTECT_PID,
|
|
DEL_PROCESS_PROTECT_PID,
|
|
SET_PROCESS_PROTECT_PROCESSNAME,
|
|
DEL_PROCESS_PROTECT_PROCESSNAME,
|
|
|
|
SET_USB_DISK_EXCEPT,
|
|
SET_USB_PORT_EXCEPT,
|
|
SET_LOG_TYPE
|
|
};
|
|
|
|
typedef struct _LOG_MSG_DATA
|
|
{
|
|
WCHAR time[50];
|
|
UCHAR log_type_;
|
|
UCHAR device_type_;
|
|
UCHAR state_;
|
|
ULONG processid_;
|
|
WCHAR process_name_[50];
|
|
WCHAR path_[1024];
|
|
|
|
}LOG_MSG_DATA, * PLOG_MSG_DATA;
|
|
|
|
typedef struct _REPORT_DESC
|
|
{
|
|
|
|
ULONGLONG time;
|
|
ULONG pid;
|
|
ULONG code;
|
|
ULONG a0;
|
|
ULONG a1;
|
|
ULONG a2;
|
|
WCHAR ProcessName[KPROCESS_NAME];
|
|
WCHAR path[KFILE_PATH];
|
|
WCHAR renamepath[KFILE_PATH];
|
|
}REPORT_DESC, * PREPORT_DESC;
|
|
|
|
typedef struct _LOG_NOTIFICATION {
|
|
|
|
ULONG count;
|
|
REPORT_DESC desc[1];
|
|
|
|
}LOG_NOTIFICATION, * PLOG_NOTIFICATION;
|
|
|
|
enum enum_logcode
|
|
{
|
|
LOG_CONNECT = 0x1,
|
|
LOG_DISCONNECT = 0x2,
|
|
LOG_POLICY = 0x4,
|
|
LOG_DEBUG_ = 0x8,
|
|
LOG_PROCESS = 0x10,
|
|
LOG_PROCESS_PROTECT = 0x11,
|
|
LOG_ALL = 0xFF
|
|
};
|
|
|
|
typedef struct _EXIT_PID
|
|
{
|
|
ULONG ulCnt;
|
|
ULONG ulPid[100];
|
|
|
|
}EXIT_PID, *PEXIT_PID;
|
|
|
|
|
|
typedef struct _BS1FLT_REPLY {
|
|
|
|
BOOLEAN SafeToOpen;
|
|
|
|
}BS1FLT_REPLY, *PBS1FLT_REPLY;
|
|
|
|
typedef struct _BS1FLT_SET_PROCESS_PATH
|
|
{
|
|
ULONG type;
|
|
ULONG size;
|
|
WCHAR path[PATH_SIZE];
|
|
|
|
}BS1FLT_SET_PROCESS_PATH, *PBS1FLT_SET_PROCESS_PATH;
|
|
|
|
typedef struct _BS1FLT_SET_PATH
|
|
{
|
|
ULONG type;
|
|
ULONG size;
|
|
WCHAR path[PATH_SIZE];
|
|
|
|
}BS1FLT_SET_PATH, *PBS1FLT_SET_PATH;
|
|
|
|
typedef struct _BS1FLT_REG_KEY
|
|
{
|
|
ULONG type;
|
|
ULONG size;
|
|
WCHAR regkey[PATH_SIZE];
|
|
}BS1FLT_REG_KEY, * PBS1FLT_REG_KEY;
|
|
|
|
typedef struct _BS1FLT_USB_DISK_EXCEPT
|
|
{
|
|
ULONG device_type;
|
|
char vendorid[20];
|
|
char productid[20];
|
|
char productrevisionlevel[20];
|
|
char vendorspecific[20];
|
|
|
|
}BS1FLT_USB_DISK_EXCEPT, * PBS1FLT_USB_DISK_EXCEPT;
|
|
|
|
typedef struct _BS1FLT_USB_PORT_EXCEPT
|
|
{
|
|
ULONG devicetype;
|
|
ULONG vendorid;
|
|
ULONG productid;
|
|
ULONG bcddevice;
|
|
WCHAR serial[100];
|
|
}BS1FLT_USB_PORT_EXCEPT, * PBS1FLT_USB_PORT_EXCEPT;
|
|
|
|
typedef struct _BS1FLT_SET_PID
|
|
{
|
|
ULONG type;
|
|
ULONG pid;
|
|
|
|
}BS1FLT_SET_PID, *PBS1FLT_SET_PID;
|
|
|
|
#pragma pack(push, 1)
|
|
typedef struct _FILE_OBJECT_DESC
|
|
{
|
|
ULONG pid;
|
|
ULONG type;
|
|
ULONG size;
|
|
WCHAR path[PATH_SIZE];
|
|
|
|
}FILE_OBJECT_DESC, *PFILE_OBJECT_DESC;
|
|
#pragma pack(pop)
|
|
|
|
typedef struct _FILE_OBJECT_DESC_INFO
|
|
{
|
|
ULONG pid;
|
|
ULONG ulRequeredSize;
|
|
|
|
}FILE_OBJECT_DESC_INFO, *PFILE_OBJECT_DESC_INFO;
|
|
|
|
typedef struct _HOST_ADDRESS_MANAGER
|
|
{
|
|
ULONG ulLen;
|
|
WCHAR wszHost[260];
|
|
}HOST_ADDRESS_MANAGER, * PHOST_ADDRESS_MANAGER;
|
|
|
|
typedef struct _IPADDRESS_MANAGER
|
|
{
|
|
ULONG ulStartIP;
|
|
ULONG ulEndIP;
|
|
}IPADDRESS_MANAGER, * PIPADDRESS_MANAGER;
|
|
|
|
#define SDIST_PROCESS_NAME_LEN 50
|
|
#define SDIST_EXTENSION_CNT 50
|
|
#define SDIST_EXTENSION_LEN 10
|
|
|
|
typedef struct _SDIST_CUSTOM_PROCESS_POLICY
|
|
{
|
|
|
|
WCHAR process[SDIST_PROCESS_NAME_LEN];
|
|
WCHAR extenstion[SDIST_EXTENSION_CNT][SDIST_EXTENSION_LEN];
|
|
|
|
}SDIST_CUSTOM_PROCESS_POLICY, *PSDIST_CUSTOM_PROCESS_POLICY;
|
|
|
|
#pragma pack(push, 1)
|
|
typedef struct _DEVICE_POLICY
|
|
{
|
|
enum enum_devicetype device_type;
|
|
enum enum_devicestate state;
|
|
ULONG islog;
|
|
}DEVICE_POLICY, * PDEVICE_POLICY;
|
|
#pragma pack(pop)
|
|
|
|
typedef struct _BS1FLT_MESSAGE
|
|
{
|
|
ULONG ReplyLength_;
|
|
ULONGLONG id_;
|
|
ULONG pid_;
|
|
ULONG type_;
|
|
ULONG state_;
|
|
DEVICE_POLICY device_policy_;
|
|
|
|
union
|
|
{
|
|
// 파일 패스 관련 구조체
|
|
struct _BS1FLT_SET_PATH file_path_;
|
|
// 프로세스 이름 관련 구조체
|
|
struct _BS1FLT_SET_PROCESS_PATH process_path_;
|
|
struct _BS1FLT_REG_KEY regkey_;
|
|
struct _BS1FLT_USB_DISK_EXCEPT usb_except_;
|
|
struct _BS1FLT_USB_PORT_EXCEPT usb_port_except_;
|
|
}w;
|
|
|
|
}BS1FLT_MESSAGE , *PBS1FLT_MESSAGE; |