简 介
MCU(Micro Control Unit),即微控制单元,又称单片微型计算机(Single Chip Microcomputer)或单片机。随着大规模集成电路的出现及发展,将计算机的CPU、RAM、ROM、定时计数器和多种I/O接口集成在一片芯片上,形成芯片级的计算机,对不同的应用做不同的组合控制。
其中的ROM(Read-Only Memory)是只读存储器,数据事先写入,只能读出,不会因为电源关闭而消失。这类似于电脑的硬盘,一般用来存储MCU的各项程序,以完成MCU的各项操作。ROM的类型有很多种:Mask ROM是在芯片生产过程中,增加一块Mask和若干道加工工序,将数据固化在芯片上;OTP ROM、EEPROM和Flash ROM是在芯片中放入相应的可编程单元,让客户对这些单元进行编程,自行将需要固化的程序写到芯片中。其中OTP只能编程一次,而EEPROM和Flash可以反复编程。
EEPROM和Flash,存储单元中所存储的数据是0还是1,是完全由存储单元的电学性能决定的。这样,要读出其中的数据,就只能通过电学的方法。当前的不少芯片,都设计有加密功能,在芯片数据写入之后,可以通过加密使得数据无法读出。要想得到已加密芯片内部存储的数据,需要对芯片进行反向分析,弄清楚芯片的加密原理,再针对性的对芯片做相应的解密操作(比如FIB电路修改),去除芯片的加密功能,然后读出其中数据。
Mask ROM,是在芯片加工过程中一次性固化需存储的数据,无需从芯片外部写入数据,因此一般没有数据读出通道。但芯片加工过程中写入了0/1数据,必然会在芯片中留下物理痕迹,这样就能通过反向分析的方法,从这些物理痕迹入手,将芯片内部存储的数据读出。
Mask ROM分类
数据存储,可以通过有无半导体器件(比如NMOS管)来区分0和1。
数据存储,也可以将半导体器件(比如NMOS管)全部加工出来,只是通过其连接与否来区分0和1。器件的连接又可以通过有源区(Diff)、金属(Metal)或者通孔(Via)来实现。
以上这两类ROM,均会在芯片表面留下图形化的物理痕迹,能通过显微相片直接识别出0/1来,这类码点称为“明码”。
数据存储,还可以通过改变半导体器件(比如NMOS管)的电学性能来区分0和1。在芯片加工过程中,使用一层Mask,将需要写0和需要写1的NMOS管子区分开来,对其中的一类NMOS管进行一次额外的掺杂,以改变它们的开启电压。再设计ROM外围电路,依据NMOS管的开启电压不同,从其电性能差异上识别出0/1。区分0和1的两种NMOS管,形状和连接关系均无任何区别,仅仅是掺杂稍有不同,因此无法通过图形识别直接区分它们,这也是此类码点被称为“暗码”的原因。
要想读出暗码,需要利用不同掺杂半导体材料跟特殊化学试剂的显示反应,对芯片进行码点染色,让它们呈现出差异性的颜色,以便识别0和1。
Mask ROM解密步骤
1、查找芯片Datasheet了解芯片的整体结构、数据结构、码点容量等。
2、将样片开盖,获取芯片面积、线宽、层数,ROM面积、类型等基本信息。
3、将样片去层,获得ROM区域以及相关电路的各层显微相片,并完成图片拼接。
4、将样片码点染色,获得码点区域染色后的显微相片,并完成图片拼接。
5、提取码点,得到平面阵列的码点。
6、分析ROM外围电路,得到码点顺序。
7、依据码点顺序对平面阵列码点进行重构,得到二进制文件。
成 功 案 例
近年来,我们已经成功解密了数百款各大MCU生产厂家的不同类型产品,积累了丰富的MCU解密经验。
MCU厂家 |
系列 |
型号 |
NEC |
uPD78K/K0/K0S |
uPD780103 |
uPD75XL |
uPD754202 |
|
uPD17K |
uPD17107 |
|
V850 |
uPD703003 |
|
Hitachi |
H8/300 |
HD6433308 |
H8/300L |
HD6433644 |
|
H8/300H |
HD6433687 |
|
H8S/2000 |
HD6432357 |
©2006-2018 北京福瑞创新科技有限公司. All rights reserved. |