欢迎大家赞助一杯啤酒🍺 我们准备了下酒菜:Formal mathematics/Isabelle/ML, Formal verification/Coq/ACL2, C++/F#/Lisp
Jinshan/developer
金山卫士 开发者相关
目录 |
源码分析
首先用 Doxygen 生成 HTML 文档,方便阅读。
产品定义
KXEngine Product ID
- 平台产品 KXE_PLATFORM_PRODUCT_TYPE 0x00000000
- 毒霸套装 KXE_DUBA_SUIT_PRODUCT_TYPE 0x00010000
- 清理专家 KXE_ANTISPY_PRODUCT_TYPE 0x00020000
- 在线杀毒 KXE_ONLINE_SCAN_PRODUCT_TYPE 0x00030000
- 手机安全 KXE_MOBILE_PHONE_SECURITY_PRODUCT_TYPE 0x00040000
- 网盾 KXE_WEB_SHIELD_PRODUCT_TYPE 0x00050000
- 浏览器安全助手 KXE_BROWSER_ASSIST_PRODUCT_TYPE 0x00060000
- 金山布卡 KXE_BUKA_PRODUCT_TYPE 0x00070000
- 软件分发平台 KXE_SOFTWARE_DISTRIBUTE_PRODUCT_TYPE 0x00080000
- 金山急救箱 KXE_SOFTWARE_JIJIU_PRODUCT_TYPE 0x00090000
- 新网盾 KXE_NEW_WEB_SHIELD_PRODUCT_TYPE 0x00110000
- 金山网盾3.5 KXE_SOFTWARE_JIJIU_WEB_SHIELD_PRODUCT_TYPE KXE_NEW_WEB_SHIELD_PRODUCT_TYPE
- 金山密保 KXE_SOFTWARE_PASSWORD_PROTECT_PRODUCT_TYPE 0x000A0000
- 金山云查杀 KXE_SOFTWARE_CLOUD_SCAN_PRODUCT_TYPE 0x000B0000
- 金山网镖 KXE_SOFTWARE_KPFW 0x000C0000
- 网银保护 KXE_SOFTWARE_BANK_PROTECT_PRODUCT_TYPE 0x000D0000
- 流量管理 KXE_SOFTWARE_FLUX_MANAGEMENT_PRODUCT_TYPE 0x000E0000
- 安全中心 KXE_SOFTWARE_SECURITY_CENTER_PRODUCT_TYPE 0x000F0000
- 统一升级 KXE_SOFTWARE_UNIUPDATE_PRODUCT_TYPE 0x00100000
- 金山卫士 KXE_SOFTWARE_WEISHI_PRODUCT_TYPE 0x00111000
- 可牛急救箱 KXE_CONEW_RESCUE_PRODUCT_TYPE 0x00120000
KXEngine Function ID
- 病毒库下载 KXE_DWON_VIRUS_FUNCTION 0x00000001
- 换肤功能 KXE_CHANGE_SKIN_FUNCTION 0x00000002
- 网银保护 KXE_PROTECT_BANK_FUNCTION 0x00000003
- 流量管理 KXE_FLUX_MANAGEMENT_FUNCTION 0x00000004
- 云查杀 KXE_GOLDEN_CUSTOMER_SERVIC 0x00000006
- 金牌客服 KXE_GOLDEN_CUSTOMER_SERVIC 0x00000006
KXEngine COMPONENT ID
- 服务框架组件 KXE_PLATFORM_COMPONENT_TYPE 0x00000001
- 病毒库组件 KXE_KSG_COMPONENT_TYPE 0x00000002
- 查杀组件 KXE_SCAN_COMPONENT_TYPE 0x00000003
- 防御组件 KXE_DEFEND_COMPONENT_TYPE 0x00000004
- 漏洞修复组件 KXE_KSA_COMPONENT_TYPE 0x00000005
- 安全应用组件 KXE_APPLICATION_COMPONENT_TYPE 0x00000006
- 安全中心组件 KXE_SECURITY_CENTER_COMPONENT_TYPE 0x00000007
- 第三方组件 KXE_3RD_COMPONENT_TYPE 0x00000008
- 网络通信组件 KXE_NETWORK_COMPONENT_TYPE 0x00000009
插件
通过DLL使用C函数的方式将函数导出,并存放在plugin目录,扩展SDK的定义方式,扩展的SDK必须定义如下五个函数:
- #define KXE_SDK_PLUGIN_INIT "kxe_sdk_plugin_initialize" // 扩展SDK需要定义的函数名,kxebase会调用此函数进行plugin初始化
- #define KXE_SDK_PLUGIN_FINI "kxe_sdk_plugin_uninitialize" // 扩展SDK需要定义的函数名,kxebase会调用此函数进行plugin反初始化
- #define KXE_SDK_PLUGIN_START "kxe_sdk_plugin_start" // 扩展SDK需要定义的函数名,kxebase会调用此函数启动plugin.
- #define KXE_SDK_PLUGIN_STOP "kxe_sdk_plugin_stop" // 扩展SDK需要定义的函数名,kxebase会调用此函数停止plugin.
- #define KXE_SDK_PLUGIN_GET_NAME "kxe_sdk_plugin_get_name" // 扩展SDK需要定义的函数名,kxebase会调用此函数获取此plugin的名字
SDK初始化与启动
- 初始化基础库
- 启动基础库,其内部的核心组件将被加载启动
- 获取基础库加载的扩展SDK
- 向基础库注册异常处理勾子
- 加载插件
- 卸载插件
- 停止基础库,其内部的核心组件将被加载停止
IPC
向IPC服务注册一个SP与回调的指针,停止、恢复IPC服务
配置
预定义配置键类型
事件管理
向事件管理系统注册或取消需要关注的事件,向事件管理系统发布事件的函数实现。
HTTP
向HTTP服务器注册或取消一个uri回调,对HTTP服务进行控制:启动、停止、恢复。
调试日志
调试日志管理器,调试日志输出宏,关闭日志输出等。
另外日志部分:定义日志对象类型,根据指定的名字,创建或打开指定的日志对象,向指定的日志对象输出日志等。
job管理
定义Job当前的状态,如:job已经准备好,即将运行,job处于运行状态,job已经完成。等等...
提交的job的类型,如:短时间就可运行完成的Job,使用线程池中的线程完成。长时间才能运行完成的Job,创建新的线程完成。等等...
传输数据序列化
将数据结构与Json传输数据之间进行序列化与反序列化操作。
系统兼容性
与Windows防火墙相关
操作有:查询活动用户的Token,将应用程序添加至Windows的防火墙,或将应用程序从Windows的防火墙移出。
KingsoftSafeMain
金山卫士主界面框架分GUI界面(图形用户界面)和Web界面,应用主界面框架,页面元素定义在XML文件中。
界面基于 Windows Template Library 和 BkWindow 两个库。
Loki库
金山卫士使用了 Loki C++ 库来更好的支持模版和模型设计。
VS2008编译
编译很方便,都有 .sln 文件可导入。
CodeLite编译
CodeLite编译稍微麻烦些,目前卡在 WTL 上,应该能解决。
<discussion>characters_max=300</discussion>