
세계에서 가장 강력한 시스템 활동 모니터 엔진 · 강력한 기능의 터미널 동작 수집 방어 개발 키트 ~ 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 예제 참조)

더 많은 예제는 samples 디렉토리를 참조하십시오.