
Il motore di monitoraggio delle attività di sistema più potente del mondo · Un potente kit di sviluppo per la raccolta e difesa dei comportamenti del terminale ~ Progettato per aiutare il software di sicurezza dei terminali come EDR, zero trust, sicurezza dei dati, controllo e audit a implementare rapidamente le funzionalità del prodotto, senza doversi preoccupare dello sviluppo, della manutenzione e dei problemi di compatibilità dei driver di basso livello, consentendo loro di concentrarsi sullo sviluppo del business.
iMonitorSDK è un kit di sviluppo che fornisce il monitoraggio del comportamento di sistema per endpoint e sicurezza cloud.
È progettato per aiutare le applicazioni industriali come sicurezza, gestione degli endpoint e auditing a implementare rapidamente le funzioni necessarie senza preoccuparsi dello sviluppo, della manutenzione e della compatibilità dei driver del kernel, consentendo loro di concentrarsi sullo sviluppo del business.
iMonitorSDK utilizza un framework di comunicazione basato su protocollo a messaggi per rendere lo sviluppo dei driver più stabile e veloce. Tutto il monitoraggio è implementato in modo stabile e standardizzato e supporta Windows da XP a Win11. Sono inoltre previsti il supporto per Linux e MacOS.
Utilizzando iMonitorSDK, è possibile realizzare autoprotezione, intercettazione dei processi, difesa da ransomware, difesa attiva, gestione del comportamento Internet e altre funzioni di sicurezza degli endpoint a costi molto bassi.
Monitoraggio in tempo reale di processi, file, registro e rete, con supporto per l'intercettazione e il blocco
Protezione di processi, file e registro
Avvio di processi, intercettazione del caricamento di moduli, iniezione di moduli
Intercettazione e reindirizzamento di file
Firewall di rete, proxy di traffico, analisi dei protocolli
Motore di regole, supporto per script
Esempio 1: Intercettazione dell'avvio di un processo
class MonitorCallback : public IMonitorCallback
{
public:
void OnCallback(IMonitorMessage* Message) override
{
if (Message->GetType() != emMSGProcessCreate)
return;
cxMSGProcessCreate* msg = (cxMSGProcessCreate*)Message;
//
// Blocca l'avvio del processo con nome cmd.exe
//
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("Blocca l'avvio del processo con nome cmd.exe");
return 0;
}
Esempio 2: Autoprotezione
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;
}
Esempio 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;
}
Esempio 4: Controllo dell'accesso a Internet (basato su reindirizzamento di rete, supporta https, fare riferimento all'esempio http_access_control per i dettagli)

Ulteriori esempi sono disponibili nella directory degli esempi.