·平台介绍

·开发者协议

·金山网址云安全开放API文档

目录
隐藏
显示

金山卫士木马查杀API文档

一、概述

  金山卫士木马查杀API是金山网络为第三方开发人员提供的编程接口。您可以使用本文提供的一套 API 来开发基于金山卫士木马查杀引擎的木马查杀应用。
  目前金山卫士木马查杀API 支持的功能集包含:
  ·金山卫士木马查杀引擎初始化及加载方式接口
  ·使用金山卫士木马查杀引擎完成木马查杀任务的逻辑调用接口

二、API说明

1. 概要说明
1.1 金山卫士木马查杀引擎结构概述
  金山卫士木马查杀引擎从逻辑上划分为两三部分:
  ·快速扫描 快速扫描系统关键位置,包括启动项、进程、关键系统设置等项
  ·全盘扫描 扫描用户硬盘上的所有文件
  ·自定义扫描 由用户自行决定扫描硬盘上的文件/文件夹
  从功能上划分为两个子引擎:
  ·快速扫描引擎 提供快速扫描功能
  ·全盘及自定义扫描引擎 提供全盘及自定义扫描功能
  因此,金山木马查杀引擎的调用者应按需求分别调用这两个子引擎。
  另请注意,由于某些扫描及处理操作需要高权限,因此我们的引擎需要在高权限下工作。如果权限不足,某些功能将不能正常运转。

1.2 金山卫士木马查杀引擎结构概述
  开发者开发第三方木马查杀应用时,需要使用金山卫士木马引擎的一系列二进制文件及若干配置文件。为了方便开发者的使用,我们对金山卫士木马查杀引擎进行了封装,即本文所述的 API 集。我们把这套 API 集统一封装在了一个 DLL 文件(kcldscan.dll)中,并提供了从此 DLL 文件获取到相关接口的方法。对于开发者而言,仅需关心如何从 kcldscan.dll 中获取到所需接口,以及如何使用这些接口的方法。图 2-1 展示了此开发模式。

图 2-1 基于金山卫士木马查杀 API 的开发模式

1.3 金山卫士木马查杀 API 封装的使用方式
  我们提供的封装了金山卫士木马查杀API的 kcldscan.dll 一共导出了下表所示的三组接口:

接口名 功能描述
IKCldScanServer 初始化、启动及停止木马查杀引擎接口
IKCldQuickScanClient 快速扫描子引擎调用接口
IKCldCustomScanClient 全盘及自定义扫描子引擎调用接口
表2-1 金山卫士木马查杀接口集

  这些接口类似于 COM 接口,我们称之为 SCOM 接口。相应地,这些接口的实现组件,称之为 SCOM 组件。接口 IKCldQuickScanClient 的实现组件即为对1.1小节所述的快速扫描子引擎的调用封装;接口 IKCldCustomScanClient 的实现组件即为对1.2小节所述的全盘及自定义扫描子引擎的调用封装;而接口 IKCldScanServer 的实现组件用于初始化、启动及停止这两个子引擎。

  我们提供了获取这些组件接口的方法封装类 KSCOMDll (实现头文件为kscomdll.h),通过它可以很方便地获取到上述接口。获取到某个接口后,就可以用此接口指针进行相应的接口功能调用了。注意,一个接口使用完后,需要调用 Release() 方法释放引用计数;kcldscan.dll 使用完后,需调类 KSCOMDllRelease() 方法卸载之。以下简要代码示意了获取及使用 IKCldScanServer 接口的调用序列:  具体操作方法请参见示例

2. 金山卫士木马查杀引擎的加载及卸载
  如1.1小节所述,金山卫士木马查杀引擎划分为两个子引擎:快速扫描子引擎和全盘及自定义扫描子引擎。因此,可视需要全部加载这两个子引擎,或者只加载其中一个。使用我们提供的封装类 KSCOMDll 获取到 IKCldScanServer 接口之后,就可以调用此接口提供的方法很方便地加载/卸载它们。

2.1 加载及卸载快速扫描子引擎
  以下代码片段展示了如何加载及卸载快速扫描子引擎:

2.2 加载及卸载全盘及自定义扫描子引擎
  以下代码片段展示了如何加载及卸载全盘及自定义扫描子引擎:

