
Le moteur de surveillance d'activité système le plus puissant au monde · un kit de développement de défense de collecte de comportement de terminal puissant ~ visant à aider les logiciels de sécurité des terminaux tels que EDR, zéro confiance, sécurité des données, contrôle d'audit, etc., à réaliser rapidement les fonctions du produit, sans se soucier du développement, de la maintenance et de la compatibilité des pilotes sous-jacents, afin qu'ils puissent se concentrer sur le développement métier.
iMonitorSDK est un kit de développement qui fournit une surveillance du comportement système pour les endpoints et la sécurité cloud.
Il est conçu pour aider les applications industrielles telles que la sécurité, la gestion des endpoints et l'audit à implémenter rapidement les fonctions nécessaires sans se soucier du développement, de la maintenance et de la compatibilité des pilotes noyau, leur permettant de se concentrer sur le développement métier.
iMonitorSDK utilise un framework de communication basé sur un protocole de messages pour rendre le développement de pilotes plus stable et rapide. Toute la surveillance est implémentée de manière stable et standardisée et prend en charge Windows de XP à Win11. Linux et MacOS sont également prévus.
Avec iMonitorSDK, vous pouvez réaliser l'auto-protection, l'interception de processus, la défense contre les ransomwares, la défense active, la gestion du comportement Internet et d'autres fonctions de sécurité des endpoints à un coût très bas.
Exemple 1 : Interception du démarrage de processus
class MonitorCallback : public IMonitorCallback
{
public:
void OnCallback(IMonitorMessage* Message) override
{
if (Message->GetType() != emMSGProcessCreate)
return;
cxMSGProcessCreate* msg = (cxMSGProcessCreate*)Message;
//
// Bloquer le démarrage du processus dont le nom est 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("Bloquer le démarrage du processus dont le nom est cmd.exe");
return 0;
}
Exemple 2 : Auto-protection
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;
}
Exemple 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;
}
Exemple 4 : Contrôle d'accès Internet (basé sur la redirection réseau, prend en charge https, se référer à l'exemple http_access_control pour les détails)

D'autres exemples peuvent être consultés dans le répertoire sample.
contactez-nous par email ([email protected]) pour une licence