搜索
bottom↓
回复: 183

共享近段时间研究防止HEX被修改的成果,CRC16 HEX文件自动修改生成器,使产品上每个HEX

  [复制链接]

出0入0汤圆

发表于 2011-6-30 15:15:24 | 显示全部楼层 |阅读模式
共享近段时间研究防止HEX被修改的成果,CRC16 HEX文件自动修改生成器,使产品上每个HEX文件的内容均不一样,在单片机内部运算CRC16,若结果不对,程序会工作不正常.......

CRC16 HEX文件自动修改生成器使用说明:

    用VB做了个自用的CRC16工具,该软件本意是为个人用于一个项目上,有的地方图省事直接写在源码上面了。感觉还是搞成通用的比较好,更方便有此需要的网友,现已初步完成,奉献给大家。可以随意传播,但请不要更改版权信息。

软件功能及工作流程说明:
1、输入指定的HEX或BIN文件
2、指定输出文件位置
3、根据需要可选择设置随机数地址,最多有6项可选,可在任意位置生成随机数(随机数有三种格式可选:填充00、FF、随机数),存储于指定的FLASH 地址。START:表示起始地址,END:表示结束地址
4、根据需要可选择设置CRC16地址,最多有6项可选,可在任意位置计算HEX或BIN文件的CRC16值,存储于指定的FLASH 地址。START:表示起始地址,END:表示结束地址
5、设置CRC16多项式权值以适用不同计算。
6、根据需要可选择设置在指定位置加入唯一ID识别号
7、根据需要可选择设置在指定位置加入编号,编号可以自动加一,减一或保持不变,人工输入。
8、指定CRC16的多项式,及权值,一般常用的为:0xA001  0x1021  0x8005  0x8048等
9、指定文件的输出格式可以为HEX或BIN文件
10、根据上面10项设置,点“执行”自动生成新的HEX或BIN文件至指定输出目录。
11、点“计算”,是计算CRC部分的结果。注意CRC结果指定,地址设置。
12、用烧写工具直接烧写新生成的文件。这样每个芯片的HEX内容均不完全一样,防止多片同时被破_解,用多个HEX作比对。
13、如果可选框全部不选,可以完成输入HEX 输出BIN或输入BIN输出HEX文件格式的转换

(原文件名:1.jpg)
注意:点“计算”仅是计算输入文件指定地址的CRC16值,“执行”是计算输出指定地址的CRC16值。

用雁塔菜农的hotwc3做校验,检测结果的正确性,
Hotwc3地址: http://www.hotpower.org/HotAjax/HotPower_HotAjax.html
如下图:
选CRC16多项式权值A001,明文ID及本机编号的HEX值:”010203040506070809000A0B0C0100”    点“运算”,CRC结果为0x8A7C,表明结果计算正确。


(原文件名:2.jpg)
生成文件目录索检:

(原文件名:3.jpg)
在此特别感谢雁塔菜农和John Lee老师的指点,谢谢!
欢迎各位提出任何意见和建议.......

作者:烈火狂龙    2011年6月30日

点击此处下载 ourdev_653810KGL93I.rar(文件大小:2.63M) (原文件名:CRC16 HEX文件自动修改生成器V1.1.rar)
--------------------------------------------------
修改原因:软件更新

出0入0汤圆

发表于 2011-6-30 15:19:20 | 显示全部楼层

出0入0汤圆

发表于 2011-6-30 15:23:04 | 显示全部楼层
不错

出0入0汤圆

发表于 2011-6-30 15:24:37 | 显示全部楼层
不错,顶

出0入0汤圆

发表于 2011-6-30 15:25:31 | 显示全部楼层
顶。谢谢!

出0入0汤圆

发表于 2011-6-30 15:28:33 | 显示全部楼层
顶起……

出0入0汤圆

