U盘加密狗原理
U盘加密狗原理
现在所说的加密狗,一般都是硬件加密狗。
是一种类似于u盘一样的东西,是一种防盗版的方式。
生日感谢词>猜谜语大全
一般是把程序的一小部分或解密部分集合到加密狗的硬件中,防止软件的盗版。加密狗就是一种插在计算机并行口上的软硬件结合的软件加密产品,为多数软件开发商所采用。加密狗一般都有几十或几百字节的非易失性存储空间可供读写,现在较新的加密狗内部还包含了单片机。软件开发者可以通过接口函数和加密狗进行数据交换(即对加密狗进行读写),来检查加密狗是否插在并行口上;或者直接用加密狗附带的工具加密自己EXE文件(俗称"包壳")。这样,软件开发者可以在软件中设置多处软件锁,利用加密狗做为钥匙来打开这些锁;如果没插加密狗或加密狗不对应,软件将不能正常执行。
"加密狗"是一种插在计算机并行口上的软硬件结合的加密产品。一般都有几十或几百字节的非易失性存储空间可供读写,现在较新的狗内部还包含了单片机。软件开发者可以通过接口函数和软件狗进行数据交换(即对软件狗进行读写),来检查软件狗是否插在并行口上;或者直接用软件狗附带的工具加密自己EXE文件(俗称"包壳")。这样,软件开发者可以在软件中设置多处软件锁,利用软件狗做为钥匙来打开这些锁;如果没插软件狗或软件狗不对应,软件将不能正常执行。
加密狗通过在软件执行过程中和加密狗交换数据来实现加密的.加密狗内置单片机电路(也称CPU),使得加密狗具有判断、分析的处理能力,增强了主动的反解密能力。这种加密产品称它为"智能型"加密狗.加密狗内置的单片机里包含有专用于加密的算法软件,该软件被写入单片机后,就不能再被读出。这样,就保证
了加密狗硬件不能被复制。同时,加密算法是不可预知、不可逆的。加密算法可以把一个数字或字符变换成一个整数,如DogConvert(1)=17345、DogConvert(A)=43565。下面,我们举个例子说明单片机算法的使用。比如一段程序中有这样一句:A=Fx(3)。程序要根据常量3来得到变量A的值。于是,我们就可以把原程序这样改写:A=Fx(DogConvert(1)-12342)。那么原程序中就不会出现常量3,而取之以DogConvert(1)-12342。这样,只有软件编写者才知道实际调用的常量是3。而如果没有加密狗,DogConvert函数就不能返回正确结果,结果算式A=Fx(DogConvert(1)-12342)结果也肯定不会正确。这种使盗版用户得不到软件使用价值的加密方式,要比一发现非法使用就警告、中止的加密方式更温和、更隐蔽、更令解密者难以琢磨。此外,加密狗还有读写函数可以用作对加密狗内部的存储器的读写。于是我们可以把上算式中的12342也写到狗的存储器中去,令A的值完全取决于DogConvert()和DogRead()函数的结果,令解密难上加难。不过,一般说来,加密狗单片机的算法难度要低于一些公开的加密算法,如DES等,因为解密者在触及加密狗的算法之前要面对许多难关。
目前加密狗的价格已经相当便宜了,值得一用,各个加密狗厂商的产品使用方法大致差不多,以下谈
谈个人的看法,仅供有意而还没有使用的作者们参考:一、防止破解者对厂家提供的dll 进行改写,已破解您的作品:
建议对厂家提供的dll 进行MD5 校验,如果发现dll 被改写,停止运行!这样可以使利用改写dll 的破解方法失效!
二、对加密狗合法性进行确认:爱思助手打不开
加密狗是公开销售的,如果不对加密狗的合法性进行确认,就势必无法保证你的加密狗能够保护您的软件,一般可以通过多种途径加以确认,您可以选其一或几个进行组合。
对加密狗序列号进行确认。厂家对生产的加密狗都会有一个唯一的序列号,利用这点可以对加密狗进行确认是不是您的软件的加密狗。
方法A:建立一个白名单库,读取序列号后检查是否存在于白名单中,如果不在,退出运行,当然你也可以进而建立黑名单库 ......
方法B:您可以建立一个函数,对序列号进行加密,比如将MD5( 序列号) 写入加密狗的某一个内存段,在运行程伊始,对加密狗的序列号进行运算和保存在内存段的值进行比较,是否一致,以判断加密狗的合法性。
三、如何自己编程跟踪:
破解者一般都会使用跟踪,返回一个你访问加密狗的正确的值,或者说是模拟你的加密狗,如果你对以上提供的方法还不放心的话,可以自己编程反跟踪,我采用的方法如下:
产生一个随机数:比如TTOC( DATETIME(), 1 ),这个函数产生的值肯定是永远不会重复的。将其赋值给一变量,比如c1, 对c1 进行加密运算。加密函数您可以自己编写,假定得数为cResult,c1 和cResult 保存到加密狗的内存指定地址,在程序后续的某一个段,添加代码读取保存的值,再和c1 和其加
密的值进行非明文对比,这样跟踪者势必很难跟踪到你的运算和返回的值。以达到反跟踪的目的!
选择加密狗的几点建议:
一、应该尽量选择无驱型的。因为Vista 的驱动需要数字签名,导致很多有驱型加密狗在Vista 下无法驱动,所以应该尽量选用无驱型。
二、选择厂家要注意其提供的dll,VFP 是否支持其提供的函数。我就遇到过有的厂家提供的dll 不支持VFP,这对Foxer 而言,当然无法使用。最好要求其提供VFP 下的示例!
会计实习报告怎么写中国喜剧片排行榜
三、目前加密狗国外产品,硬件做得比国产好,支持的功能也好,但是价格昂贵,国产硬件方面不如国外,但是软件方面比国外功能不输国外。最便宜的仅几块钱,对一般软件的加密需要而言,基本上够用,最坚固的加密方案还是您自己设计的方案最好!
四、一般破解者的主要手段有:
改写dll,虚拟加密狗,任何时候返回一个正确的值。
跟踪对加密狗的访问,跳过校验代码段。
以下就现今全球软件保护行业较普遍采用的方法之一使用“硬件加密狗”的方式方法谈谈自己的一点看法。
在当今中国市场上最主要的加密锁品牌有:1。美国彩虹公司(也是最早做硬件
加密的公司)的国产品牌“加密狗”、美国品牌“圣天诺软件加密锁”;2。阿拉丁的“HASP”系列加密锁;3。德国威博公司的“WBU-KEY”加密锁;4。深思洛克的“深思加密锁”;5。蓝宇风公司的“金盾加密锁”;6。飞天公司的“ROCKEY”加密锁等几个主要品牌。
以上加密锁品牌的工作原理都是大同小异:被保护的软件--加密锁之间形成一一对映的关系,被保
护的软件在运行的过程当中不断通过其API函数向加密锁发指令来判断加密锁是否存在于,软件离开保护锁不能运行。
但是从其发展历程来看,本人以美国RAINBOW公司的产品生产研发的历程作一个简单的介绍:
1、从最早由美国RAINBOW公司生产的第一代硬件保护锁,只是通过一个简单查询函数来验证并口的硬件保护锁是否存在,存在则程序继续运行,不再则软件终止运行,来完成并保护软件开发商的利益;
2、接着依然是美国RAINBOW公司对自己的第一代的产品进行了改进而形成了第二代的加密锁产品,并且美国RAINBOW公司为其第二代产品取名为:SENTINEL PRO,其与第一代的产品相比较最大的改变在于加密锁硬件里头的运算芯片由RAINBOW公司写入了一个固定的“加密算法”,但这个算法是单一的固定的。
以上两种产品对于软件开发商来说有一个相当大的风险,那就是其必需相信RAINBOW公司不会把买给他们的加密锁买给别的个人,如果RAINBOW把相同的产品出售给别人的话,别人拿到这个加密锁就能使用开发商的软件。
3、通过软件开发商对这个问题的重视,RAINBOW公司针对这种情开发出了第三代的加密产品:SENTINEL SUPERPRO,这种产品彻底解决了软件开发商的
后顾之忧。这种产品其运算芯片中内置了28种算法,共分为56个单元,每两个单元可以单独保护一个应用程序,故用RAINBOW公司的说法其一把锁可以保护28个应用程序;且这种加密锁的每个算法单元所采用的算法因子是由软件开发商自己设定的,当其写入加密锁后对于外界来说就相当于一个暗箱,是任何人也读不出来的。
不管发生什么别放开我的手歌词
4、但随着解密者的技术的不断提高,RAINBOW中国公司研发出了第四代的产品-智能狗,与现今的差不多所有品牌的加密锁相比较,这种狗有了一个质的飞跃:其通过在开发过程中把一段代码加密后写入加密狗,当程序运行时再把加密狗里的代码在加密狗里自行运行,程序调用其运算结果来完成软件的加密,如此就从理论上杜绝了软件被破解的可能。
现在市面上的加密狗的工作原理不外乎RAINBOW的这两种形式:1、程序发命令查询--加密狗运算后相应程序;2、把源代码放入加密狗内部执行(现在还只有RAINBOW公司一家有此功能的加密狗)。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。