用加密狗控制软件的授权(C#)

加密狗授权方式介绍

每只加密狗都有一个固定的序列号,并且一般是无法修改的。软件运行时读取加密狗的序列号进行判断,序列号通过验证后才能正常使用软件。

选购一套加密狗开发套件

我选购了SaftNet的USB软件狗,入手后查阅开发资料(不同品牌的加密狗开发资料一般都不同),整理需要用到的开发资源如下:

  • SoftDogSetup.dll:提供加密狗驱动相关操作的DLL

需要用到以下方法:

(1)获取狗驱动程序安装信息接口函数GetDogDriverInfo,定义如下:

int PASCAL GetDogDriverInfo();

参数:无

返回值:

0 没有安装驱动程序

1 驱动版本相同(并口和usb)

2 USB驱动版本相同

3 并口驱动版本相同

4 已安装旧版本驱动 (并口和usb)

5 已安装旧版本USB驱动

6 已安装旧版本并口驱动

7 已安装新版本驱动 (并口和usb)

8 已安装新版本USB驱动

9 已安装新版本并口驱动

3008 没有管理员权限

(2)驱动安装的函数接口InstDriver,定义如下:

Int PASCAL InstDriver(int iFlag);

参数:

iFlag = 1 只安装USB狗驱动

iFlag = 2 只安装并口狗驱动

iFlag = 3 安装并口狗驱动和USB狗驱动

返回值:

如果运行成功则返回0,否则返回错误值。

(3)驱动卸载的函数接口UninstallDriver,定义如下:

int PASCAL UninstallDriver(int iFlag);

参数:

iFlag = 1 只卸载USB狗驱动

iFlag = 2 只卸载并口狗驱动

iFlag = 3 卸载并口狗驱动和USB狗驱动

返回值:

如果运行成功则返回0,否则返回错误值。

  • win32dll.dll:提供加密狗读写操作的DLL

需要用到以下方法:

(1)DWORD WINAPI DogRead (DWORD dwBytes,DWORD dwAddr,char *pData);

函数返回0表示读写成功,其它返回值为错误代码。

变量说明:

DWORD dwBytes:每次变换或读写操作的字节数

DWORD dwAddr:每次读写操作时狗中的首地址

char * pData :指向变换操作缓冲区的数据指针

实现加密狗授权(C#)

定义SoftDog类

首先定义一个SoftDog的静态类,静态类的主要特点如下:

  • 它们仅包含静态成员。
  • 它们不能被实例化。
  • 它们是密封的,不可被继承。
  • 它们不能包含实例构造函数。

using System;

using System.Runtime.InteropServices;

namespace HCommon.License

{

[StructLayout(LayoutKind.Sequential)]

public static class SoftDog

{

}

}

然后,使用DllImport引入使用到的dll方法,因为参数和返回值都很不友好,所以定义为private,不直接向外部公开。

/// <summary>

/// 获取狗驱动程序安装信息接口函数GetDogDriverInfo

/// </summary>

[DllImport("SoftDogSetup.dll", CharSet = CharSet.Ansi)]

private static extern ushort GetDogDriverInfo();

/// <summary>

/// 驱动安装的函数接口InstDriver

/// </summary>

[DllImport("SoftDogSetup.dll", CharSet = CharSet.Ansi)]

private static extern ushort InstDriver(ushort flag);

/// <summary>

/// 驱动卸载的函数接口UninstallDriver

/// </summary>

[DllImport("SoftDogSetup.dll", CharSet = CharSet.Ansi)]

private static extern ushort UninstallDriver(ushort flag);

/// <summary>

/// 读取加密狗单函数接口DogRead

/// </summary>

[DllImport("win32dll.dll", CharSet = CharSet.Ansi)]

private static extern uint DogRead(uint length, uint startIndex, byte[] data);

然后,定义加密狗驱动相关的public方法

public static bool DriverInstalled

{

get

{

ushort code = GetDogDriverInfo();

if (code == 3008) throw new HCommon.HException("{0}:没有管理员权限!", 3008);

if (code == 1 || code == 2 || code == 7 || code == 8) return true;

return false;

}

}

public static void InstallDriver()

{

ushort code = GetDogDriverInfo();

if (code == 3008) throw new HCommon.HException("{0}:没有管理员权限!", 3008);

if (code == 1 || code == 2 || code == 7 || code == 8) return;

if (code == 4 || code == 5)

UninstallDriver();

code = InstDriver(1);

if (code != 0) throw new HCommon.HException("{0}:安装驱动失败!", code);

}

public static void UninstallDriver()

{

ushort code = UninstallDriver(1);

if (code != 0) throw new HCommon.HException("{0}:卸载驱动失败!", code);

}

最后,定义读取加密狗序列号的public方法

public static string SerialNumber

{

get

{

uint code = 0;

byte[] data = new byte[100];

code = DogRead(0, 0, data);

if (code != 0)

{

throw new HCommon.HException("{0}:读取序列号失败!", code);

}

uint sn = BitConverter.ToUInt32(data, 0);

return sn.ToString();

}

}

使用SoftDog类

使用SoftDog的客户程序代码片段:

//软件启动时先判断是否安装加密狗驱动

if (!SoftDog.DriverInstalled)

{

SoftDog.InstallDriver();

MessageBox.Show("已安装加密狗驱动,请插入加密狗。");

}

//定义序列号属性

private static readonly string g_Key = "12345678";

private string SerialNumber

{

get

{

try

{

string sn = SoftDog.SerialNumber;

if (string.IsNullOrEmpty(sn)) return string.Empty;

return sn;

}

catch (Exception ex)

{

HCommon.ApplicationLog.LogException(ex);

}

return string.Empty;

}

}

//序列号判断的方法

private void CheckLicense()

{

if (SerialNumber != g_Key)

{

MessageBox.Show("对不起,计算机必须插入正确的加密狗,软件才能授权使用,请按确定退出系统。");

System.Windows.Forms.Application.Exit();

}

}

另外,软件运行时也应该定期地检查序列号,当发现加密狗已被拔出时终止软件的使用。需要定义一个Timer,每隔2分钟调用一次CheckLicense方法即可。

几种常用授权方式总结

  • 软件序列号授权:支持单机,序列号容易泄漏。
  • 软件序列号网络注册激活:授权控制最理想,但不支持单机。
  • 加密狗授权:支持单机,效果比软件序列号授权好,但占用一个硬件端口。
时间: 2024-11-04 18:47:21

用加密狗控制软件的授权(C#)的相关文章

超级狗是集软件授权、课件保护和身份认证于一身的加密狗。

超级狗是加密狗家族中最新一代软件保护和授权产品.它提供了强大的软件.课件防盗版功能以及灵活的软件授权功能,保护软件开发商的知识产权与核心技术,确保开发商的市场收入. 超级狗将软件保护与授权技术化繁为简.通过易于理解.易于上手的外壳保护工具.许可设计工具,以及在线授权工具,软件开发商可以轻松地实现高强度的软件保护和多种授权模式. 在保持SafeNet一贯高品质.高稳定性.高安全性的基础之上,超级狗还提供了基于时间.功能控制的许可模式,同时拥有更友好.直观的用户界面和更简单的操作流程. 超级狗可以帮

破解加密狗之维达软件清单计价2008

我爸老早就让我破解这款软件,因为官网上下载的都是未注册版的,部分功能如报表打印都是被限制使用的,他用起来很麻烦,而买一个加密狗要2000大洋,这回终于得空回家给破了. 打开软件运行看看打印报表的功能是灰的,直接就想到了enableMenuItem这个函数, 于是直接bp EnableMenuItem ,在程序中也找到了这处函数的调用,如下图 但是无论怎么修改都还是灰的.遍寻软件也没发现有unregister的字符串. 之后借来一个加密狗,几番测试发现这个加密狗仅仅做了验证是否注册,而没有什么镂空

使用USB直接方式解决ESXi识别加密狗的问题

VMware ESXi对USB外设的支持比较好,但这并不是说ESXi的虚拟机能支持所有的USB外设.例如一些财务软件的加密狗,在物理机操作系统中使用没有问题,但在ESXi中的虚拟机不能识别这些加密狗.对于这种问题,可以将主机的USB接口以"直连"的方式映射到虚拟机中,供虚拟机使用. 这样,虽然ESXi不能识别USB端口上的加密狗,但可以让ESXi的虚拟机通过直接ESXi主机上的USB端口的方式,来使用接在USB端口的加密狗. 案例:1台DELL R710的服务器,安装的VMware E

加密狗复制备份 订制写狗程序 算法注册机 OEM信息 二次封装

加密狗复制备份.模拟  行业软件批发零售 定制写狗程序.注册机 软件破解 逆向工程   酒店客房管理.餐饮娱乐管理.美容美发管理.汽车行业.会员管理.医疗软件.客户管理.财务进销存系统 .OA办公 .服装设计 等大量行业软件批发零售 合作联系QQ: 844256300 =========================================================================================== 企发会员积分系统3.5 冠唐仓库管理网络版 凤

20150629 加密狗失效

1 加密狗失效:提示加密狗失效 替换掉好的加密狗就可以使用 2 新华社的图片稿延后 进入caijipublic,重新启动分发服务和入库服务,在桌面的启动服务文件夹下 3 采集系统提示系统异常,请联系管理员 经测试,本机和其他机器均可正常登陆,怀疑是笔记本设置不对,重新安装360 5.0以后问题解决,但是还是存在着CSS文件失效的问题

虚拟化识别加密狗、共享、集中管理、云映射的解决方案

USB Server 是硬件的USB设备远程连接解决方案,USB Server采用1.2GHz的arm SO供一个千光网络接口和28个USB 2.0接口,满足高速应用需求.USB Server对电源做了特别确保28个USB端口均提供750mA的电流供应. 系统对国内应用得比较多的USB加密狗提供了完善的支持,有很好的兼容性.提供行业软件ukey共享,虚拟环境识别ukey解决方案,外网远程识别usb服务扫描仪共享等.利用独有的专利技术,使得用户可以利用单一产品方案即可方便地在空间受限的环境下将多个

行业软件 加密狗复制 加密狗数据 加密狗备份 加密狗破解 写狗数据 OEM信息

加密狗复制备份.定制写狗程序.算法注册机.OEM信息.二次封装.行业软件破解.酒店客房管理.餐饮娱乐管理.美容美发管理.会员管理.口腔管理.商超POS收银.服装鞋帽.家具生产设计.家具数控.家居设计及销售设计.药店管理.汽车行业管理.财务进销存系统 .OA办公 .服装设计.积分管理.电脑行业管理系统.客户管理.洗浴足浴.等各行业管理系统.批发零售.量大价优.欢迎选购.合作联系QQ:309889372 部分产品分类展示: 家具厂:海迅家具设计拆单管理系统 海迅家具数控生产管理系统 凯恩家美橱衣柜销

加密狗复制备份 克隆 破解 OEM信息 二次封装 行业软件破解 批发零售

加密狗复制备份 加密狗模拟   加密狗破解  定制写狗程序 算法注册机 OEM信息 二次封装 汉化  行业软件破解   酒店客房管理  餐饮娱乐 美容美发  会员管理  口腔诊所 口腔医院管理 商超POS 服装鞋帽 家具生产数控 家具设计拆单 排料优化 家居设计销售 药店管理 汽配汽修汽贸4S店管理 财务进销存 OA办公 企业积分制管理 电脑行业管理系统 客户管理...等各行业管理软件批发零售 合作联系QQ:309889372 部分产品列表展示 部分产品分类展示: 服装设计类行业: 主要针对服装

模拟美萍加密狗--Rockey2虚拟狗(一)

目录(?)[+] 最近受朋友之托做了一个美萍智能电源控制的插件.美萍茶楼从2010版开始支持智能电源控制设备,就是开单.结账时自动开关相应房间的电器,不过官方的设备是有线的.朋友的店已经开了一段时间了,重新走线既影响正常营业,成本又大,于是我考虑给他来套无线控制的.网上找了一下,有个[PC智能控制盒Model:C]非常符合要求,支持二次开发,用美萍茶楼2012v1试用版做了下测试,发现美萍也是向串口发数据来控制电源的,于是结合VSPD转发,插件基本就是串口数据格式转换了.插件好编,可惜弄不到正式