发表于 2011-6-30 15:29:00 | 显示全部楼层
再多说几句呗。都有啥用处?就为了“每个芯片的HEX内容均不完全一样,防止多片同时被破_解,用多个HEX作比对。”这一点??

出0入0汤圆

发表于 2011-6-30 15:31:14 | 显示全部楼层
回复【6楼】flyunlimit 飞行无极限
再多说几句呗。都有啥用处?就为了“每个芯片的hex内容均不完全一样,防止多片同时被破_解,用多个hex作比对。”这一点??
-----------------------------------------------------------------------

帅哥,你的那套自行车设备多少钱啊?

出0入0汤圆

发表于 2011-6-30 15:35:53 | 显示全部楼层
我在源码里面把CRC数组的值改变一下

每改变一次编译一个HEX

是不是也能起到这个效果??

出0入0汤圆

 楼主| 发表于 2011-6-30 15:39:21 | 显示全部楼层
光一点就没意思了,这个软件是HEX文件自动修改生成器,用于生成新的HEX或BIN文件,再配合单片机内部运算CRC16,指定唯一ID,外部的ID更好,程序中检查唯一ID以及版权信息以及整个FLASH芯片有没有被改动,若HEX有任处被改动,则CRC值结果不对,程序会工作不正常...

出0入0汤圆

 楼主| 发表于 2011-6-30 15:41:34 | 显示全部楼层
8楼的,我原先也是这样想的,可是每改变一个数组你得重新计算CRC,再重新编译吧,如果多处分段计算CRC,那是累死人不偿命的,哈哈,现在这个可以自动完成。

出0入0汤圆

 楼主| 发表于 2011-6-30 15:43:34 | 显示全部楼层
包括外部硬件的唯一ID也能在这个软件上输入,不用再为这种事情麻烦啦。

出0入0汤圆

发表于 2011-6-30 15:45:11 | 显示全部楼层
关注

出0入0汤圆

发表于 2011-6-30 15:45:48 | 显示全部楼层
新东西,标记下。

出0入8汤圆

发表于 2011-6-30 15:46:18 | 显示全部楼层
别人直接复制一个,盗版的大家都一样。。。

出0入0汤圆

 楼主| 发表于 2011-6-30 15:49:06 | 显示全部楼层
没那么简单吧,若有指定外部硬件唯一ID,大家都一样,日子肯定不好过的,哈哈。。。。。。

出0入0汤圆

发表于 2011-6-30 15:51:35 | 显示全部楼层
stm32就是个例子
唯一ID也可以任意改。。。
这种情况 无用

出0入0汤圆

发表于 2011-6-30 15:52:38 | 显示全部楼层
这样是不是生成了N个HEX文件?
烧录到每个MCU的文件都不同?

太麻烦了

出0入0汤圆

 楼主| 发表于 2011-6-30 16:03:49 | 显示全部楼层
【16楼】 Vectorque:若用外部硬件唯一ID,你也任意改?

出0入0汤圆

 楼主| 发表于 2011-6-30 16:05:05 | 显示全部楼层
【17楼】 linghu2 令狐二中:若用了唯一ID或其它方式,我没想到有比这个方法更简单的了,呵呵。

------------------------------------------------
修改原因:改错字......

出0入8汤圆

发表于 2011-6-30 16:08:16 | 显示全部楼层
为题是,复制程序的时候也把硬件ID一起复制了呢~只要我不要联网啊之类的,单独一个东西运行,相同的ID也没关系

出50入0汤圆

发表于 2011-6-30 16:13:03 | 显示全部楼层
【16楼】 Vectorque

STM32F的内部ID能修改吗?不是厂家已经固化了吗?

出0入0汤圆

发表于 2011-6-30 16:16:23 | 显示全部楼层
回复【19楼】plc_avr  烈火狂龙
【17楼】 linghu2 令狐二中:若用了唯一id或其它方式,我没想到有比这个方法更简单的了,呵呵。

