2009年4月19日星期日

avr 防破解

我的代码是用RC校准值来工作的,RC校准值会以几个不同的方式变换后存放在几个不同的地方。代码会不定期的去不同的地方去检查校准值。某个地方的校准值每次都会检测,发现不同可能会使得最主要的功能失效,这个概率是5%,并且将发现不同的次数累加,当累加到一定数量后,失效的概率提高到20%,或者30%...... 还有一个办法,就是每3个月自己轮换一次检测的位置,反正有好几个位置。检测到了也不要给什么提示,也不要全部罢工,只罢工一部分,或者每次罢工时让不同的子功能失效。 这样做的目的就是让解密者能够轻松的得到解密的代码,然后在测试中满意的认为解密完全成功,付款并投入生产,初次卖出的产品在使用中工作正常,在一段时间后会出现一些问题,但是又不像是批量出现的问题,他们不能排除是生产制造或者是设计原因造成的,还是用户使用不当的问题,很少有人会一下子想到是解密的问题。随着时间的推移,不能正常工作的产品越来越多。这个产品就将成为盗版者的噩梦。



这个方法是可行的,78楼的疑问如果仔细考虑下,成功率不会超过10%,呵呵,纯粹是歪打正着了。 苹果猫的方法我就在用,把写入这个加密字的代码单独做程序,预先少些,只要把熔丝位里的EESAVE打勾,后面烧正式程序就不怕丢失,呵呵,以后就自己用吧。 能把flash,eeprom读出来不难,但是如果能反编译代码并读通代码的人毕竟不多的,因为需要有功底的人才可以,而大部分有这个能力的人都是对这类事情不屑一顾的,即使要破,估计他们也要破那些设计难度很大的进口洋货了,这个我们支持啊,呵呵。


http://www.ourdev.cn/bbs/bbs_content_all.jsp?bbs_sn=3297561
另外方法:
本帖只是本人个人看法,也是本人使用过的一点经验的总结,希望对大家有所帮助 。但更重要的是,希望能起到抛砖引玉效果,也希望各位高手不吝赐教。 其实,大概2年前这里有过一个讨论加密的帖子,很多的人提出了不少想法,我印象最深的是有个朋友说了一句话, 只要让解密的成本高于产品的开发成本即可。 其实他说的不全对,成本有很多不确定的因数,如果在加上一句话“保证以上成本要求的同时,只要让他解密后测试的时间大于新 产品的开发时间即可”似乎就比较完美了。 当然,指望芯片本身的加密,解密市场上或迟或早都会弄出解密的方案。但是怎么样加密最合理呢?有人提出每个芯片有个唯一的 标识,但是,你还是要通过算法去验证,也就是你的算法本身就在程序里了,他同样可以经过跟踪,分析你读取的数据,破解出 你的算法,何况还有一个问题,在底层实现复杂的算法,容易吗!大家都不容易啊,为一个算法搞那么麻烦,甚至要添加不少的 成本)? 也有人说,最好的加密方法是不加密。这话说得好,最好的加密方法应该是看起来没有加密,随便你怎么调试,在短时间内,只要你 不发现我加密了,等你把程序用了以后,产品出来了,那你就惨了,谁叫你偷东西呢?这个时候,他就不得不不打自招,不得不来找你解决问题了。但是这样具体怎么做到呢,我只以我做的一个产品为例,说一下我的加密过程,当然,直接参考电路去设计这种方法,是没法预防的。 其实,我所谈的加密其实不叫加密,只是布个陷阱而已。并且所需要的知识也很简单,关键是了解你自己产品应用的场合以及具备的设置哪些陷阱的条件。 先说一下所谓的加密原则:第一,不能浪费太多的资源;第二算法简单(注意源程序保密,呵呵)。第三:创造两到3个源程序里就很难看懂的语句(非必要)。第四:除非特别必要,不能因为加密销毁数据或给解密者造成太大直接的损失,因为这样害人不利己(要从利己的角度去考虑)。 首先:介绍一下作为例子的产品,比如多功能表。 电路主要就是交流采样部分,显示部分,主控部分。其余基本是软件问题了,当然少不了数据存储。 这里,交流采样部分就具备上述的一个条件,就是每一个表,它的校表数据都是唯一的,也就是具备了唯一的ID。这个加密条件具备了,关键是怎么处理呢?很简单,把校表的程序分开,产品出去的时候,就不具备校表程序了,他要用你的程序,必须用同样功能的校表程序,事实上,这个工作量基本上就有开发一个表的工作量了。因为他还要分析你数据的位置以及对应的哪个参数。并且,你可以把这些数据分散,或用其他方法增加他这方面的工作量。 其次,显示部分也具备一个陷阱的条件,一般可以保留个版权声明。当然,为了防止被跟踪,版权声明最好在发现被抄袭后比较长的时间内触发。比如一年,到时候他卖出的产品都只显示你的LOGO,给他个电话和你联系,他不得不找你去帮忙了。但是,这个方法同样也可以被跟踪,毕竟计时或计次数,数据存储区域要变化的。他可以跟踪到。 当然了,我所说的只是增加他的工作量而已,这样的跟踪的预防,其实也很简单。可以延长他的跟踪时间,比如数据每小时更新一次,他就必须跟踪到一小时才能发现。但是有人说一个小时可能还比较容易发现。怎么办呢?1天,也很容易,总不能用一个月为单位吧。其实也很方便,就是初始的数据不要去动,读出的如果是初始数据,就不管,连续运行2个月后,添加一个数据,第二次运行25天后添加1个数据,然后每天或小时为单位添加一个数据,这样,他第一次跟踪到数据时间就大大延长了。 其实,光以上提到的两点,完全可以预防直接抄袭的行为了。再想改变方法在这两点上做做文章,基本上就不会因直接抄袭导致什么损失了。当然,也会有其他的布陷阱的方法。关键是针对你做的产品,做相应的处理措施。比如 ,他要是跟你卯上了,跟踪你的版权LOGO都有可能 ,在此不多说了,因为别人不会 那么傻到跟踪这个东西,但是有的产品需要注意这些地方。本贴被 wqsjob 编辑过,最后修改时间:2009-04-17,18:48:47.

没有评论:

发表评论

关注者