
Самый мощный в мире движок мониторинга системной активности · Набор для разработки мощной терминальной системы сбора данных и защиты ~ Предназначен для того, чтобы программное обеспечение терминальной безопасности, такое как EDR, нулевое доверие, защита данных, аудит и контроль, могло быстро реализовать функции продукта, не беспокоясь о разработке, обслуживании и проблемах совместимости нижележащих драйверов, что позволяет сосредоточиться на бизнес-разработке
iMonitorSDK — это SDK, предоставляющий мониторинг поведения системы для конечных точек и облачной безопасности.
Он предназначен для того, чтобы помочь промышленным приложениям, таким как безопасность, управление конечными точками и аудит, быстро реализовать необходимые функции, не беспокоясь о разработке, поддержке и совместимости драйверов ядра, что позволяет им сосредоточиться на разработке бизнес-функций.
iMonitorSDK использует коммуникационную структуру на основе протокола сообщений, что делает разработку драйверов более стабильной и быстрой. Весь мониторинг реализован стабильным, стандартным способом и поддерживает Windows от XP до Win11. Поддержка Linux и MacOS также планируется.
С помощью iMonitorSDK вы можете реализовать самозащиту, перехват процессов, защиту от программ-вымогателей, активную защиту, управление интернет-поведением и другие функции безопасности конечных точек с очень низкими затратами.
Мониторинг процессов, файлов, реестра и сети в реальном времени с поддержкой перехвата и блокировки
Защита процессов, файлов, реестра
Перехват запуска процессов, загрузки модулей, внедрение модулей
Перехват и перенаправление файлов
Сетевой брандмауэр, проксирование трафика, анализ протоколов
Механизм правил, поддержка скриптов
Пример 1: Перехват запуска процесса
class MonitorCallback : public IMonitorCallback
{
public:
void OnCallback(IMonitorMessage* Message) override
{
if (Message->GetType() != emMSGProcessCreate)
return;
cxMSGProcessCreate* msg = (cxMSGProcessCreate*)Message;
//
// Block the process of the process name cmd.exe from starting
//
if (msg->IsMatchPath(L"*\\cmd.exe"))
msg->SetBlock();
}
};
int main()
{
MonitorManager manager;
MonitorCallback callback;
HRESULT hr = manager.Start(&callback);
if (hr != S_OK) {
printf("start failed = %08X\n", hr);
return 0;
}
cxMSGUserSetMSGConfig config;
config.Config[emMSGProcessCreate] = emMSGConfigSend;
manager.InControl(config);
WaitForExit("Block the process of the process name cmd.exe from starting");
return 0;
}
Пример 2: Самозащита
class MonitorCallback : public IMonitorCallback
{
public:
void OnCallback(IMonitorMessage* Message) override
{}
};
int main()
{
MonitorManager manager;
MonitorCallback callback;
HRESULT hr = manager.Start(&callback);
if (hr != S_OK) {
printf("start failed = %08X\n", hr);
return 0;
}
manager.InControl(cxMSGUserEnableProtect());
{
cxMSGUserAddProtectRule rule;
rule.ProtectType = emProtectTypeProcessPath | emProtectTypeFilePath;
wcsncpy(rule.Path, L"*\\notepad.exe", MONITOR_MAX_BUFFER);
manager.InControl(rule);
}
{
cxMSGUserAddProtectRule rule;
rule.ProtectType = emProtectTypeFilePath;
wcsncpy(rule.Path, L"*\\protect>", MONITOR_MAX_BUFFER);
manager.InControl(rule);
}
{
cxMSGUserAddProtectRule rule;
rule.ProtectType = emProtectTypeRegPath;
wcsncpy(rule.Path, L"*\\iMonitor>", MONITOR_MAX_BUFFER);
manager.InControl(rule);
}
{
cxMSGUserAddProtectRule rule;
rule.ProtectType = emProtectTypeTrustProcess;
wcsncpy(rule.Path, L"*taskkill*", MONITOR_MAX_BUFFER);
manager.InControl(rule);
}
WaitForExit("SelfProtect");
manager.InControl(cxMSGUserRemoveAllProtectRule());
manager.InControl(cxMSGUserDisableProtect());
return 0;
}
Пример 3: Sysmon
class MonitorCallback : public IMonitorCallback
{
public:
void OnCallback(IMonitorMessage* msg) override
{
printf("%S ==> %S\n", msg->GetTypeName(), msg->GetFormatedString(emMSGFieldCurrentProcessPath));
for (ULONG i = emMSGFieldCurrentProcessCommandline; i < msg->GetFieldCount(); i++) {
printf("\t%30S : %-30S\n", msg->GetFieldName(i), msg->GetFormatedString(i));
}
}
};
int main()
{
MonitorManager manager;
MonitorCallback callback;
HRESULT hr = manager.Start(&callback);
if (hr != S_OK) {
printf("start failed = %08X\n", hr);
return 0;
}
cxMSGUserSetMSGConfig config;
for (int i = 0; i < emMSGMax; i++) {
config.Config[i] = emMSGConfigPost;
}
manager.InControl(config);
WaitForExit("");
return 0;
}
Пример 4: Управление доступом в Интернет (на основе перенаправления сети, поддерживает https, подробнее см. пример http_access_control)

Больше примеров можно найти в каталоге sample.
свяжитесь по электронной почте ([email protected]) для получения лицензии