第二章:工控设备硬件基础

做固件逆向,第一件事不是拿IDA开干,而是先看板子。

我见过太多人,上来就对着二进制文件一顿分析,结果连Flash型号都没搞清楚。说白了,你连数据存在哪、怎么读都不知道,逆向个啥?

这一章,咱们聊聊工控设备的硬件基础。你不需要成为硬件设计专家,但得知道关键部件长什么样、怎么用。

2.1 常见工控主板架构

工控设备里,处理器架构就那么几种。我这些年拆过的板子,90%跑不出这三类:

  • x86:老牌架构,性能强。常见于PLC、工控机。比如西门子S7系列、研华工控主板。
  • ARM:低功耗、集成度高。现在新出的设备,尤其是IoT网关、RTU,清一色ARM。Cortex-A系列居多。
  • MIPS:曾经很火,现在少了。但一些老设备、路由器、部分PLC还在用。比如龙芯、某些Broadcom方案。

怎么区分?看芯片丝印。Intel/AMD是x86,Qualcomm/MTK/Allwinner是ARM,MIPS的芯片上通常有「MIPS」字样或特定编号。

我的习惯:拿到板子先拍芯片照片,然后去官网查Datasheet。别猜,猜错了方向全错。

2.2 Flash与RAM的分布

固件存在哪?存在Flash里。程序跑在哪?跑在RAM里。就这么简单。

但工控设备有个特点:Flash和RAM的分布方式五花八门。我遇到过最坑的一次,是某个PLC把固件分成了三块,分别存在三个不同型号的Flash里,还用了不同的总线。

2.2.1 Flash类型

类型 特点 常见型号
NOR Flash 字节寻址,可XIP(原地执行),容量小(1MB-64MB) Winbond W25Q系列、Macronix MX25系列
NAND Flash 页寻址,容量大(128MB-8GB),有坏块 Samsung K9F系列、Toshiba TC58系列
SPI Flash 串行接口,引脚少,速度一般 GD25Q系列、XT25F系列
Parallel Flash 并行接口,速度快,引脚多 Intel StrataFlash、AMD MirrorBit

我个人习惯:先看封装。8脚SOIC的基本是SPI Flash,48脚TSOP的可能是Parallel Flash。然后看丝印,查Datasheet确认。

2.2.2 RAM类型

RAM相对简单。工控设备常用:

  • SDRAM:老设备,比如SDRAM 16MB
  • DDR/DDR2/DDR3:现代设备,容量从64MB到2GB不等
  • SRAM:小容量、高速缓存,比如某些MCU内部

嗯,这里要注意:有些设备会把RAM和Flash封装在一起,比如eMMC+RAM的PoP封装。这种你没法单独拆,得用编程器读整个包。

避坑指南:我曾经遇到一个设备,Flash型号标的是W25Q64,但实际容量只有32MB。后来发现是厂家用了打磨片,重新打标。所以,别完全相信丝印,用编程器读一下确认容量。

2.3 串口与JTAG调试接口识别

这是逆向的入口。没有调试接口,你只能拆Flash读固件。有了串口或JTAG,你可以直接交互、调试、甚至dump内存。

2.3.1 串口(UART)

串口是工控设备最常用的调试接口。三根线:TX、RX、GND。波特率常见115200、57600、9600。

怎么找?

  1. 看板子上有没有排针,通常标有「UART」「DEBUG」「CONSOLE」字样。
  2. 如果没有标注,找4个一排的焊盘,或者靠近处理器的小排针。
  3. 用万用表测电压:TX脚在空闲时通常是3.3V或1.8V,RX脚可能是0V或高阻。
  4. 用逻辑分析仪抓波形,看有没有UART信号。

我常用的方法:拿示波器探头点各个可疑焊盘,看有没有方波信号。有方波的地方,十有八九是串口。

实战技巧:串口波特率不确定?用逻辑分析仪抓一段数据,测量最小脉冲宽度,然后算:波特率 = 1 / 最小脉冲宽度。比如最小脉冲8.68μs,那波特率就是115200。

2.3.2 JTAG接口

JTAG是更强大的调试接口。标准JTAG有5根线:TMS、TCK、TDI、TDO、TRST(可选)。

识别方法:

  • 看板子上有没有10针或20针的排针,通常标有「JTAG」「SWD」「DEBUG」。
  • ARM设备常用SWD接口(2根线:SWDIO、SWCLK),比JTAG更简洁。
  • 用万用表测:TCK脚通常有周期性时钟信号,TMS脚在空闲时是高电平。

我曾经遇到一个设备,JTAG接口被厂家用胶封住了。我拿热风枪吹开,发现里面是标准的20针JTAG。嗯,这种掩耳盗铃的做法,其实防不住有心人。

我的建议:如果找不到JTAG,可以试试用JTAGulator或类似工具暴力扫描。它能自动识别JTAG引脚,省去手动测量的麻烦。

2.4 知识体系结构图

下面这张图,帮你理清本章的核心逻辑:

工控设备硬件基础 - 知识体系 主板架构 x86 ARM MIPS Flash & RAM NOR Flash NAND Flash SPI Flash Parallel Flash RAM类型 调试接口 UART串口 JTAG SWD 核心目标:识别硬件 → 定位固件 → 获取调试入口

这张图把本章内容串起来了。你从主板架构入手,确定处理器类型;然后找Flash和RAM,知道固件在哪;最后找调试接口,获取交互入口。三步走,稳得很。

总结一下:工控设备逆向,硬件基础是第一步。别急着分析固件,先把板子摸透。架构、存储、接口,这三个搞清楚,后面的事就顺了。

公众号:蓝海资料掘金营,微信deep3321