搜索
bottom↓
回复: 54

浅谈知识产权保护方法之加密Kinetis K60(方案二)

  [复制链接]

出0入0汤圆

发表于 2013-10-27 15:23:25 | 显示全部楼层 |阅读模式
       上篇详细的介绍了加密锁定Kinetis的一种方法,本篇再接再厉,给大家再介绍一种加密方法(哎,这点家底都晒出来了)。当然实际上原理还是不变的,即还是通过修改0x400~0x40F地址段的内容来实现加密锁定,万变不离其宗,所谓殊途同归罢了,下面好戏登台:
       既然实现security最终都是改写寄存器加载段flash地址的内容,那实际上修改flash内容的方式还是灵活多变的,方案一中提到的在中断向量表的最后添加flash配置信息只是其中一种,那还有哪些呢?还是不摆谱了,小心被拍砖,哈哈。不错,那就是通过在指定地址定义常量的方法,当然定义常量大家都会用到(有些应用譬如LCD显示的字模或者一些固定的查找表为节省RAM空间我们一般会选择定义const常量的方法将它们存放到flash空间中),但是指定地址的存放方式用的会少些(一般都是让编译器自动分配的),如果我们非要指定地址呢(哎,强迫症又开始了,呵呵),即将flash配置信息作为常量强制指定存放到0x400起始的地址,那岂不是跟方案一有了异曲同工之妙了,好吧,这样的话那就该“@”这位老兄上场了(咳咳,可不是给单片机发email啊,呵呵),相信很多人到此处就都明白了。下面我仍然以IAR环境下锁定K60为例,简单介绍下方案二的使用步骤:
1. 打开待加密工程中的main.c文件,在其中的main函数之前以添加如下图所示常量定义,即将FlashConfig数据组数据存放到“.flashConfig”段中,其中FlashConfig[11]即为0x40C地址:


2. 至于这个.flashConfig段属性是需要在与该工程匹配的IAR连接文件(.icf文件)中人为添加定义的,如下图所示,需要添加三个部分,然后保存:




3. 前两步完成之后,其实需要添加的部分就已经完成了,但是还有特别重要的两点需要注意,这里我加红注释一下,如下:
(1)采用方案二的情况,需要确保vectors.c中中断向量表最后的16个字节没有被添加,即不能有4个CONIFG_x配置信息的,否则会出现编译错误,因为这就涉及到两者冲突的问题,也就是说在采用方案一的话就不能采用方案二,同理,采用方案二的话也不能采用方案一,总之两者不能同存;
(2)还需要考虑编译器优化的问题,因为我们在.flashConfig段定义了常量,但是在代码程序里却没有使用它,这种情况下编译器会直接把这段常量优化掉,所以我们做的工作算是白做了,即使我们在IAR的优化等级中设置成low或者none都不行,因为人家编译器认死理儿,反正你也没有使用它,我就是怕它pass掉,这下子伤心了,呵呵。还好IAR给我们留了条后路,在options->Linker->Input选项卡中提供了Keep symbol功能,如下图,将FlashConfig添加进去即可强制编译不优化它,这样目的就达到了,呵呵,看来还是天无绝人之路啊有木有。


3. 编译通过,下载调试,程序下载之后同样会出现进入不到调试窗口的现象,这个是正常现象,因为这个时候芯片就已经被security了,这样就可以放心量产了,呵呵~

      希望这两篇系列文章能对大家有所帮助,enjoy it~

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2013-10-27 18:32:51 | 显示全部楼层
ok

出0入0汤圆

发表于 2013-10-30 23:01:35 | 显示全部楼层
KL KE KM是否都可以?

出0入0汤圆

发表于 2013-10-30 23:27:39 | 显示全部楼层
真的是晒家底了,不错!谢谢分享!

出0入0汤圆

 楼主| 发表于 2013-11-1 00:01:15 | 显示全部楼层
tyqhaha 发表于 2013-10-30 23:01
KL KE KM是否都可以?

Kinetis的加密方式和方法都是通用的,不过需要注意的是KE系列的加密地址是0x40E,而K和KL的都是0x40C,只有这个不同~

出0入0汤圆

发表于 2013-11-1 08:47:29 来自手机 | 显示全部楼层
这个方法的确不是一般人可以想到的!FAE很给力!!
忙玩这段时间准备入块fsl的板子学习一下~
头像被屏蔽

出0入0汤圆

发表于 2013-11-1 09:09:32 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2013-11-1 09:14:20 | 显示全部楼层
感谢,楼主的无私奉献!

