
O mecanismo de monitoramento de atividades do sistema mais poderoso do mundo · um kit de desenvolvimento de coleta de comportamento de terminal e defesa poderoso ~ projetado para ajudar softwares de segurança de terminal como EDR, Zero Trust, segurança de dados, controle de auditoria, etc., a implementar rapidamente funcionalidades de produto, sem se preocupar com o desenvolvimento, manutenção e problemas de compatibilidade dos drivers subjacentes, permitindo que eles se concentrem no desenvolvimento de negócios.
O iMonitorSDK é um kit de desenvolvimento que fornece monitoramento de comportamento do sistema para segurança de endpoint e nuvem.
Ele foi projetado para ajudar aplicações industriais, como segurança, gerenciamento de endpoints e auditoria, a implementar rapidamente as funções necessárias sem se preocupar com o desenvolvimento, manutenção e compatibilidade de drivers de kernel, permitindo que se concentrem no desenvolvimento de negócios.
O iMonitorSDK utiliza uma estrutura de comunicação baseada em protocolo de mensagens para tornar o desenvolvimento de drivers mais estável e rápido. Todo o monitoramento é implementado de forma estável e padronizada, suportando Windows do XP ao Win11. O suporte para Linux e MacOS também está planejado.
Com o iMonitorSDK, você pode implementar autoproteção, interceptação de processos, defesa contra ransomware, defesa ativa, gerenciamento de comportamento na Internet e outras funções de segurança de endpoint a um custo muito baixo.
Exemplo 1: Interceptação de inicialização de processo
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;
}
Exemplo 2: Autoproteção
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;
}
Exemplo 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;
}
Exemplo 4: Controle de Acesso à Internet (baseado em redirecionamento de rede, suporta https, consulte o exemplo http_access_control para detalhes)

Mais exemplos podem ser encontrados no diretório de amostras.
Contate por email ([email protected]) para obter uma licença