-----------------------------------------------------------------------

有,在程序第一次运行时候,自己运算唯一ID,自己改写部分FLASH(IAP),这样烧录的文件是一个,但是读出来的HEX都不同

出0入0汤圆

 楼主| 发表于 2011-6-30 16:27:41 | 显示全部楼层
【20楼】 huangdog :为题是,复制程序的时候也把硬件ID一起复制了呢~只要我不要联网啊之类的,单独一个东西运行,相同的ID也没关系
---------------------------------------------------------
关键是ID不相同,不定期随机出现问题,不会好用的。呵呵。

出0入12汤圆

发表于 2011-6-30 16:28:23 | 显示全部楼层
good

出0入0汤圆

 楼主| 发表于 2011-6-30 16:29:48 | 显示全部楼层
【22楼】 linghu2 令狐二中:我有做尝试,方法太麻烦了,BOOT区,可能还要要它干其它事,所以想到直接改HEX或BIN文件了。

出0入0汤圆

发表于 2011-6-30 16:34:59 | 显示全部楼层
回复【25楼】plc_avr  烈火狂龙

【22楼】 linghu2 令狐二中:我有做尝试,方法太麻烦了,boot区,可能还要要它干其它事,所以想到直接改hex或bin文件了。
-----------------------------------------------------------------------

IAP,怎么搞出BOOT区了?我不知道你用哪个MCU,具我知道STM32,就可以IAP,把FLASH当作EEPROM使用!

出0入0汤圆

发表于 2011-6-30 16:35:44 | 显示全部楼层
一个hex文件加了crc在里面以后,crc又变了,再修改又变了,楼主咋解决的?

出0入0汤圆

 楼主| 发表于 2011-6-30 16:36:13 | 显示全部楼层
呵呵,我目前用于AVR上面玩。

出0入0汤圆

 楼主| 发表于 2011-6-30 16:38:43 | 显示全部楼层
【27楼】 little Monkey :你别把CRC运算的结果放于被运算的那段代码中啊,这样每搞一次CRC的值肯定会变的。

出0入0汤圆

发表于 2011-6-30 16:52:43 | 显示全部楼层
要唯一ID啊!我还以为不需要能。防破_解真的是很头痛的事,尤其是小东西上。
回7楼,车子是公爵500,其它都是淘宝买的,不贵。

出0入0汤圆

发表于 2011-6-30 17:02:24 | 显示全部楼层
原来还有这等东西啊?不过估计要是用于大产量就麻烦了......

出0入0汤圆

发表于 2011-6-30 18:25:39 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2011-6-30 18:25:51 | 显示全部楼层
有硬件唯一ID当然更了好了,呵呵。就是没有,也没有关系,更主要的是可以在源码里写入版权信息,通过特定方式展现出来,如液晶显示,串口通讯等........,如果破_解者这些信息都要改,那好,不是改一个字节二个字节能完成的了的。得改一堆CRC结果,而且分别在不同的地址。没有CRC多项式及初值,出值等是没那容易得出正确的数值的,再存于特定地方的,嘿嘿。再者可以让代码空白区自动生成随机数,而这此随机数也是参与CRC运算的,破几个片子HEX都不一样,没那么好分析,估计得气死.........

出0入0汤圆

发表于 2011-6-30 19:09:52 | 显示全部楼层
感觉用处不大,别人盗版你的东西,直接完整的copy了片子不就好了,一样能用。

出0入0汤圆

发表于 2011-6-30 19:12:32 | 显示全部楼层
关注,

出0入0汤圆

 楼主| 发表于 2011-6-30 19:23:51 | 显示全部楼层
【34楼】 iloveh :如果别人一样“能用”,我也就没有必要大费周张去搞这个了,呵呵。别人一个字不改,就不怕原作者通过特定方式,读取内部版权信息...........,还有若有外部硬件唯一ID,ID和芯片中的对不上号,就不怕不定时的随机故障出现?而且这些是不可预料的。如果要改,那就好,让他去理乱麻去吧........

