上节初步介绍一些硬件基础知识和分析硬件所需要的基本工具,本篇将讲述利用编程器直接读取芯片固件的方法。 为了读取 Flash 芯片的内容,有以下两种常用方式:
1、直接将导线连接到芯片的引脚,在通过飞线连接编程器,进行在线读取固件;
2、把芯片拆焊下来,通过烧录座编程器,离线读取固件。
通过夹具夹住芯片引脚,然后连接编程器读取芯片内容,通过编程器连接芯片需要注意引脚的顺序,在 IC 芯片上都会有一个小点,大多数情况下,小点对应的引脚即为芯片的第一脚,而连接编程器的导线也需要插入编程器上相应的引脚。
拆掉门禁外壳,通过电路图和芯片印字分析,在主板上有一颗 FM25F04A 存储芯片,通过夹具连接芯片到编程器,在通过专用编程器软件,对该芯片进行读取。
连接完成,确定引脚接线正确后,打开编程器对应软件,通过智能识别芯片ID,即可开始读取固件工作。 如无法识别,可根据印字说明,尝试类似的型号,一般情况下兼容。
点击读取,即可开始固件提取,成功之后会保存为 BIN 格式文件,打开即可看到 16 进制的内容,为下一步分析提供基础。
拆掉摄像头外壳,通过分析 PCB 上的各个 IC,找到 Flash 存储芯片。
在显微镜下,可以看到是一颗 25L64 型号的 Flash 芯片。
用夹具连接各引脚,并和编程器连接,进行固件读取。
识别到芯片型号为 GD25Q64,点击读取,读取完毕后按照提示保存到文件。
打开保存的 BIN 文件或者查看缓冲区,即可看到固件内容。
在Ubuntu中,用binwalk解包固件,做进一步分析。
打开外壳,在PCB背面发现一颗 Flash 存储芯片
通过显微镜发现芯片型号为 25L128。
连接编程器读取固件并保存。
打开外壳,发现 PCB 上有一颗 Flash 存储器,但厂商出于安全考虑,把芯片印字涂抹掉了。
在不知道芯片型号的情况下,我们连接该芯片,让编程器去尝试读取。
通过智能识别,发现编程器无法识别出具体型号,而因为 Flash 存储芯片的种类多样,通过查找又无法获得该路由器的具体参数,这时我们通过 UART 串口,读取出 UBOOT 启动信息,串口输出里面发现了该芯片型号为 W25Q128BV。
在编程器中选择该型号,成功提取出固件。
用 binwalk 解包固件。
拆掉外壳,背面嵌有一块 PCB,反面是 WIFI 处理芯片,正面为存储器,连接编程器。
通过印字分析为25芯片,存储大小为 2M 字节,尝试该型号芯片,成功读取固件。
在 PCB 上找到一块 25L128 型号的 Flash 存储芯片。
通过夹具连接编程器。
识别到芯片为 MX25L128,选择其中一种,成功提取固件。
用binwalk解包固件内容。
原文:https://www.cnblogs.com/edan/p/10374063.html