找回密码
 注册
关于网站域名变更的通知
查看: 1182|回复: 1
打印 上一主题 下一主题

三种破解 MCU 技术,就是这么简单!

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-3-13 10:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x
三种破解 mcu 技术,就是这么简单!

( ^0 C) O- k0 o& [" Q: c5 a7 a8 V2 {1 I8 \$ A; l9 y) @4 `- h
MCU的安全等级正在逐步提升,一些公司甚至推出了安全主控,这是很好的现象,说明大家越来越重视嵌入式领域的信息安全和程序安全了。但对于很多特殊行业,比如消费类电子产品,低成本的通讯模块、电源控制模块等等,迫于成本压力以及更新换代速度问题,都无法使用更安全的主控MCU,有很大一部分产品甚至还在使用51单片机
2 z  r: \' _/ ], `: \( Z+ S7 m1 i4 h. Z, y6 f1 G/ J. E+ H
大家可能都知道破解51单片机是很容易的,但为什么容易,又是如何来破解的,可能很多人就不大清楚了,我在这里结合网上一些前辈整理的资料,和自己的经验,对MCU破解技术做个简单分析。; h# A! l! n  I9 f# J; K
4 I( Y- j; ], X$ P# j5 n) ]
大家不要把解密想的很复杂,他不像研发一款产品那样,先确定客户需求或者新产品主要功能,然后立项确定技术指标,分配软硬件开发任务,基于硬件调试程序,然后验证功能,测试bug,还要做环境试验。行业里解密的方法有很多,每个人破解的思路也不一样。但是大致分为几种。
. C- H, {  @( B% ?% e$ a
7 ~, Y% ?5 o6 I" W$ ^; ^6 |, B$ ]9 ~! F
一、软件破解
9 H1 N' v  t% R- J3 \利用软件破解目标单片机的方法,利用这种方法,不会对目标MCU元器件造成物理损伤。主要是对WINBONGD,SYNCMOS单片机和GAL门阵列,这种利用软件解密设备,按照一定的步骤操作,执行片内的程序送到片外的指令,然后用解密的设备进行截获,这样芯片内部的程序就被解密完成了(GAL采用逻辑猜测),就可以得到加密单片机中的程序。% U5 `: {- u# @2 x; q4 H9 u# M

9 a6 y- F2 k! |! S$ v9 k) v
; k' A. C- K" ~, ]1 N6 Z二、硬件破解流程
- l5 K+ m! {1 y1、测试
4 l% y1 G5 p8 T+ N7 [0 \8 n7 |( @使用高档编程器等设备测试芯片是否正常,并把配置字保存。; q4 E; ~4 T; c! I
2、开盖
6 W, C/ w0 C/ P# \7 ^, M采用手工或专用开盖设备进行开盖处理,这里说的开盖并不是说单片机或者其他MCU真有一个盖。简单解释一下,MCU其实是一个大规模集成电路,它是由N个电路组合而成的,而晶圆就是搭载集成电路的载体。将晶圆进行封装后,就形成了我们日常所用的IC芯片,封装形式可以有多种,比如TSSOP28、QFN28等,大家可以自己去百度搜索,这里不再复述。; F% b$ a* y9 @: _" {
3、做电路修改0 k5 D  T$ G7 C. v' @1 J
对不同芯片,提供对应的图纸,让厂家做电路修改,目的是让MCU的存储区变得可读。有些MCU默认不允许读出Flash或者E2PROM中的数据,因为有硬件电路做保护,而一旦切断加密连线,程序就暴露可读了。如图2所示
1 |! H; l5 G5 u4、读程序
1 p  w" C' X6 J& j4 [取回修改过的MCU,直接用编程器读出程序,可以是HEX文件,或者BIN文件。
: d, ?9 f, f5 z! Z2 M! I5、烧写样片给客户
/ ?8 D) K. H+ W) e按照读出的程序和配置,烧写到目标MCU中,这样就完成了MCU的破解。 至此,硬件破解法成功完成。
7 ~7 v* D/ S. B3 |9 B, E7 }& G* _+ O: B( p; h  a9 d3 n
三. 软硬兼施/ C0 Q+ G& P0 K4 Z4 E  u
采用软件和硬件结合的方法,需要对芯片的内部结构非常的熟悉。另外还有其他一些破解技术,例如电子探测攻击、过错产生技术等等,但是最终目的只有一个,就是能够模仿出目标MCU的功能就可以了。( \0 P( P9 R6 f" h2 R; \8 a$ ^% f. J# f

5 u4 r6 \/ K1 {8 S( K. T看到这里大家应该明白一个道理,破解MCU并不能做到把MCU中的程序原封不动的还原出来。目前的技术也做不到,至少国内应该做不到。针对以上情况,加密芯片应运而生,初期确实能很好的保护MCU的安全,但很快就被找到了漏洞。/ J, w' W) F* H. [  G3 F6 I
! w% P# m& ^1 ~+ k) U" [! B/ B( e* ~
我举个实际破解的例子分析一下,大家就能够明白了。
1 @% o- n5 s  Y) D5 @& W# [5 x
! Q6 [6 b& m4 Z; r加密原理:, v# Z' F* w1 u$ r' [' R
MCU和加密芯片各存储一条认证秘钥,存储同样的加密算法;
3 _. X) R) W8 N4 j$ SMCU产生随机数发给加密芯片,后者用秘钥加密后将密文返回,此时MCU解密后,比对明文是否和生成的随机数相等。如果相等,程序正常运行;如果不相等,出错处理。
' t+ t3 T' b0 l7 i8 k
* w0 `* F3 ?( f. j  y9 f0 r/ U; H因为盗版商没有这条秘钥,加密芯片与MCU交互的数据又是随机变化的,无法找到规律,所以只能把加密芯片的程序破解了,再复制一片加密芯片才能让MCU的程序跑起来。而加密芯片不同于通用MCU,它内部有很多安全机制,破解难度非常大。这种加密方案看似非常安全,但其实还是有漏洞的。
# b' W3 J$ R) M3 i3 {0 ^
; b# j- b% \% n  H8 l破解方法:
6 i7 G3 I1 W3 Z, f首先按照第二种破解方法,获取到MCU的HEX文件。此处省略N步,不再复述。使用软件进行HEX反编译,反编译软件目前有很多。
5 X1 A+ c& E0 M+ w0 \; U# m( j, b4 j
在反编译的程序中,找到对比点,比如图3所示,CJNE语句可能就是这个对比点。因此只要把箭头2那行语句删除,然后重新把汇编语言下载到MCU中,破解工作就完成了。此时即使没有加密芯片,MCU也能正常运行了。其实原因很简单。MCU是要对加密芯片的返回值进行判断的,那么不让他做判断,这样一来不管加密芯片返回值是什么,程序都能正常运行。& p: n3 \4 |# b/ D3 @

& @# x8 @- e; z4 _$ W8 O# u$ K+ T因此这种加密方案很快就被破解了。当然也不是这么绝对,因为有些MCU即使剖片也不能获得里面的HEX或者BIN文件,所以这种破解方案也要看MCU的安全等级够不够高。但是足以说明一个问题,这种通过对比加密结果来实现加密的方案,安全等级还是不够高,还是有破解漏洞的。
6 x- s- q( b. ^/ B因为篇幅有限,本文只做解密技术的简单介绍。所谓知己知彼,百战百胜,唯有了解了破解技术,才能更有效的做加密防护。1 @* E6 h/ j4 [+ o5 u7 v2 c% X

该用户从未签到

2#
发表于 2019-3-13 14:43 | 只看该作者
这个方法好啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-8 12:05 , Processed in 0.125000 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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