出0入0汤圆

发表于 2011-6-30 19:28:20 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-30 19:58:59 | 显示全部楼层
顶~

出0入0汤圆

发表于 2011-6-30 20:06:08 | 显示全部楼层
很强大

出0入0汤圆

发表于 2011-6-30 20:18:50 | 显示全部楼层
是一个比较好的想法,可以借鉴。

谢谢分享。

出0入0汤圆

发表于 2011-6-30 20:31:05 | 显示全部楼层
这个要mark

出0入0汤圆

发表于 2011-6-30 20:32:47 | 显示全部楼层
不错的想法   “就是不让你改带版权信息的  烧写内容 气死你”

标记

出0入0汤圆

发表于 2011-6-30 20:44:05 | 显示全部楼层
mark

出0入9汤圆

发表于 2011-6-30 21:47:15 | 显示全部楼层
回复【36楼】plc_avr 烈火狂龙
-----------------------------------------------------------------------

请教一下,生成CRC的值都存在不同地址上,还是相同地址上的?
所生成的程序中,除人为添加部份外,程序功能部份是应该是相同的,那么可以通过分析相同部份能得到程序吗?

出0入0汤圆

发表于 2011-6-30 22:00:14 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-30 22:42:16 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2011-6-30 22:50:08 | 显示全部楼层
【44楼】 liangyurongde:请教一下,生成CRC的值都存在不同地址上,还是相同地址上的?
所生成的程序中,除人为添加部份外,程序功能部份是应该是相同的,那么可以通过分析相同部份能得到程序吗?
--------------------------------------------------------------------------------------------------------
填充随机数\CRC16结果\唯一ID\本机编号\全部可以指定任意地址。引入了随机,数,分析相同的不可能得到全部程序,ID及CRC结果可以放入随机数中..........

出0入0汤圆

发表于 2011-7-1 01:01:58 | 显示全部楼层
回复【42楼】wear778899 兔子
不错的想法   “就是不让你改带版权信息的  烧写内容 气死你”
标记
-----------------------------------------------------------------------

都不知道谁气谁,我被人盗过,LOGO,信息等等,所有都盗版你的,然后还让你做售后服务。谁气谁还不知道呢。

出0入0汤圆

发表于 2011-7-1 06:01:13 | 显示全部楼层
MARK.谢。

出0入0汤圆

发表于 2011-7-1 09:27:26 | 显示全部楼层
48楼,肯定有办法确认是自己的东西啦,哈哈!!

出0入0汤圆

发表于 2011-7-1 09:36:08 | 显示全部楼层
想问下楼言主,修改了HEX文件,怎么保证原程序的正确执行?

出0入0汤圆

发表于 2011-7-1 09:49:44 | 显示全部楼层
mark

出50入0汤圆

发表于 2011-7-1 10:02:37 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-7-1 10:12:34 | 显示全部楼层
学习了

出0入0汤圆

发表于 2011-7-1 10:39:54 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2011-7-1 10:45:35 | 显示全部楼层
【51楼】 love_TYQ :想问下楼主,修改了HEX文件,怎么保证原程序的正确执行?
-------------------------------------------------------------------------
在原程序中确定唯一ID及CRC16结果的地址,后续只要在这个软件改就可以自动完成,唯一ID修改及CRC16运算结果的修改,因为ID及其它内容改了一个字节,那么CRC16的结果也要同样更改,否则程序运行出错。解决了批量生产时自已头痛的问题,不要每换个ID去修改一下源码,再去仿真一下CRC结果,再编译,得出HEX......

出0入0汤圆

发表于 2011-7-1 10:58:10 | 显示全部楼层
此做法不错,坐等验证结果!

出0入0汤圆

 楼主| 发表于 2011-7-1 15:37:42 | 显示全部楼层
