硬件逆向工程101: 电路板基础知识

想象一下,您手中拿着一个神秘的黑盒子,它的内部工作原理被层层硅片、焊料和软件锁住,神秘莫测。这就是硬件逆向工程的精髓——好奇心、技术技能和侦探工作的迷人融合。无论您是要深入研究汽车电子产品、消费类小工具还是工业系统,了解基础知识都是成功的关键。让我们深入了解硬件逆向工程101,透过汽车电子控制单元(ECU)的视角,揭开硬件逆向工程第一步和基本概念的面纱吧。


第一印象:工程师的直觉

第一眼看到电路板,就像看到了悬疑小说的开头。它究竟隐藏着什么秘密?逆向工程始于观察和推理。首先要识别显而易见的东西:

  • 连接器:大型填充式连接器通常是用于车载通信的CAN(控制器局域网)等信号接口。未填充的连接器可能隐藏着JTAG等调试接口,只要正确探测,就会发现其中的秘密。
  • 标记和布局:丝印标记、引脚标签和布局本身往往暗示着功能。引脚密集的区域可能包含电源管理,而分组引脚可能属于通信接口。

电源电路:电路板的心脏

电源电路是任何PCB(印刷电路板)的生命线。在汽车ECU中,DC-DC降压稳压器是标准配置,由系统基础芯片(SBC)管理,通常可处理多个电源域。通过以下元件可以找到电源电路的位置:

  • 大型电感器:大型电感器在电源区域占主导地位。电感器既可用于滤波输入电源电流,也可用作降压稳压器电路中的组件。
  • 大型电容器:每个电源轨上都装有电解电容,以平滑电压。通常,最大的电容器连接到稳压器的输入引脚和输出端。
  • 保护二极管:串联或并联(通常两种都有)配置可确保电压浪涌不会烧毁电子元件。与电源并联的TVS齐纳二极管可将任何异常电压短路,从而打开可恢复保险丝并保护ECU,而与电源线串联的整流二极管则可防止电流流向错误的方向。

了解电源的连接位置至关重要,尤其是当您在使用没有附带原理图或硬件的二手未知ECU时。与其他引脚相比,电源引脚通常较大,连接的线路也较粗。接地引脚通常直接连接到淹没PCB周围的接地区域。


变压器

汽车印刷电路板(PCB)上的变压器通常起着信号滤波器而非电源管理的作用。不同种类的变压器通常很容易在印刷电路板(PCB)上看到。找到通信中使用的变压器有助于跟踪相关接口必须连接到哪些引脚。

ECU上最常见的变压器类型是共模扼流圈,这是一种4引脚变压器,两侧匝数相等。它用于抑制CAN、FlexRay和汽车以太网等差分信号协议中的噪声。这些共模扼流圈连接到两个差分对:一个连接到外部连接器,另一个连接到相应的收发器。

有时,您还会在印刷电路板(PCB)上发现普通的以太网变压器。这些变压器不是汽车以太网,而是标准的IEEE 802.3以太网,通常安装在与OBD连接器相连的网关ECU上。

解码集成电路(IC):系统的大脑

集成电路是实现功能的关键,但识别集成电路需要耐心和智慧。下面介绍如何完成这项任务:

  • 零件号:在网上搜索打印的零件号或标记。如果直接匹配没有结果,请尝试各种字符串组合。
  • 勘误文件:即使芯片上没有写明实际的零件号,也会写明批次号,有时会在勘误表中报告批次号,从而揭示真正的零件号。
  • 专有组件:有些集成电路,如汽车微控制器(MCU),是为汽车制造商定制的。对于这些集成电路,可能不存在公开的数据表,但通过跟踪连接可以发现它们的作用。

收发器:通信转换

收发器(又称PHY)在逻辑电平和总线协议之间转换信号。以下是汽车系统中常见的类型:

CAN收发器

它们将逻辑电平信号(RX、TX)与差分总线信号(高、低)桥接起来。常见的例子包括:

  • Microchip MCP2551: 8引脚高速CAN收发器,可用于许多老式ECU和 Arduino/Raspberry Pi CAN屏蔽。波特率高达1Mbps。
  • NXP TJA1441: CAN FD(灵活数据速率)收发器,支持高达5 Mbps的波特率。引脚布局与MCP2551相同。
  • NXP TJA1059: 两个CAN收发器采用相同的14引脚封装,可在大多数德国ECU中找到。

其他协议

  • 汽车以太网:在MAC层与以太网相同,但物理接口不同,只有2根导线,可靠性更高。根据配置的不同,半双工或全双工速度可达1000 Mbps。
  • FlexRay: 差分协议旨在取代CAN,但实际上,它只是在需要额外速度的应用中对CAN进行补充。速度可达 10 Mbps。
  • LIN: 单线总线协议,通常用于简单的传感器和执行器。在逻辑级方面与UART极为相似。速度约为20 Kbps。
  • SWCAN: CAN的单线慢速版本,主要用于通用汽车。速度通常为33.3 Kbps。特殊的SWCAN收发器可以发送12V的尖峰电压来唤醒ECU。除此之外,普通的CAN收发器也可用于SWCAN通信(CAN低电平与接地信号相连,CAN高电平与总线相连)。

非易失性存储器

印刷电路板(PCB)上的存储芯片可存储固件和配置。识别这些组件并与之交互,可以获得有价值的见解:

  • 在一些现代ECU上有时会发现NAND闪存,用于存储某些片上系统(SoC)的固件。通常,这是在运行多用户操作系统(如Android或QNX)的大功率处理器中实现的。只需在电路板上焊接一些导线并使用SDIO协议,就能轻松转储这些固件。更现代的ECU使用UFS闪存芯片,这需要专门的转储器。
  • 与NAND闪存相比,EEPROM内存的存储容量更小,但写入周期更长,可靠性更高。这些存储器通常用于存储ECU的配置或记录数据(也包括里程表值)。个人脚注:在EEPROM中模糊数据并查看ECU如何反应可能会很有趣。