出0入0汤圆

发表于 2013-11-1 09:23:51 | 显示全部楼层
armok 发表于 2013-11-1 09:09
COOL !

给莫大提个意见,那个精华的图章盖住了部分字,

出0入0汤圆

发表于 2013-11-2 10:42:31 | 显示全部楼层
不外带加密芯片的话,还是有点怕怕啊...

出0入0汤圆

发表于 2013-11-2 11:34:25 | 显示全部楼层
好东西~~谢楼主~~

出0入0汤圆

发表于 2013-11-4 12:01:01 | 显示全部楼层
谢谢楼主无私奉献,学习了

出10入95汤圆

发表于 2014-1-20 09:16:18 | 显示全部楼层
方案三,用户程序判断加锁,习惯这么用,呵呵

出0入0汤圆

发表于 2014-1-20 09:59:05 | 显示全部楼层
谢谢楼主无私奉献,学习了

出0入0汤圆

发表于 2014-1-20 11:56:51 | 显示全部楼层
楼主能否晒下如何写逻辑炸点的。
谢谢楼主分享~

出0入0汤圆

发表于 2014-1-20 13:37:38 | 显示全部楼层
不错,费心了啊

出0入0汤圆

发表于 2014-1-23 20:19:52 | 显示全部楼层
好贴,值得收藏

出0入0汤圆

发表于 2014-5-5 12:43:19 | 显示全部楼层
收藏学习,一直都不会这些!!

出0入0汤圆

发表于 2014-6-25 16:35:53 | 显示全部楼层
本帖最后由 ln08136207 于 2014-6-25 16:51 编辑

楼主,使用第一种方法发现我的vectors.c中没有4个CONIFG_x配置信息,于是改用你的第二种方法.
但是,在debug时后出现:
Wed Jun 25, 2014 16:35:33: Logging to file: D:\projects\cspycomm.log
Wed Jun 25, 2014 16:35:33: JLINK command: ProjectFile = D:\projects\settings\
GPIO_demo_frdm_FLASH_64KB_PFLASH.jlink, return = 0
Wed Jun 25, 2014 16:35:33: Device "MKE02Z16XXX2" selected (16 KB flash, 2 KB RAM).
Wed Jun 25, 2014 16:35:33: DLL version: V4.74a, compiled Jul 23 2013 08:47:58
Wed Jun 25, 2014 16:35:33: Firmware: J-Link ARM V8 compiled Sep 20 2013 15:09:45
Wed Jun 25, 2014 16:35:33: Selecting SWD as current target interface.
Wed Jun 25, 2014 16:35:33: JTAG speed is initially set to: 32 kHz
Wed Jun 25, 2014 16:35:33: Found SWD-DP with ID 0x0BC11477
Wed Jun 25, 2014 16:35:33: Found SWD-DP with ID 0x0BC11477
Wed Jun 25, 2014 16:35:33: FPUnit: 2 code (BP) slots and 0 literal slots
Wed Jun 25, 2014 16:35:33: Found Cortex-M0 r0p0, Little endian.
Wed Jun 25, 2014 16:35:34: Hardware reset with strategy 0 was performed
Wed Jun 25, 2014 16:35:34: Initial reset was performed
Wed Jun 25, 2014 16:35:35: J-Link: Flash download: Flash programming performed for 1 range (512 bytes)
Wed Jun 25, 2014 16:35:35: J-Link: Flash download: Total time needed: 1.418s (Prepare: 1.280s, Compare: 0.032s, Erase: 0.023s, Program: 0.031s,  
Verify: 0.015s, Restore: 0.035s)
Wed Jun 25, 2014 16:35:35: 14696 bytes downloaded and verified (8.50 Kbytes/sec)
Wed Jun 25, 2014 16:35:35: Warning:  
Verify error at address 0x0000040E, target byte: 0xFE, byte in file: 0xFF   //这里说明我没写进去?
Wed Jun 25, 2014 16:35:37: Warning: There were warnings during download, see Log Window
Wed Jun 25, 2014 16:35:37: Loaded debugee: D:\projects\GPIO_demo_frdm.out
Wed Jun 25, 2014 16:35:37: Hardware reset with strategy 0 was performed
Wed Jun 25, 2014 16:35:37: Target reset
Wed Jun 25, 2014 16:35:38: There was 1 warning during the initialization of the debugging session.

出0入0汤圆

发表于 2014-6-26 19:48:49 | 显示全部楼层
多谢楼主分享