3. 金山卫士快速扫描子引擎调用方法
  按照2.1小节的方法加载了快速扫描子引擎后,就可以使用 kcldscan.dll 导出的 IKCldQuickScanClient 接口来调用它了。IKCldQuickScanClient 接口的定义见附件头文件 ikcldquickscanclient.h。表2-2 展示了 IKCldQuickScanClient 接口支持的接口函数集。具体调用逻辑可参照示例中的testquickscan.cpp。

接口函数 说明
Init 初始化
StartScan 启动快速扫描
StopScan 停止扫描
QuerySessionStatus 查询扫描的状态
QuerySessionFixListEx 查询扫描到的威胁项列表
QueryConnectToCloudState 检查是否能够连接到金山云安全中心
StartFix 修复指定威胁项
QueryNeedReboot 检查是否需要重启
Reboot 重启系统
Uninit 反初始化
表 2-2 IKCldQuickScanClient 接口支持的接口函数集

4. 金山卫士全盘及自定义扫描子引擎调用方法
  按照2.2小节的方法加载了全盘及自定义扫描子引擎后,就可以使用kcldscan.dll导出的 IKCldCustomScanClient接口来调用它了。IKCldCustomScanClient接口的定义见附件头文件 ikcldcustomscanclient.h。表2-3 展示了 IKCldCustomScanClient接口支持的接口函数集。具体调用逻辑可参照示例中的testcustomscan.cpp。

接口函数 说明
Init 初始化
StartFullScan 启动全盘扫描
AppendScanTargetPath 自定义扫描时添加扫描路径
StartCustomScan 启动自定义扫描
StopScan 停止扫描
PauseScan 暂停扫描
ResumeScan 恢复扫描
QueryFullScanStatus 查询全盘扫描状态信息
QueryCustomScanStatus 查询自定义扫描状态信息
QueryFileVirusThreats 查询扫描中发现的文件病毒威胁项列表
ProcessScanResult 对发现的威胁进行处理
QueryScanThreatProcessResult 查询扫描到的威胁的处理结果
QueryNeedReboot 检查是否需要重启
AppendScanProcessTarget 增加进程扫描的目标
SetAutoUploadFile 控制是否上报样本
GetAutoUploadFile 获取是否上报样本
Uninit 反初始化
表 2-3 IKCldCustomScanClient接口支持的接口函数集
三、使用金山卫士木马查杀引擎开发应用的示例

  按照API说明所描述的方法,就可以使用金山卫士木马查杀引擎开发第三方应用了。由于我们的引擎需要在高权限环境下运行,因此,我们建议您将引擎加载在一个高权限的进程中运行,而将对于引擎的调用逻辑放在低权限中运行。本示例就是基于这种实现方式的。示例工程生成了一个可执行文件 kcldscantest.exe,它有种运行模式:后台引擎模式(Server)和客户端(Client)模式。Server模式调用 kcldscan.dll 并加载您指定的子引擎,然后监听外部 Client 进程的调用;Client模式亦调用 kcldscan.dll 并获取到您指定的调用封装接口,然后向 Server 端发起功能调用。在运行示例的时候,您应当先用高权限以 Server模式启动Server端,然后用低权限启动 Client 端,就可以进行快速扫描、全盘扫描或者自定义扫描了。
  示例工程见附件示例代码文件中的kcldscantest.sln。

四、附件

1. 头文件
1.1 接口定义头文件
  ./publish/ikcldscanserver.h----------------------初始化、启动及停止木马查杀引擎接口定义
  ./publish/ikcldquickscanclient.h----------------快速扫描子引擎调用接口定义
  ./publish/ikcldcustomscanclient.h-------------全盘及自定义扫描子引擎调用接口定义

1.2 接口数据结构定义文件
  ./publish/kcldquickscandata_def.h------------快速扫描子引擎调用接口所用数据结构定义
  ./publish/kcldcustomscandata_def.h---------全盘及自定义扫描子引擎调用接口所用数据结构定义

1.3 其他依赖头文件
  ./publish/kscomdll.h-----------------------------加载 SCOM 组件的辅助封装类定义

2. 示例代码文件
./kcldscantest 文件夹

 
 
 
 

友情链接:开源中国社区
免费杀毒软件 | 金山安全套装 | 金山毒霸 | 金山卫士 | 可牛免费杀毒 | 安全专题 | 安全新闻 | 论坛社区
京ICP备09067992号 Copyright© 2010-2011 金山网络 ALL Rights Reserved.