简  介

  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分类

  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.