Jinshan/developer

来自开放百科 - 灰狐
(版本间的差异)
跳转到: 导航, 搜索
(源码分析)
(CodeLite编译)
 
(未显示1个用户的25个中间版本)
第2行: 第2行:
  
 
==源码分析==
 
==源码分析==
 +
[[Image:jinshan-doxygen.png|right|thumb|Doxygen文档]]
 
首先用 [[Doxygen]] 生成 HTML 文档,方便阅读。
 
首先用 [[Doxygen]] 生成 HTML 文档,方便阅读。
  
第46行: 第47行:
 
*第三方组件 KXE_3RD_COMPONENT_TYPE  0x00000008
 
*第三方组件 KXE_3RD_COMPONENT_TYPE  0x00000008
 
*网络通信组件 KXE_NETWORK_COMPONENT_TYPE  0x00000009  
 
*网络通信组件 KXE_NETWORK_COMPONENT_TYPE  0x00000009  
 +
 +
===插件===
 +
通过DLL使用C函数的方式将函数导出,并存放在plugin目录,扩展SDK的定义方式,扩展的SDK必须定义如下五个函数:
 +
 +
*<nowiki>#</nowiki>define KXE_SDK_PLUGIN_INIT  "kxe_sdk_plugin_initialize" // 扩展SDK需要定义的函数名,kxebase会调用此函数进行plugin初始化
 +
*<nowiki>#</nowiki>define KXE_SDK_PLUGIN_FINI  "kxe_sdk_plugin_uninitialize" // 扩展SDK需要定义的函数名,kxebase会调用此函数进行plugin反初始化
 +
*<nowiki>#</nowiki>define KXE_SDK_PLUGIN_START  "kxe_sdk_plugin_start" // 扩展SDK需要定义的函数名,kxebase会调用此函数启动plugin.
 +
*<nowiki>#</nowiki>define KXE_SDK_PLUGIN_STOP  "kxe_sdk_plugin_stop"  // 扩展SDK需要定义的函数名,kxebase会调用此函数停止plugin.
 +
*<nowiki>#</nowiki>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===  
 
===KingsoftSafeMain===  
第51行: 第100行:
  
 
界面基于 [[Windows Template Library]] 和 BkWindow 两个库。
 
界面基于 [[Windows Template Library]] 和 BkWindow 两个库。
 +
 +
BkWindow基于WTL技术,实现了使用XML来定义界面元素,其界面框架可以分成3个部分,分别为界面控件(UI Controls)、界面视图(UI View)和界面框架(UI Frame)界面控件是指单个的界面控件,如按钮、图片、进度条等,是界面的基本元素,界面框架负责实现界面的业务逻辑处理(事件处理),其内嵌套了一个或多个界面视图,而每个界面视图则控制和管理多个界面控件。
 +
 +
==Loki库==
 +
[[Image:jinshan-class-loki-1.1-abstract-factory.png|right|thumb|Loki::AbstractFactory]]
 +
金山卫士使用了 [[Loki]] C++ 库来更好的支持模版和模型设计。
  
 
==VS2008编译==
 
==VS2008编译==
 +
编译很方便,都有 .sln 文件可导入。
  
 
==CodeLite编译==
 
==CodeLite编译==
 +
[[CodeLite]]编译稍微麻烦些,目前卡在 WTL 上,应该能解决。
  
 
{{comment}}
 
{{comment}}
  
[[Category:Security]]
+
[[category:developer]]
 +
[[category:security]]

2013年2月21日 (四) 14:26的最后版本

金山卫士 开发者相关

目录

[编辑] 源码分析

Doxygen文档

首先用 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 两个库。

BkWindow基于WTL技术,实现了使用XML来定义界面元素,其界面框架可以分成3个部分,分别为界面控件(UI Controls)、界面视图(UI View)和界面框架(UI Frame)界面控件是指单个的界面控件,如按钮、图片、进度条等,是界面的基本元素,界面框架负责实现界面的业务逻辑处理(事件处理),其内嵌套了一个或多个界面视图,而每个界面视图则控制和管理多个界面控件。

[编辑] Loki库

Loki::AbstractFactory

金山卫士使用了 Loki C++ 库来更好的支持模版和模型设计。

[编辑] VS2008编译

编译很方便,都有 .sln 文件可导入。

[编辑] CodeLite编译

CodeLite编译稍微麻烦些,目前卡在 WTL 上,应该能解决。

Comment-32x32.png

<discussion>characters_max=300</discussion>

分享您的观点
个人工具
名字空间

变换
操作
导航
工具箱