欢迎大家赞助一杯啤酒🍺 我们准备了下酒菜:Formal mathematics/Isabelle/ML, Formal verification/Coq/ACL2, C++/F#/Lisp
Jinshan/developer
小 (→JSON) |
小 (→CodeLite编译) |
||
(未显示1个用户的23个中间版本) | |||
第2行: | 第2行: | ||
==源码分析== | ==源码分析== | ||
+ | [[Image:jinshan-doxygen.png|right|thumb|Doxygen文档]] | ||
首先用 [[Doxygen]] 生成 HTML 文档,方便阅读。 | 首先用 [[Doxygen]] 生成 HTML 文档,方便阅读。 | ||
第47行: | 第48行: | ||
*网络通信组件 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=== | ||
+ | 向IPC服务注册一个SP与回调的指针,停止、恢复IPC服务 | ||
− | === | + | ===配置=== |
+ | 预定义配置键类型 | ||
− | === | + | ===事件管理=== |
+ | 向事件管理系统注册或取消需要关注的事件,向事件管理系统发布事件的函数实现。 | ||
− | === | + | ===HTTP=== |
+ | 向HTTP服务器注册或取消一个uri回调,对HTTP服务进行控制:启动、停止、恢复。 | ||
− | === | + | ===调试日志=== |
+ | 调试日志管理器,调试日志输出宏,关闭日志输出等。 | ||
− | + | 另外日志部分:定义日志对象类型,根据指定的名字,创建或打开指定的日志对象,向指定的日志对象输出日志等。 | |
− | === | + | ===job管理=== |
+ | 定义Job当前的状态,如:job已经准备好,即将运行,job处于运行状态,job已经完成。等等... | ||
+ | |||
+ | 提交的job的类型,如:短时间就可运行完成的Job,使用线程池中的线程完成。长时间才能运行完成的Job,创建新的线程完成。等等... | ||
+ | |||
+ | ===传输数据序列化=== | ||
+ | 将数据结构与Json传输数据之间进行序列化与反序列化操作。 | ||
+ | |||
+ | ===系统兼容性=== | ||
+ | 与Windows防火墙相关 | ||
+ | |||
+ | 操作有:查询活动用户的Token,将应用程序添加至Windows的防火墙,或将应用程序从Windows的防火墙移出。 | ||
===KingsoftSafeMain=== | ===KingsoftSafeMain=== | ||
第71行: | 第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:developer]] |
+ | [[category:security]] |
2013年2月21日 (四) 14:26的最后版本
金山卫士 开发者相关
目录 |
[编辑] 源码分析
首先用 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 C++ 库来更好的支持模版和模型设计。
[编辑] VS2008编译
编译很方便,都有 .sln 文件可导入。
[编辑] CodeLite编译
CodeLite编译稍微麻烦些,目前卡在 WTL 上,应该能解决。
<discussion>characters_max=300</discussion>