您的位置:首页 > 其它

.NET 下制作 Shareware 的关键技术探讨一:Licensing

2004-08-20 08:43 357 查看
制作 Shareware 有三个关键点:

如何保护对象(程序),在创建对象的时候检测许可证 (License)。
加密/解密 用户信息和注册信息。
程序加扰 (obfuscate) 或者程序加密,反破解。

.NET 为前两者提供了基本支持,非常方便。这里先说检测许可证。许可证可以有通用注册码、验证用户名的注册码、验证用户机器的注册码等形式。当用户花钱购买了 Shareware 程序,Shareware 程序拥有者就会发送注册码给用户。(Share-It 有在线注册码生成功能,一收到钱立即自动生成注册码)。

Shareware 程序运行时要检测和验证用户是否具有有效的注册码,以决定用户是否能执行程序。

.NET 下的程序都是面向对象的,所以 .NET 在对象的创建机制上,提供了许可证检测的一个接口,Shareware 程序开发可以在此基础上加入自己的注册码验证算法。

.NET Licensing 一文介绍了许可证检测的办法:

[LicenseProviderAttribute(typeof(LicFileLicenseProvider))]
public class LicensedClass : IDisposable
{
private License license = null;
public LicensedClass()
{
license = LicenseManager.Validate(typeof(LicensedClass), this);
Console.WriteLine("Hello from the licensed class.");
}
public void Dispose()
{
if (license != null)
{
license.Dispose();
license = null;
}
}
}

有了这么个结构,程序开发可以把检测许可证交由 .NET 完成,而自己集中精力设计如何验证注册码。把上面的 LicFileLicenseProvider 换成自己的 Custom LicenseProvider。比如,不读文件而去读注册表,见:CodeGuru: Licensed Applications using the .NET Framework我的一些文章收藏 (RSS格式)

不论是从文件或者从注册表得到注册码,它包含了户是否可以运行程序的信息,而且它一定是只能 Shareware 程序拥有者说了算。因此这个信息是必须加密的。

.NET 提供了非对称加密 (Asymmetric Cryptography) 工具可以用来处理注册码。下一篇文章里继续介绍。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: