您的位置:首页 > 其它

软件加密狗简单实现

2011-05-09 12:49 120 查看
  最近有个项目,老板提出来说要给软件加上加密狗,给用户一些使用限制。没法子,老板怎么说就得怎么做了。起初还以为加密狗不是一个简单的东西,接触后才知其实是很容易实现的。现在对加密狗的具体使用做一个记录。(说明:以下针对的是safenet品牌的软件加密狗,其他产品本人没去研究,可能会有一些差异)

购买了软件加密狗的开发套件,厂家提供了一些各种语言的使用案例,开发人员稍微研究一下都可以很好的将它嵌入到自己的软件中了。

以下是我使用过程中的一些理解,让大家对他有个了解,其实是很简单的。

1、
声明Dog dog=new Dog(100);(100是软件狗的存储空间,单位是字节)

2、
读取的参数设置

dog.DogAddr=0; //读取的开始地址

dog.DogBytes=100; //读取的字节数

3、 读取信息 dog.ReadDog();//厂家提供的dll中的方法

4、
判断是否读取成功,dog.Retcode//值是0,读取成功;否则,读取失败(通常用来判断是否有加密狗存在)

5、
在读取成功的情况下,获取加密狗里面的存储信息(通常存储用户名、机器码、时间等,用来控制用户数量)

char[] chTemp = new
char[100];

for
(int i = 0; i < 100; i++)

{

chTemp[i] = (char)dog.DogData[i];

}

6、写入加密狗的方法 dog.WriteDog

[b] 总体流程是这样的[/b]:



[b]重要提示[/b]:如果在程序中只是作简单的判断,如:if(dog.ReadDog()==0),这样即使加密狗的加密算法再复杂,黑客只要对代码稍作修改就可以很容易的绕过你的判断,同样可以达到破解的目的。庆幸的是,厂家已经想到了这一点,在开发套件中提供了一些技巧,例如:

If(Random(10)==5)

{

RetCode=WriteDog()



}

If(Random(10)==7)

{

RetCode=ReadDog()



}

此外还有很多技巧,如多线程、队列等等,有兴趣的朋友可以参考一下。

另外加密狗的操作是要耗时的,厂家说明延时是50-200毫秒之间,我在使用的过程中感觉很顺畅,所以这一点是没问题的。

[b]总结[/b](引用别人的两句话,但是也是我的体会):

1、如果您想不要花太多心思到加密上而想要一个很强的加密,加密狗是最好的选择。

2、花点时间考虑你自己的软件,看看它是否值得保护?如果没人用你的软件,保护也就没有意义了。


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: