跳至主要內容

快速开始


获取SDK

通过Github下载SDK:https://github.com/wecooperate/iMonitorSDKopen in new window

执行SDK目录下面的build.bat即可编译SDK带的sample,通过sample可以快速了解和实现各种功能

示例说明

示例说明
imonitor_sample_all_hidden.cpp文件隐藏
imonitor_sample_all_protect.cpp自保护
imonitor_sample_all_redirect.cpp文件重定向
imonitor_sample_all_rule.cpp应用层规则引擎
imonitor_sample_all_rule_kernel.cpp内核规则引擎
imonitor_sample_all_sandbox.cpp隔离沙箱
imonitor_sample_all_sysmon.cpp异步采集
imonitor_sample_enhance_config.cpp高级配置
imonitor_sample_enhance_event.cpp自定义事件
imonitor_sample_enhance_extension.cpp扩展事件字段
imonitor_sample_enhance_filter.cpp快速过滤
imonitor_sample_enhance_pending.cpp同步多线程处理
imonitor_sample_enhance_rpc_caller.cppRPC远程调用溯源
imonitor_sample_enhance_user_monitor.cpp用户层HOOK接入
imonitor_sample_file_cleanup.cpp文件落地
imonitor_sample_file_create.cpp拦截文件创建
imonitor_sample_file_write.cpp拦截文件写
imonitor_sample_process_create.cpp拦截进程创建
imonitor_sample_process_inject_dll.cpp注入动态库
imonitor_sample_process_loadlibrary.cpp拦截模块加载
imonitor_sample_process_open.cpp进程打开
imonitor_sample_process_remote_thread.cpp远程线程注入
imonitor_sample_reg_create.cpp注册表创建
imonitor_sample_reg_deletevalue.cpp删除注册表值
imonitor_sample_socket_accept.cppAFD socket accept
imonitor_sample_socket_connect.cppAFD socket connect
imonitor_sample_socket_recv.cppAFD socket recv
imonitor_sample_socket_redirect.cppAFD socket redirect
imonitor_sample_viewer_file.cpp所有文件事件字段
imonitor_sample_viewer_process.cpp所有进程事件字段
imonitor_sample_viewer_reg.cpp所有注册表事件字段
imonitor_sample_viewer_socket.cpp所有socket事件字段
imonitor_sample_viewer_wfp.cpp所有网络事件字段
imonitor_sample_wfp_accept.cppWFP accept
imonitor_sample_wfp_connect.cppWFP connect
imonitor_sample_wfp_dns.cppWFP dns
imonitor_sample_wfp_recv.cppWFP recv
imonitor_sample_wfp_redirect.cppWFP redirect

手动接入SDK

  1. 从IMonitorCallback继承
  2. 通过MonitorManager传入IMonitorCallback启动
  3. 设置需要监控的消息
class MonitorCallback : public IMonitorCallback
{
public:
	void OnCallback(IMonitorMessage* Message) override
	{
		if (Message->GetType() != emMSGProcessCreate)
			return;

		cxMSGProcessCreate* msg = (cxMSGProcessCreate*)Message;

		//
		// 禁止进程名 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("禁止进程名 cmd.exe 的进程启动");

	return 0;
}

更多的使用说明可以参考SDK的sample和文档的接口说明。