硬件探针与接口识别:从电路板废墟中寻找生命信号
拿到一块陌生的电路板,第一件事是什么?不是急着上电,也不是翻 datasheet。我个人的习惯是——先找接口,再找测试点。这就像医生看病,先看脉搏在哪,再决定怎么下针。
嵌入式接口其实就那几种:UART、JTAG、SWD、SPI、I²C。你只要认得它们,就拿到了固件逆向的入场券。今天咱们就聊聊,怎么在电路板上把这些接口揪出来。
UART:最亲民的调试后门
UART 是串口,三根线:TX、RX、GND。很多设备出厂时,工程师会故意留一个 UART 接口做调试。说白了,这就是一个后门。
怎么找?看电路板上的排针。如果看到 3 根或 4 根排针挨在一起,而且旁边有丝印标注,比如 TX、RX、GND、VCC,那八九不离十就是 UART。
UART 的电压电平有两种:3.3V 和 1.8V。别直接用 5V 的 USB 转串口去怼,会烧芯片。我建议先用示波器或逻辑分析仪抓一下波形,确认电平后再接线。
| 接口 | 信号线 | 典型电压 | 空闲电平 |
|---|---|---|---|
| UART | TX, RX, GND | 3.3V / 1.8V | TX 为高电平 |
| JTAG | TMS, TCK, TDI, TDO, nTRST | 3.3V / 1.8V | TCK 有脉冲 |
| SWD | SWDIO, SWCLK, GND | 3.3V / 1.8V | SWCLK 有脉冲 |
| SPI | MOSI, MISO, SCLK, CS | 3.3V / 1.8V | CS 高电平 |
JTAG 与 SWD:调试接口的王者
JTAG 是 5 线接口,SWD 是 2 线接口。SWD 是 ARM 公司搞出来的简化版,说白了就是 JTAG 的阉割版,但够用。
怎么区分?看排针数量。JTAG 通常是 10 针或 20 针的排座,SWD 一般是 4 针或 5 针。但有个坑——很多厂商会把 SWD 和 UART 混在一起,比如 STM32 的调试口就是 SWD + UART 共用一组排针。
识别 JTAG/SWD 的方法很简单:用逻辑分析仪抓排针上的信号。如果看到一组有规律的脉冲,而且频率固定,那大概率是 TCK 或 SWCLK。TMS 和 SWDIO 的信号会随着 CPU 状态变化,波形看起来更随机。
逻辑分析仪与示波器:你的电子眼
没有逻辑分析仪,逆向就是盲人摸象。我建议入门买个 8 通道、100MHz 采样率的逻辑分析仪,几百块钱的就行。示波器嘛,至少 100MHz 带宽,双通道起步。
逻辑分析仪看数字信号,示波器看模拟信号。举个例子:你想看 UART 的波特率,逻辑分析仪直接解码;你想看 SPI 的信号质量,示波器看上升沿和下降沿。
逻辑分析仪的采样率怎么选?简单算一下:如果信号频率是 10MHz,采样率至少 50MHz,也就是 5 倍过采样。低于这个数,你抓到的波形会失真。
识别电路板上的测试点
测试点(Test Point)是工程师留下的后门。它们通常是小圆点或小方点,表面镀金或镀锡。怎么找?
- 看丝印: 标有
TP、TEST、J的,基本都是测试点。 - 看位置: 靠近 CPU 或主控芯片的排针,大概率是调试接口。
- 看走线: 用万用表蜂鸣档,测排针到 CPU 引脚的导通性。如果通,那就是调试口。
我个人的习惯是,先用万用表测所有排针对地的电阻。GND 对地是 0Ω,VCC 对地是几百 Ω 到几 kΩ。TX 和 RX 对地通常是高阻,但上电后会有电压变化。
知识结构图:接口识别流程
下面这张图,是我自己总结的接口识别流程。你照着走一遍,基本不会漏。
实战案例:从零开始识别一块路由器主板
去年我拿到一块 TP-Link 路由器主板,上面有 4 个排针,丝印写着 "J1"。我用万用表测了一下:
- 第 1 脚:对地 0Ω → GND
- 第 2 脚:对地 3.3V → VCC
- 第 3 脚:对地高阻,上电后 3.3V → 可能是 TX
- 第 4 脚:对地高阻,上电后 0V → 可能是 RX
然后用逻辑分析仪抓第 3 脚,看到一串 115200 波特率的 UART 数据。接上 USB 转串口,putty 一开,直接拿到 root shell。整个过程不到 10 分钟。
常用工具清单
| 工具 | 用途 | 推荐型号 |
|---|---|---|
| 万用表 | 测通断、电压、电阻 | Fluke 17B+ |
| 逻辑分析仪 | 抓数字信号、解码协议 | Saleae Logic 8 |
| 示波器 | 看模拟信号、时序 | Rigol DS1054Z |
| USB 转串口 | 连接 UART | FT232RL |
| JTAG/SWD 调试器 | 连接调试接口 | J-Link EDU |
嗯,接口识别这块,说白了就是多练。你拆的板子越多,看丝印的速度就越快。我刚开始做逆向时,一块板子要研究半天。现在拿到手,扫一眼就知道接口在哪。
记住一句话:电路板上的每一个排针,都是工程师留给你的线索。 别放过它们。