KeePass源代码分析2

本文深入分析了KeePass的插件架构,重点介绍了其基于插件的无注册设计,以及如何通过IKpPlugin接口实现插件与主程序的交互。KeePass通过搜索dll文件并验证来加载插件,然后调用插件接口创建菜单和处理消息,实现用户界面和插件的通信。
摘要由CSDN通过智能技术生成

 

 

 

 

KeePass源代码分析2---基于插件的架构

 

 

 

KeePass是一个基于插件机制的绿色开源软件,也就是所有的KeePass插件不用像操作系统注册就直接可以使用,这就避免了污染了系统注册表。我们这节来分析KeePass的机制实现机制。

首先确定已经下载了KeePass源代码,并且已经编译成功了。打开KeePass项目工程,可以看到一下的目录结构:

 

我们不用关注KeePassLibC项目工程,因为它是PwSafe项目工程下KeePassLibCpp的一个dll实现版。首先我们来认识这个目录结构:

(1)HeaderFiles文件夹,不用多说,这个KeePass的头文件。

(2)KeePassLibCpp文件夹,这个是KeePass的核心库,包括了KeePass大部分实现和插件机制的设计。其中Crypto子目录实现了各种加密、解密算法,例如BASE64SHA2系列、AES算法以及twofish算法。DataExchange子目录主要实现了KeePass文件格式与其他格式(txthtmlcvsxml等)之间的相互转化。也就是说,KeePass文件格式和其他文件格式可以相互导入和导出。Details子目录主要实现了KeePass向下兼容的功能,也就是说新版的KeePass可以打开旧版的KeePass文件,例如,office 2007可以向下兼容office 2003一样。具体实现在接下来的系列再分析。PasswordGenerator子目录主要实现了强大的密码生成功能。具体实现以后再分析。SDK子目录主要实现了KeePass的插件机制,也是本节重点讨论的东西。SysSpec_windowsUtil子目录主要是一些通用的功能类。PwManager类主要实现了KeePass文件格式,有关KeePass的读取和保存等。是KeePass的一个核心类。

(3)NewGUI文件夹主要是一些扩展的windows控件库。

(4)Plugin文件是KeePass实现的一些重要接口,这些接口完成了KeePass的核心功能,并且暴露给外部模块使用,例如编写KeePass插件时就可以使用这些接口。

(5)Util文件也是提供一些通用功能类。

了解了KeePass代码组织结构, 现在来分析KeePass的插件机制。这需要COM方面的知识,如果还不了解COM方面的知识,可以参考潘爱民的com原理与应用。

KeePass机制如下:每个插件都实现一个规范IKpPlugin接口。IKpPlugin接口包括以下接口。

(6)// *** IKpUnknown methods ***

(7) STDMETHOD(QueryInterface)(REFIID riid, void** ppvObject) = 0;

(8) STDMETHOD_(ULONG, AddRef)() = 0;

(9) STDMETHOD_(ULONG, Release)() = 0;

(10)

// *** IKpPlugin methods ***

/// Plugins are notified of events using this method.

/// @return In general you should always return TRUE. Only return FALSE if

/// you want to block further code execution in KeePass in some cases.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值