-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathGlobalData.hpp
70 lines (53 loc) · 2 KB
/
GlobalData.hpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#pragma once
#include <ntifs.h>
#include "DynamicArray.hpp"
#include "Mutex.hpp"
class GlobalData
{
public:
struct ProtectionProcess
{
enum ProcessAccessFlags : ACCESS_MASK // 1 - allow, 0 - ban
{
TERMINATE = 0x0001, //winnt
CREATE_THREAD = 0x0002, //winnt
SET_SESSIONID = 0x0004, //winnt
VM_OPERATION = 0x0008, //winnt
VM_READ = 0x0010, //winnt
VM_WRITE = 0x0020, //winnt
DUP_HANDLE = 0x0040, //winnt
CREATE_PROCESS = 0x0080, //winnt
SET_QUOTA = 0x0100, //winnt
SET_INFORMATION = 0x0200, //winnt
QUERY_INFORMATION = 0x0400, //winnt
SUSPEND_RESUME = 0x0800, //winnt
DEFAULT_PROCESS = TERMINATE,
DEFAULT_THREAD = 0
};
HANDLE process_id{ 0 }; //0 - åùå íå çàïóùåí
UNICODE_STRING process_path{ 0, 0, nullptr };
HANDLE parent_id{ 0 }; //0 - íåò èëè çàêðûò
bool launch_protection{ false };//Çàùèòà ñ çàïóñêà
ACCESS_MASK process_access_mask{ ProcessAccessFlags::DEFAULT_PROCESS };
ACCESS_MASK thread_access_mask{ ProcessAccessFlags::DEFAULT_THREAD };
bool ban_undercooked_code{ true };
//list sign
bool moderator{ false }; //ìîäåðàòîð
//Âàðèàíòû èíèöèàëèçàöèè çàùèòû ïðîöåññà
void initLaunched(HANDLE process_id);//óæå çàïóùåííûé ïðîöåññ
bool initNotLaunched(HANDLE parent_id, const PUNICODE_STRING process_path);//Íå çàïóù.
bool initNotLaunchedModerator(HANDLE parent_id, const PUNICODE_STRING process_path);//Íå çàïóù. ñ ïîâûøåíûìè ïðîâàìè
void destructor();
};
static bool constructor();
static void destructor();
//ïåðåä âûçîâîì ýòèõ ôóíêöèé íåîáõîäèìî çàõâàòèòü ìþòåêñ
static size_t PRLFindProcessByID(HANDLE id); //-1 - not found
static void PRLDeleteElement(size_t num);//Óäàëèòü
static void TerminateAllProtectedProcesses();//Çâûåðøèòü âñå ïðîöåññû
//Ñïèñîê çàùèùåííûõ ïðîöåññîâ
static TimSTD::DynamicArray<ProtectionProcess> protection_list;//ìàññèâ
static TimSTD::GMutex protection_list_mutex;//Ìþòåêñ !(íóæíî áëîêèðîâàòü ïåðåä äîñòóïîì ê ìàññèâó)
private:
GlobalData();
};