唯一ID号原来这样破解!啊哈哈哈哈

2019-12-08 14:40发布



2012年AVR被破解
2013用STM8
stm8 唯一ID号加密方法.思路
http://www.amobbs.com/thread-5540720-1-1.html

2016年唯一ID被破解(烦!被聊城鑫*连破解抄袭3个产品.恶心!STM8ID)
http://www.amobbs.com/thread-5647898-1-1.html

之前一直听人家说无用完的FLASH空间有多危险.一直都不知道。今天发现问题了.吓死人

2016-05-08再一次加密!
我看几年后再有人来破!


QQ图片20160508173537.jpg (143.39 KB, 下载次数: 0) 下载附件 2016-5-8 17:33 上传

QQ图片20160508173550.jpg (20.4 KB, 下载次数: 0) 下载附件 2016-5-8 17:33 上传

QQ图片20160508173543.jpg (21.69 KB, 下载次数: 0) 下载附件 2016-5-8 17:33 上传

QQ图片20160508173553.jpg (34.27 KB, 下载次数: 0) 下载附件 2016-5-8 17:33 上传
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
97条回答
无衣师伊
2019-12-09 23:49
1.
8K  FLASH不可能全部用完吧?总会有些空间剩的.好吧。只要有12字节就够了.这12字节就保存母片的ID
2.读唯一ID时,是先向一个指针初始化,然后连续读ID对吧?如下
    unsigned char *pIDStart=(unsigned char *)(ID_BaseAddress);   
    for(i=0;i!=12;i++){*p++=*pIDStart++;}
这样的程序---编译--生成HEX文件了。
这个HEX文件烧录到芯片.---成产品卖出去-------------这就是母片!

3.客户拿到母片总能读出HEX的。技术难度高点。总能读出HEX的
问题来了。客户在这个HEX文件里面。能不能查到(unsigned char *)(ID_BaseAddress);    ????
以STM8S102为例ID_BaseAddress=0x4865
那么这个HEX中就肯定能查找到0x4865如第一张图片
母片的ID号也能读出的!而且母片FLASH是有空余的
就把母片的ID写入0x7E00这地址吧!如图1的第3步


最后!把HEX文件所有的0x4865 改成0x7E00

烧录到新的芯片里面


这样会发生什么?
    unsigned char *pIDStart=(unsigned char *)(ID_BaseAddress);   
    for(i=0;i!=12;i++){*p++=*pIDStart++;}
这里读的是母片的ID,不是芯片自己的ID
这里不存在4865只有7E00

解决方法就是不要明文出现ID号的地址!



一周热门 更多>