嵌入式代码如何防破解

嵌入式代码破解:

嵌入式代码破解:

通过一定的外部工具和手段,将代码从CPU中读取出来,然后再将其下载到相同芯片上运行。

这样完成硬件抄板后,直接就可把别人的代码抄袭下来。

破解原则:

就像所有的加解密一样,在现有的技术条件下,没有破解不了的密码,只是破解的时效性以及代价。

设计加密的目的是让破解者的破解成本高于收益成本,从而使其放弃破解。

根据破解流程,可以两方面进行防破解:

1,代码下载完成后,将flash锁死,防止代码被读出;

2,代码被读取出来后,下载到其它芯片中无法运行。

对于方法1:

1,可以将芯片抛开,找到熔丝,接上后,即可以将程序读出来;

2,此方法有个不方便的地方: 对于远程代码调试,我们需要将bin文件发给对方,由对方下载进去。

对于方法2:

要求我们的代码即使被读出来了,但下载到其它芯片中,是无法运行的。

这就要求代码的身份信息与芯片的身份信息一致。

代码的身份信息录入方式:

1)下载的bin文件中本身就有身份信息,这就要求在下载bin之前,对bin文件进行处理,加入身份信息;

2)程序运行起来后,通过其它方法,写入身份信息。

代码的身份信息,可以更改。

芯片的身份芯片:

1)最常用的就是芯片的 UID. -- 这个就要求芯片在出厂时就带有唯一的ID;

2)程序运行起来后,以某种方法写入到芯片中 -- 这要求此UID是无法读出来的。

要求芯片的身份信息,写入后无法更改。

简单的单片系统中的防破解方法, 以及破解方法

1,增加加密芯片

即代码启动,先生成一串随机数,后将此随机数发给加密芯片,加密芯片加密后,发给CPU,

CPU对其进行解密,看是否与发出的数据一致。

【即代码和加密芯片使用一套加密算法和密钥,并要求一机一密钥】

破解方案一:

读出CPU的程序,-- 这个比较简单

复制一模一样的加密芯片。【加密芯片一般难以复制】

破解方案二:

读出CPU的程序,进行反汇编后,修改代码,让其跳过与加密芯片的握手阶段即可;

【比如 CJNE这种指令,可能就是进行握手的代码】

这在汇编代码中容易猜测出来。

2,使用芯片ID进行加密

代码启动后,读取芯片的UID,再与代码的身份信息进行比较,若相对应,则代码继续运行;

【芯片的UID基本是无法更改的,即使可以更改,批量化更改也是不现实的】

【可以对代码的身份信息进行加解密处理,以增加难度】

破解方法一:

对代码进行反汇编,找到读取UID的部分。因为一般芯片的UID地址固定。

char *puid = 0x84000001, 一般做的做法是这种形式。

更改bin文件,将此指针,指向一个空白区域,在这个区域写入代码的ID。

这样代码进行比较时,即可认证成功,代码继续运行。

防破解办法:

读取芯片UID时,不要使用立即数,可以通过一些逻辑计算获取,以增加破解难度;

3,破解方法

对于分析汇编代码,找到防破解的功能函数,更改其代码,(或注入新的代码)让其跳过防破解函数,

从而实现破解,

防破解方法:

将防破解函数,防破解认证过程,分解成几个子过程,再将其分布在代码的其它有用功能代码之中

以增加破解难度。

4,对于更改代码,或者注入代码的破解方式,如何进行防破解

1)增加代码的分析困难:

a, 比如讲读取ID的立即数,改为通过逻辑计算获得;

b, 将防破解的关键代码,运行过程分散开来;

2)将代码文件扩展到整个flash空间大小,防止数据注入。

对于编译生成的bin文件,通过增加随机数,或者BIN原片段的方式进行扩展

3)增加代码的完整性验证过程:即对BIN文件进行签名

5,bin文件签名过程:

a, 编译器生成bin文件后,在bin文件后面填充上随机数据(或者bin文件片段),形成新的BIN文件;

b, 将BIN文件进行哈希计算,得到哈希值;

c,对哈希值进行加密,得到文件的签名值;

d,将签名值填充到BIN文件中,形成签名的BIN文件;

e,将签名的bin文件下载到CPU中运行;

f,CPU启动后,对整个BIN文件进行哈希计算,并读取出签名值,对签名值进行解密

对比哈希值与解密后的签名值,如果一致,表明代码没有进行过更改。

【哈希计算也可以改为CRC32等计算,加解密可以是RSA,SM4等,也可以是异或等简单的逻辑计算】

6,代码的身份信息加入:

即如何将代码的身份信息加入到BIN文件中。

1)下载BIN文件前,注入身份信息

a,通过工具,读取出芯片ID;

b,将ID信息进行加密后,注入到BIN文件中,形成新的BIN文件;

这个对于有boot的芯片,比较方便,在下载时,先发命令获取到UID,BIN注入UID后,

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/133444.html

(0)

相关推荐