软件修正一处产生随机数BUG,需要的网友请去楼主位下载.......

出0入12汤圆

发表于 2011-7-1 15:53:57 | 显示全部楼层
呵呵,学习了

出0入0汤圆

发表于 2011-7-1 16:08:38 | 显示全部楼层
不错,对外部硬件唯一ID的器件作用大些

出0入0汤圆

发表于 2011-7-1 16:13:20 | 显示全部楼层
谢谢楼主分享

出0入0汤圆

发表于 2011-7-1 19:28:22 | 显示全部楼层
不是很清楚,是不是须要程序中确认唯一ID与CRC值,唯一ID一变,CRC变,那程序中如何判断??恳请楼主指教!谢谢

出0入0汤圆

 楼主| 发表于 2011-7-1 19:49:27 | 显示全部楼层
这个软件就是要使唯一ID与CRC值一一对应。程序可以正常运行,但是盗版者不能修改版权信息、ID、或芯片内其它任何地方一个字节,否则,程序可能会乱执行,达不到想要的效果。

出0入0汤圆

发表于 2011-7-1 20:42:25 | 显示全部楼层
MARK!

出0入0汤圆

发表于 2011-7-1 21:03:50 | 显示全部楼层
防止HEX被修改的成果,CRC16 HEX文件自动修改生成器,使产品上每个HEX文件的内容均不一样,在单片机内部运算CRC16,若结果不对,程序会工作不正常.......
要顶!

出0入0汤圆

发表于 2011-7-1 21:17:45 | 显示全部楼层
remind

出0入57汤圆

发表于 2011-7-1 21:27:59 | 显示全部楼层
没弄明白如何实现的。
没弄明白会不会把中断入口弄丢了。

出0入0汤圆

发表于 2011-7-1 21:34:19 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-7-1 22:27:09 | 显示全部楼层
不错不错,不过一般使用芯片ID号处理。

出0入0汤圆

发表于 2011-7-1 23:02:08 | 显示全部楼层
标记下

出0入0汤圆

发表于 2011-7-1 23:39:21 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2011-7-2 08:15:13 | 显示全部楼层
举个例子,现在假如在源码中写入版权信息。

(原文件名:1.jpg)
在HEX文件地址:

(原文件名:2.jpg)
打开软件计算版权信息的CRC16结果,存于XXXX处,在MCU中直接运算版权信息起始地址至存于XXXX处CRC值的地方,则CRC16结果为"0“,用CRC16的结果与其它变量异或如:
for (i=0;i<1024;i++)
    {
        para(i)= EEPROM_read(i)^CRC_DATA16;
    }
则参数的内容不会变,如果CRC结果不为0则参数内容会变,那么程序执行的结果必会出错。

出0入0汤圆

发表于 2011-7-2 08:22:19 | 显示全部楼层
这样做不适合量产,没法生产,请楼主指点可以量产的加密方法

出0入0汤圆

 楼主| 发表于 2011-7-2 08:31:00 | 显示全部楼层
晕,这个软件就是在一定程序上解决量产问题的,不用每改一次ID或编号等,都要在源码上改再编译,再仿真CRC结果,再编译的生成HEX或BIN文件的烦恼.可以根据此种思路,将下载软件的功能也集合到一起,输入ID或其它信息,软件自动完成直接下载会更爽的,哈哈。

出0入0汤圆

 楼主| 发表于 2011-7-2 08:35:50 | 显示全部楼层
如果我不共享软件以及思路,直接说怎么样用CRC16防止HEX文件被修改,又有何用?每个HEX不一样,不能批量,那不是累死人不偿命的活。。。。。。,现在反过来就简单多啦。呵呵。

出0入0汤圆

发表于 2011-7-2 10:37:43 | 显示全部楼层
还没完全搞明白,再想想!!哈哈,楼主,很牛。

出0入0汤圆