出0入0汤圆

发表于 2014-6-26 21:01:52 | 显示全部楼层
谢谢分享,学习一下!

出0入0汤圆

发表于 2014-6-27 08:35:47 | 显示全部楼层
加密地址是只有唯一一个?还是自己随便定义的?

出0入0汤圆

发表于 2014-6-28 23:22:24 | 显示全部楼层
厉害厉害   哈哈

出0入0汤圆

发表于 2014-6-29 00:37:38 | 显示全部楼层
标记,浅谈知识产权保护方法之加密Kinetis K60

出0入0汤圆

发表于 2014-6-29 08:56:08 | 显示全部楼层
这个方法很特别

出0入0汤圆

发表于 2014-6-29 09:33:21 | 显示全部楼层
方案三,用户程序判断加锁,这个方式不错

出0入0汤圆

发表于 2014-6-29 10:12:46 | 显示全部楼层
过几天找块板子试试去i

出0入0汤圆

发表于 2014-6-29 10:58:31 | 显示全部楼层
嗯不错的    谢了  LZ

出0入0汤圆

发表于 2014-6-29 11:04:13 | 显示全部楼层

谢谢分享,学习一下

出0入0汤圆

发表于 2014-8-31 13:45:46 | 显示全部楼层
谢谢。收藏了

出0入0汤圆

发表于 2014-8-31 15:54:43 | 显示全部楼层
谢谢先收藏了

出0入0汤圆

发表于 2014-8-31 16:21:20 | 显示全部楼层
原来security是这么回事……

出100入101汤圆

发表于 2014-8-31 16:25:44 | 显示全部楼层
加密,关注

出0入0汤圆

发表于 2014-9-1 22:06:27 | 显示全部楼层
版主的帖子一贯比较犀利,学习一下

出0入0汤圆

发表于 2014-9-1 22:27:15 | 显示全部楼层
感谢楼主分享

出0入0汤圆

发表于 2014-9-4 14:52:43 | 显示全部楼层
mark              

出0入0汤圆

发表于 2014-9-4 15:14:06 | 显示全部楼层
收藏了 mark

出0入0汤圆

发表于 2014-11-20 15:49:13 | 显示全部楼层
谢谢,正打算用飞思卡尔的MCU

出0入0汤圆

发表于 2014-11-20 18:29:21 | 显示全部楼层
好东西啊,感谢楼主

出0入0汤圆

发表于 2014-11-20 20:45:34 | 显示全部楼层
多谢分享。

出0入0汤圆

发表于 2014-11-20 22:49:48 来自手机 | 显示全部楼层
好东西,谢谢

出0入0汤圆

发表于 2014-11-21 00:27:28 | 显示全部楼层
好文,标记

出0入0汤圆

发表于 2014-11-21 08:26:06 | 显示全部楼层
下次用得到时候,试试这个方案!~

出0入0汤圆

发表于 2014-11-22 15:50:54 | 显示全部楼层
顶                                 

出0入0汤圆

发表于 2014-11-25 13:26:04 | 显示全部楼层
锁住了该怎么解呢

出0入0汤圆

发表于 2015-3-17 16:26:43 | 显示全部楼层
谢谢版主的分享,从第一篇看到第二篇,写的认真仔细!不错,辛苦了!学习了!同时也收藏了!呵呵

出0入0汤圆

发表于 2015-3-17 17:54:25 | 显示全部楼层
学习了!感谢分享

出0入0汤圆

发表于 2015-3-18 00:06:19 | 显示全部楼层
帅气  赞一个

出0入0汤圆

发表于 2016-3-13 12:54:13 | 显示全部楼层
谢谢楼主无私奉献

出0入0汤圆

发表于 2016-3-13 14:37:38 | 显示全部楼层
学习了,谢谢楼主

出0入0汤圆

发表于 2016-3-13 22:52:20 | 显示全部楼层
这是个好东西,要收藏

出0入0汤圆

发表于 2016-4-7 10:07:42 | 显示全部楼层

出0入0汤圆

发表于 2016-4-7 13:07:26 | 显示全部楼层
多些分享

出0入16汤圆

发表于 2016-4-19 20:48:52 来自手机 | 显示全部楼层
rootxie 发表于 2014-6-29 09:33
方案三,用户程序判断加锁,这个方式不错

如何实现,思路能否介绍下,现在做什么先考虑加密

出0入0汤圆

发表于 2016-4-19 21:01:21 | 显示全部楼层
收藏,烙铁
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-3-29 08:24

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

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