注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

小哲

从今以后,你会是所有幸福的理由!

 
 
 

日志

 
 

加密狗的使用  

2013-01-13 17:26:24|  分类: MFC初级 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

最近有个项目,老板提出来说要给软件加上加密狗,给用户一些使用限制。没法子,老板怎么说就得怎么做了。起初还以为加密狗不是一个简单的东西,接触后才知其实是很容易实现的。现在对加密狗的具体使用做一个记录。(说明:以下针对的是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 = newchar[100];

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

         {

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

         }

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

     总体流程是这样的:

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

If(Random(10)==5)

{

     RetCode=WriteDog()

     …

}

If(Random(10)==7)

{

     RetCode=ReadDog()

     …

}

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

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

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

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

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

?

  评论这张
 
阅读(1860)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017