发表于 2011-7-2 11:36:44 | 显示全部楼层
看不懂啊

出0入0汤圆

发表于 2011-7-2 11:40:08 | 显示全部楼层
非常好,先存一下,需要时再研究了,
谢谢楼主了

出0入0汤圆

发表于 2011-7-2 11:58:55 | 显示全部楼层
回复【48楼】xjavr
-----------------------------------------------------------------------

旧公司也碰到过,分明是人家盗版的,售后还回到原厂了。呵呵

出0入0汤圆

发表于 2011-7-2 12:13:40 | 显示全部楼层
mark

出0入85汤圆

发表于 2011-7-2 14:11:09 | 显示全部楼层
回复【11楼】plc_avr 烈火狂龙
-----------------------------------------------------------------------

不懂,不知道如果我的hex经你这个东西一加密,单片机自己估计都不认得了吧?

出0入0汤圆

发表于 2011-7-2 14:15:11 | 显示全部楼层
这个思路太给li了。

出0入0汤圆

 楼主| 发表于 2011-7-2 16:32:39 | 显示全部楼层
【81楼】 marshallemon :显然你还没明白这个流程,呵呵,要在单片机中运行CRC16,当中关键的地址你要知道存在什么地方,否则在软件上面乱写一个地址,只会让你的代码出错,只会起反作用。这是一把双刃剑,玩的好的可以所向披靡,不懂原理乱来的只会伤到自已。

出0入0汤圆

 楼主| 发表于 2011-7-2 16:35:43 | 显示全部楼层
51或AVR也好,其它型号容易解密的也罢,想解密就让他去解吧........

出50入10汤圆

发表于 2011-7-2 17:10:50 | 显示全部楼层
很好!支持!

出0入13汤圆

发表于 2011-7-2 18:22:33 | 显示全部楼层
虽然不知道怎么用,但非支持不可

出0入0汤圆

发表于 2011-7-2 23:28:34 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-7-2 23:40:40 | 显示全部楼层
又一个好的思路出现了,顶

出0入0汤圆

发表于 2011-7-2 23:44:47 | 显示全部楼层
有空再慢慢看下,特别对便宜单片机有用,贵的单片机解密费都很贵了

出15入9汤圆

发表于 2011-7-3 00:43:00 | 显示全部楼层
也许有用,先留下

出0入0汤圆

发表于 2011-7-3 09:43:09 | 显示全部楼层
不知道怎么用,哈哈。编译好的文件,一修改,不是不能正确运行了吗??

出0入0汤圆

发表于 2011-7-3 14:51:39 | 显示全部楼层
flash芯片不加密,你这个好像没有用呀!

出0入0汤圆

 楼主| 发表于 2011-7-4 20:04:01 | 显示全部楼层
LS的两位,显然还是没能理解这个思路,哈哈.........所以才有此问。要在单片机中运行CRC16,当中关键的地址你要知道存在什么地方,否则在软件上面乱写一个地址,只会让你的代码出错,只会起反作用。这是一把双刃剑,玩的好的可以所向披靡,不懂原理乱来的只会伤到自已。

出0入0汤圆

发表于 2011-7-5 15:24:13 | 显示全部楼层
非常强大

出0入0汤圆

发表于 2011-7-6 14:20:02 | 显示全部楼层
mark!

出0入0汤圆

发表于 2011-7-6 14:59:26 | 显示全部楼层
我的理解是这个思路:
1、如果没有外部ID,全盘复制芯片HEX,则楼主此方法无效。
2、如果有外部ID,那么可以在MCU中以此外部ID进行一些计算,得出参数。如果参数正确则执行,如果参数错误则程序不执行。

   在此种情况下,有些人可能会想我得到你的HEX后进行反汇编,在你直接JUMP到正确执行的入口,或者改掉你的“不执行程序”语句。
   但这种方法是要改HEX的,那么HEX的CRC会变,程序自己会侦测到被改了。可以执行自毁或者故障程序。
