不同ROM解密方法比较及掩膜ROM解密步骤
ROM是只读存储器,数据事先写入,只能读出,不会因为电源关闭而消失。这类似于电脑的硬盘,一般用来存储MCU的各项程序,以完成MCU的各项操作。ROM的类型有很多种:Mask ROM是在芯片生产过程中,增加一块Mask和若干道加工工序,将数据固化在芯片上;OTP ROM、EEPROM和Flash ROM是在芯片中放入相应的可编程单元,让客户对这些单元进行编程,自行将需要固化的程序写到芯片中。其中OTP只能编程一次,而EEPROM和Flash可以反复编程。
EEPROM和Flash,存储单元中所存储的数据是0还是1,是完全由存储单元的电学性能决定的。这样,要读出其中的数据,就只能通过电学的方法。当前的不少芯片,都设计有加密功能,在芯片数据写入之后,可以通过加密使得数据无法读出。要想得到已加密芯片内部存储的数据,需要对芯片进行反向分析,弄清楚芯片的加密原理,再针对性的对芯片做相应的解密操作,去除芯片的加密功能,然后读出其中数据。
Mask ROM,是在芯片加工过程中一次性固化需存储的数据,无需从芯片外部写入数据,因此一般没有数据读出通道。但芯片加工过程中写入了0/1数据,必然会在芯片内部留下物理痕迹,这样就能通过反向分析的方法,从这些物理痕迹入手,将芯片内部存储的数据读出。
OTP ROM,利用电信号编程,在芯片内部一次性的改变某些器件的电学性能,从而存储数据。之所以是一次性,是因为电学性能的改变是不可逆的,大部分都是破坏性的,比如烧断熔丝等。这样的写入操作同样会在芯片内部留下物理痕迹,这也为反向分析获取内部码点提供了可能。
Mask ROM解密步骤
1、查找MCU说明书,了解芯片的整体结构、运算逻辑单元(ALU)各项功能、数据总线及结构、存储器相关部分特点(不仅包括ROM,还包括RAM和各通用寄存器)等硬件相关信息同时熟悉MCU的指令集等软件相关信息。了解MCU的IO接口及应用特点。当然获取码点容量信息是必须的。
2、将样片开盖,获取芯片面积、线宽、层数,ROM面积、ROM类型等基本信息,通过各种实验手段获得芯片工艺特点。
3、将样片去层,获得ROM区域以及外围相关电路(包括译码电路和与之相关的数字电路)的各层显微相片,并完成图片拼接。
4、将样片码点染色,获得码点区域染色后的显微相片,并完成图片拼接。
5、提取码点,得到二维平面阵列码点。
6、分析ROM外围译码电路及与之相关的数字电路,得到码点顺序。
7、依据码点顺序对平面阵列码点进行重构,得到二进制文件。