
世界で最も強力なシステムアクティビティモニターエンジン · 強力な端末行動収集防御開発キット ~ EDR、ゼロトラスト、データセキュリティ、監査制御などのエンドポイントセキュリティソフトウェアが製品機能を迅速に実現できるように支援し、 基盤となるドライバーの開発、メンテナンス、互換性の問題を気にせずに、ビジネス開発に集中できるようにすることを目的としています
iMonitorSDKは、エンドポイントおよびクラウドセキュリティ向けにシステム動作監視を提供する開発キットです。
セキュリティ、エンドポイント管理、監査などの産業アプリケーションが、カーネルドライバの開発、メンテナンス、互換性を気にせずに必要な機能を迅速に実装し、ビジネス開発に集中できるよう設計されています。
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の例を参照)

その他の例はサンプルディレクトリを参照してください。