无良**已经成了社会问题

[复制链接]
 楼主| liy1979 发表于 2009-4-23 09:29 | 显示全部楼层 |阅读模式
使用一些带内部晶振和内部EEPROM的单片机,如PIC16F913和ATMEGA8等,带内部晶振的单片机有一个寄存器OSCTUNE(或OSCCAL),这个是芯片厂家用来校准内部晶振的,范围从0-31,出厂时同型号的单片机这个寄存器的值是不一样.<br />我们可以利用一些隐藏功能,将OSCTUNE寄存器的值存入内部的EEPROM中,开机时读取EEPROM的值,再与OSCTUNE的值相比较,&nbsp;若二者相同系统正常工作,若不相同则不正常工作.<br />解密者将解密的程序烧写进单片机中后,会发大部分的芯片不能正常工作,因为他们不知道这个隐藏的功能.<br />举例说明:&nbsp;芯片为PIC16F913,这个厂品有4个按键(KEY0、KEY1、KEY2、KEY3),内部我们可以设定这样子一个隐藏的功能,如果KEY0与KEY1同时按下3秒钟以上,会将OSCTUNE寄存器存入单片机的EEPROM中。<br />开机复位后,读取EEPROM中的数据,与OSCTUNE寄存器相比较,若二者相同系统正常工作,若不相同则不正常工作。<br />以上有三个重点:<br />1、&nbsp;&nbsp;&nbsp;&nbsp;对于OSCTUNE寄存器不要进行写的操作,只进行读的操作,因为写了一次以后,就一直是你写的这个数据的。<br />2、&nbsp;&nbsp;&nbsp;&nbsp;刚才介绍的KEY0、KEY1同时按下3秒钟这个功能,可不能让解密者(包括产品的用户)知道,当然大家可以用别的隐藏的功能。<br />3、&nbsp;&nbsp;&nbsp;&nbsp;单片机中的OSCTUNE寄存器(或OSCCAL)的值,同一种型号的单片机不是每一个都是一样的,有32个数据,也就是说32个芯片中有一个是与解密的单片机是一样的。这样子造成的后果是:解密者解密了你的程序以后,却发现有些单片机可以正常工作,可有些单片机不能正常工作,可以说是大部分的单片机不能正常工作。<br />
yewuyi 发表于 2009-4-23 10:15 | 显示全部楼层

话题不对 ,删了把。。。

RT,不想讨论这些了
jetson001 发表于 2009-4-23 10:24 | 显示全部楼层

是个很好的办法

这办法的确有人在用了,效果很好<br />编程的时候把读取EEPROM的值,再与OSCTUNE的值相比较这段程序打散了,别放在一起,否则反编译的时候,容易摘出去
wdm 发表于 2009-4-24 10:29 | 显示全部楼层

如何读OSCTUNE的出厂默认值?

如16F886芯片,OSCTUNE的上电默认值都为0,如何读OSCTUNE的出厂默认值?
McuPlayer 发表于 2009-4-24 10:48 | 显示全部楼层

无良**已经成了社会问题

稍微埋藏个BUG它就没招了,我见过的这类小公司占破解一半以上。<br /><br />另外有些,破解然后再增强的,它的目标是抄袭你的再夺你的市场。<br />典型的农民起义型的公司,破解中的这类公司估计有20-30%<br />
lifengtao 发表于 2009-5-3 11:16 | 显示全部楼层

呵呵~

产品上量的话,隐藏功能自然知道的人就多了,防**也就不攻自破了。<br />如果是老板,就申请专利,占了市场就把价钱压的很低,产品型号不停地改进……<br />如果是开发工程师,那开始就把程序功能写烂点,老板骂完后,赶紧改进一点,如此这般……<br />我觉得现在吧~~&nbsp;你知道的别人比你知道的还多~!不要先把最好的东西拿出来~!这个~潜力是很重要的。
yewuyi 发表于 2009-5-4 09:00 | 显示全部楼层

呵呵,产品细化不代表把产品做的很烂

呵呵,否则市场自然淘汰你。<br /><br /><br />
胡来一刀 发表于 2009-5-5 08:48 | 显示全部楼层

说的很好啊!

LZ说的办法很好!lifengtao兄弟说的也很有道理!做事不能尽善尽美!呵呵!
刘骁奖 发表于 2009-12-5 12:53 | 显示全部楼层
24FJ64GA006的OSCTUN每次读出来也是0,不过这个方式很好的!MICROCHIP有一款带MAC地址的EEPROM的,大家去看看,有SOT-23封装的。
int3 发表于 2009-12-6 16:53 | 显示全部楼层
中颖的MCU有8位ID,可以读出写到EEPROM。
然后比较这样解密直接烧写,256片就只有一片能用。
ZRL700424 发表于 2009-12-7 08:54 | 显示全部楼层
要是遇到强干扰把EEPROM中的数据改变了看客户怎么收拾你!
兰天白云 发表于 2009-12-8 08:40 | 显示全部楼层
有觉招,但不能说
mcuisp 发表于 2009-12-8 22:13 | 显示全部楼层
本帖最后由 mcuisp 于 2009-12-8 22:14 编辑

我的EP868正在弄反拷贝功能,就是针对这一点。
这一点还是很管用。还可结合其他方法

这种方法好,但是要编程器支持,否则生产麻烦。
aoeivu 发表于 2009-12-15 22:28 | 显示全部楼层
好方法呀
xxdcq 发表于 2010-3-22 17:21 | 显示全部楼层
可以设计一个测试架
产品过测试架时顺便把这个数据也给存储了,同时把功能也测试了
我们的产品就是这样做的
只要按一个启动按键就全部自动进行
不过在用户程序里面要内置测试代码与测试架配合完成以上全部工作
gonggu8181 发表于 2011-12-25 17:52 | 显示全部楼层
学习了
xwhua188 发表于 2011-12-28 11:54 | 显示全部楼层
这样用肯定没问题,我也是担心万一干扰,EEP的数据掉了就麻烦了。
Breming 发表于 2012-1-13 15:28 | 显示全部楼层
顶一下。。
ZRL700424 发表于 2012-1-14 15:32 | 显示全部楼层
再告诉你一个情况,06年时我们有一批用M8的产品中的有约10%的板时间变快了,厂家来分析,说是OSCCAL的值遇到强干扰被改写成FF了,要我们以后烧芯片时把这个值读出来放在FLASH或者EEPROM中,工作时不要按OSCCAL工作,而是按FLASH或者EEPROM中的数据工作,因为OSCCAL的数值很容易被干扰改变
yewuyi 发表于 2012-1-14 16:44 | 显示全部楼层
再告诉你一个情况,06年时我们有一批用M8的产品中的有约10%的板时间变快了,厂家来分析,说是OSCCAL的值遇到强干扰被改写成FF了,要我们以后烧芯片时把这个值读出来放在FLASH或者EEPROM中,工作时不要按OSCCAL工作, ...
ZRL700424 发表于 2012-1-14 15:32



嘿嘿,更恶毒的是:当你把它放到了EE中后,又发现值被改变了,ATMEL会建议你做3个备份然后做一个CRC校准判断。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

42

主题

134

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部