系统基础芯片(SBC):多任务奇迹

系统基础芯片(SBC)在单个芯片中集成了多种汽车功能。集成功能的一些示例包括:

  • 电源管理(例如DC-DC调节、低功率域电压调节、多功率域电压调节)
  • 通信收发器(LIN、CAN):当系统基础芯片(SBC)用作收发器时,通常会像其他收发器一样连接一个共模扼流圈。
  • 硬件监控(如果MCU行为不正确,则重置它)

有些系统基础芯片(SBC)是现成的组件(如TLE9461ES),有些则是为特定应用定制的。对这些芯片进行全面检查可为ECU的功能提供路线图。

结论

逆向工程硬件就像一层层剥开的洋葱,揭示出一个由互连、组件和设计理念组成的网络。有了适合的工具、好奇心和知识,即使是最令人生畏的印刷电路板(PCB)也能成为一本打开的书。

如果您遭遇挑战,我们的专业培训和研讨会可为您提供所需的专业知识和支持,让您自信地驾驭逆向工程。

“原创内容,转载请标明出处”

第一卷************** 不错的PDF电子书,共3个分卷,点我名字可以找全 第1部分 逆向101 第1章 基础 3 1.1 什么是逆向工程 3 1.2 软件逆向工程:逆向 4 1.3 逆向应用 4 1.3.1 与安全相关的逆向 5 1.3.2 软件开发中的逆向 8 1.4 底层软件 9 1.4.1 汇编语言 10 1.4.2 编译器 11 1.4.3 虚拟机和字节码 12 1.4.4 操作系统 13 1.5 逆向过程 13 1.5.1 系统级逆向 14 1.5.2 代码级逆向 14 1.6 工具 14 1.6.1 系统监控工具 15 1.6.2 反汇编器 15 1.6.3 调试器 15 1.6.4 反编译器 16 1.7 逆向合法吗? 17 1.7.1 互操作性 17 1.7.2 竞争 18 1.7.3 版权法 19 1.7.4 商业机密和专利权 20 1.7.5 美国数字千禧版权法 20 1.7.6 DMCA案例 22 1.7.7 许可证协议 23 1.8 代码范例与工具 23 1.9 结论 23 第2章 底层软件 25 2.1 高阶视角 26 2.1.1 程序结构 26 2.1.2 数据管理 29 2.1.3 控制流 32 2.1.4 高级语言 33 2.2 低阶视角 37 2.2.1 底层数据管理 37 2.2.2 控制流 43 2.3 汇编语言101 44 2.3.1 寄存器 44 2.3.2 标志位 46 2.3.3 指令格式 47 2.3.4 基本指令 48 2.3.5 范例 52 2.4 编译器和编译入门 53 2.4.1 定义编译器 54 2.4.2 编译器架构 55 2.4.3 列表文件 58 2.4.4 专用编译器 59 2.5 执行环境 60 2.5.1 软件执行环境(虚拟机) 60 2.5.2 现代处理器的硬件执行环境 63 2.6 结论 68 第3章 Windows基础知识 69 3.1 组件及基本架构 70 3.1.1 简要回顾 70 3.1.2 特征 70 3.1.3 支持的硬件 71 3.2 内存管理 71 3.2.1 虚拟内存和分页 72 3.2.2 工作集 74 3.2.3 内核内存和用户内存 74 3.2.4 内核内存空间 75 3.2.5 区段对象 77 3.2.6 VAD树 78 3.2.7 用户模式的内存分配 78 3.2.8 内存管理API 79 3.3 对象与句柄 80 命名对象 81 3.4 进程与线程 83 3.4.1 进程 84 3.4.2 线程 84 3.4.3 运行状态切换 85 3.4.4 同步对象 86 3.4.5 进程初始化顺序 87 3.5 应用程序编程接口 88 3.5.1 Win32 API 88 3.5.2 本地API 90 3.5.3 系统调用机制 91 3.6 可执行文件格式 93 3.6.1 基本概念 93 3.6.2 映像区段(Image Sections) 95 3.6.3 区段对齐(Section Alignment) 95 3.6.4 动态链接库 96 3.6.5 头部 97 3.6.6 导入与导出 99 3.6.7 目录 99 3.7 输入与输出 103 3.7.1 I/O系统 103 3.7.2 Win32子系统 104 3.8 结构化异常处理 105 3.9 结论 107 第4章 逆向工具 109 4.1 不同的逆向方法 110 4.1.1 离线代码分析 110 4.1.2 现场代码分析 110 4.2 反汇编器——ILDasm 110 4.3 调试器 116 4.3.1 用户模式调试器 118 4.3.2 内核模式调试器 122 4.4 反编译器 129 4.5 系统监控工具 129 4.6 修补工具 131 Hex Workshop 131 4.7 其他类型的逆向工具 133 可执行程序转储工具 133 4.8 结论 138 第2部分 应用逆向 第5章 未公开的技术 141 5.1 逆向和互操作性 142 5.2 基本原则 142 5.3 定位未公开的API函数 143 我们要找什么? 144 5.4 案例研究:NTDLL.DLL中的 5.4 Generic Table API 145 5.4.1 RtlInitializeGenericTable 146 5.4.2 RtlNumberGenericTableElements 151 5.4.3 RtlIsGenericTableEmpty 152 5.4.4 RtlGetElementGenericTable 153 5.4.5 RtlInsertElementGenericTable 168 5.4.6 RtlLookupElementGenericTable 1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值