3、显示版权信息,让卖的一脸皮上有些麻烦。但不是主要的。但对脸皮厚的D版者没有多少作用。

我有个问题:假如我改了你的HEX,改的内容是把你的自毁或者故障程序跳过,然后随便你的CRC怎么算,楼主的方法还有用吗?我想到的有一点用的方法就是在程序的逻辑上多设置一些探测程序,不要直接故障,还是乱调用程序,D版的人改了一处还有多处,逻辑弄复杂一些。一定程度上可以避免被盗的程序正常运行。被盗的程序表现有时功能正常,但有点是“跑飞”,因为探测到的程序不是自毁而是神经错乱一样乱执行,这样才会让D版的人头痛。

等D版的人弄清里面的逻辑错误,那耗费的精力可以重写程序了。

出0入0汤圆

 楼主| 发表于 2011-7-6 16:26:24 | 显示全部楼层
哈哈,大胡子切入正题了。
------------------------------------------
1、如果没有外部ID,全盘复制芯片HEX,则楼主此方法无效。
3、显示版权信息,让卖的一脸皮上有些麻烦。但不是主要的。但对脸皮厚的D版者没有多少作用。
------------------------------------------
没有外部ID,确实不太好处理,但是HEX文件起码不能被随意改写,如版权信息等,改动一个BYTE,整个代码会工作不正常。


------------------------------------------
2、如果有外部ID,那么可以在MCU中以此外部ID进行一些计算,得出参数。如果参数正确则执行,如果参数错误则程序不执行。
我有个问题:假如我改了你的HEX,改的内容是把你的自毁或者故障程序跳过,然后随便你的CRC怎么算,楼主的方法还有用吗?我想到的有一点用的方法就是在程序的逻辑上多设置一些探测程序,不要直接故障,还是乱调用程序,D版的人改了一处还有多处,逻辑弄复杂一些。一定程度上可以避免被盗的程序正常运行。被盗的程序表现有时功能正常,但有点是“跑飞”,因为探测到的程序不是自毁而是神经错乱一样乱执行,这样才会让D版的人头痛。
等D版的人弄清里面的逻辑错误,那耗费的精力可以重写程序了。
------------------------------------------
要的就是你后面讲的效果,如果都给跳过去了那就不好玩了。呵呵。CRC可是全芯片及代码段分段计算,不要在一处计算CRC,而是程序在多处分段计算,重要的部分全部用CRC校验,现在软件上面只做了3个,其实可以更多的。计算的结果不要直接用判断语句去执行,而是用异或,结果与重要的参数异或,如果结果不对,那么参数值必定改变,原来假如延时1秒,可能就要变成200秒等不定数,故障出现是随机的,这样让人半天才找不到故障入口,CRC结果不对,可以改变函数指针,让它乱调用等,程序要让他一直执行,但是执行的结果不是他想要的就行。其它的随意发挥,呵呵。

出0入0汤圆

 楼主| 发表于 2011-7-6 16:33:36 | 显示全部楼层
分段计算及整个芯片计算CRC16 是个非常头痛的问题,如果一直用仿真太累,总不能换个ID仿真一次CRC吧,那样费时费力,所以花了工夫搞了这个软件,在一定程度上解决批量生产的问题,呵呵。给大家提供一种另类的思路.......

出0入0汤圆

发表于 2011-7-7 10:30:48 | 显示全部楼层
回复【15楼】plc_avr 烈火狂龙
没那么简单吧,若有指定外部硬件唯一id,大家都一样,日子肯定不好过的,哈哈。。。。。。
-----------------------------------------------------------------------

唯一ID怎么读出来的?还不是用1-wire或者别的接口去读出来?我不用你的唯一ID芯片,我就直接用一个便宜的单片机代替你的唯一ID芯片,所有产品ID统一,行不?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-20 18:41

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表