新闻详情

新闻详情

首页 / 资讯中心 / 详情

IC逆向实操综述:从芯片开盖到网表恢复的完整链路解析

发布时间:2026/10/2 12:16:07来源:尧图网络
IC逆向实操综述:从芯片开盖到网表恢复的完整链路解析
这两年IC逆向的热度又起来了。TCHES‘2026那边放出的征稿方向里硬件安全、物理攻击、芯片反向分析占了不小篇幅不少做数字IC、嵌入式固件、甚至前端验证的朋友都跑来问我逆向到底该从哪下手是不是一定要上FIB和SEM我的答案是先别急着买设备把链路和工具搞清楚比什么都重要。这篇就当是一份IC逆向的实操综述面向想入门的硬件工程师、安全研究员以及单纯想搞懂逆向到底在逆什么的数字IC学习者。我会把从芯片开盖到网表恢复的物理层链路、从固件提取到代码分析的嵌入式链路、还有前端验证视角下怎么看待逆向结果一次讲清楚。里面所有经验都来自实际项目趟坑不是PPT式科普。1. IC逆向到底是什么为什么2026年又火起来了1.1 从芯片考古到安全必修课IC逆向工程简单说就是把一粒成品芯片还原成可理解的设计信息。这个可理解可能是晶体管级电路图可能是逻辑门级网表也可能只是一份固件源码。早期这活儿确实像考古买一颗竞品芯片小心开盖放显微镜下拍几千张照片再一点点拼接出版图就为了搞清楚对方用了多大的SRAM、怎么排布电源网络。但到了2026年前后行业风向已经完全变了。芯片供应链全球化程度越来越深一颗SoC可能是多个国家、十几家IP供应商合作的产物里面到底有没有被植入硬件木马、有没有偷偷改过的RTL、有没有不按文档工作的调试后门单靠RTL代码审查很难查干净。这时候从物理芯片反向提取出来的网表就成了最后一道验证手段。换句话说逆向工程已经从用来抄作业的考古学变成了用来查作业的安全审计学。另一个推动热度上升的原因是AI辅助EDA工具的成熟。以前从版图里手动识别标准单元一个熟练工程师一天也就能处理几千个门遇到百万门级芯片直接绝望。现在用深度学习做图像分割、用图神经网络做模块分类很多重复劳动可以被自动化扛下来门槛一下子低了不少。TCHES‘2026的征稿里就明确列了AI/ML for hardware reverse engineering这类方向说明学术圈也达成了共识逆向不再是手工活而是算法活。1.2 TCHES2026与行业风向这里先补充一个背景TCHES全称是Transactions on Cryptographic Hardware and Embedded Systems跟传统的CHES会议一脉相承主要收录密码硬件、嵌入式系统安全、物理攻击方向的高质量论文。它的周期很快一年好几期所以很多新idea会第一时间出现在这里。2026年的投稿主题里我特别注意到几个跟逆向强相关的方向硅前与硅后硬件木马检测强调在GDSII/版图层面做安全验证本质就是把逆向恢复出的网表和设计意图做等价性对比。物理攻击自动化包括半自动/全自动的FIB目标定位、SEM图像处理、版图到网表的自动化重建。侧信道与故障注入的逆向辅助先逆向出电路结构再决定在哪里注入故障最有效两者形成闭环。开源PDK与开放硬件下的逆向研究有了开源工艺库研究者可以用模拟数据训练逆向算法这给机器学习方法提供了大量干净样本。在我看来TCHES‘2026最值得关注的不是某个具体技术而是它把逆向工程从地下经验拉到了学术方法的台面上。过去你想讨论怎么给芯片开盖而不伤顶层金属只能在论坛里看几行模糊的回复现在这类问题会出现在论文的方法学部分有系统性的实验对比和失败案例分析。对从业者来说这意味着学习路径更加清晰了照着论文的流程走比自己瞎试水要靠谱得多。当然TCHES终究是学术会议里面的方法大多偏向研究验证离量产产线上十分钟逆一颗芯片还有距离。但方向是对的把整个逆向流程拆成可以度量、可以复现的模块每个模块都有输入输出定义和质检指标。我这几年的经验是能用这种工程化思路去拆解逆向项目成功率至少翻一倍。2. IC逆向的完整技术链路拆解2.1 从封装到硅片物理准备阶段IC逆向的第一关是把芯片从封装里解放出来。绝大多数芯片都被环氧树脂、塑料、陶瓷保护着想看到硅片就得先开盖。这个过程最怕两件事一是把芯片弄裂二是把顶层金属腐蚀掉。顶层金属一旦破坏后面拍出来的图像就缺了最关键的一层整个网表恢复直接报废。我自己的实验流程大致是分三种方案化学开盖用发烟硝酸或浓硫酸加热处理。温度一般控制在60到80摄氏度每次滴几十微升看到树脂开始鼓泡就立刻用丙酮清洗。关键在于少量多次一次滴太多酸会把芯片内部金属层也腐蚀出孔洞。激光开盖专用于陶瓷或金属封装。用激光烧掉外壳优点是精确缺点是有热效应如果功率没调好硅片边缘会碳化导致附近电路短路。建议先用废芯片调参数。机械磨削适合需要保留完整封装外壳的场合。用磨片机从背面慢慢磨时不时用显微镜查看厚度磨到接近硅片时就改为手工研磨。这个方法干净但很费时间一不留神就磨穿。开盖完成后还有一步容易忽略的预处理染色。拿化学染色剂在特定化学试剂里浸泡硅片几秒钟再烘干可以让不同的掺杂区域N型、P型在显微镜下呈现不同颜色这样识别晶体管源漏区就轻松多了。经验是染色时间宁可短也不要长过度染色会让所有区域糊成一片反而认不出边界。2.2 图像采集与版图提取硅片处理好了接下来就是拍照。通常用金相显微镜加CCD相机或者直接上扫描电子显微镜SEM。SEM分辨率高能拍到几十纳米级的金属线条但成本高、速度慢光学显微镜速度快配合高倍物镜也够处理0.18微米以上的老工艺芯片。拍照环节的痛点是图像拼接和对焦。一片芯片如果放大到1000倍视场就只有几百微米要覆盖整个die得拍几千张。所以必须用自动载物台按固定步距移动全程保持自动对焦和均匀照明。拍出来的照片再用ImageJ或专用拼图软件合成一张大图。我踩过的坑是光照不均匀会导致拼接处出现明暗条纹后面做图像分割时误判率飙升。解决办法是拍照前把光源亮度调到中间值用同一块参考样片反复校准。拿到整层大图后还要层层剥离硅片。每拍完一层就用反应离子刻蚀或湿法腐蚀削去一层材料再拍下一层。这个过程需要精确控制蚀刻速率否则会把层间介质和通孔结构一并干掉。版图提取的最终产物是一组对齐的多图层图像每一层对应特定的布线、多晶硅或扩散区域。之后才是真正的版图矢量化把图像里的多边形转换为坐标数据。这里可以用开源工具KLayout读入GDSII格式或者用自己训练的识别模型把金属、过孔、多晶硅分类提取。对于老工艺人工校准几个单元后自动识别就能有不错的准确率对于先进工艺图像噪声和光学邻近效应会把简单任务变成硬骨头这时候就得靠SEM加深度学习分割了。2.3 网表恢复与模块识别版图只是照片要变成电路理解还得靠网表恢复。流程一般是先从版图里识别出晶体管栅极、源漏、衬底然后根据晶体管互连关系提取出电路原理图再把晶体管连接转化为逻辑门比如与门、或门、锁存器最后形成门级网表。这一步的难点在于标准单元库不匹配。同样一个D触发器不同工艺库的画法可能差很多直接拿公开库的版图做模式匹配会漏掉很多单元。我的建议是先从不认识电路功能的角度出发只根据晶体管尺寸和连接关系做功能分类分完再人工抽查几个典型区域确定对应关系。这样做虽然慢但胜在不出系统性的误判。模块识别更像找地标。在网表里SRAM阵列通常表现为规则排列的存储单元加外围译码电路ROM更明显通过位线模式直接能读出数据。一旦找到这些大块芯片的大致功能分区就出来了CPU核、Cache、外设接口、电源管理全都能在布局上对上号。这里有个很实用的技巧先找时钟树综合出来的那一大片均匀缓冲器它们往往代表着数字逻辑主区域顺着时钟网络就能摸清总线和控制器的骨架。网表恢复结束后想验证恢复结果是否准确最土也最有效的办法是做一致性抽检。把你恢复出来的网表里某个子模块跟实际芯片用探针台量测出来的信号对比一番。如果几十个关键节点都吻合那整体精确度基本就在可控范围内。3. 固件级逆向单片机与嵌入式设备的捷径3.1 固件提取的几种常见入口很多场景下我们根本不需要倒腾硅片。目标设备用的是普通单片机或SoC里面的程序存在Flash或ROM里只要把固件读出来就可以直接做代码级分析和算法还原。相比物理版图逆向这条路快得多也便宜得多。常见入口有这么几个调试接口JTAG或SWD口如果没被锁死直接用调试器连接读取Flash。效率和成功率都很高。很多开发板默认留了调试口这就是审计自有设备时的首选。Bootloader串口有些芯片内置或外挂了UART bootloader通过特定引脚电平进入下载模式再用官方工具导出固件。SPI Flash直读把板子上的SPI Flash芯片拆下来放到编程器上直接读。这个方法最通用因为很多物联网设备都用一颗通用SPI NOR Flash保存固件。BGA焊盘飞线针对封装很小、不便拆焊的Flash可以用漆包线飞线连接SPI引脚或者用烧录夹夹住DIP8封装。但记住这是最后手段飞线寄生电容和信号串扰足以让通信失败。必须强调以上所有方法都应当只用于自己持有、或已获得明确授权的设备。逆向工程在清产权和知识产权的边界上是有争议的但技术本身无罪关键在边界。3.2 固件分析的实操思路固件拿到手之后第一步别急着反汇编先做体检用binwalk扫描看有没有文件系统、压缩数据、签名结构计算熵值如果整片数据熵都很高大概率是加密过的这时得先找解密密钥不然没法继续看头部和中断向量表判断CPU架构。比如ARM Cortex-M的中断向量表前几个字是初始SP和复位PC一眼就能认出来。strings命令提取可打印字符串很多时候厂商没做混淆敏感信息直接暴露。架构确定后我习惯用Ghidra做反汇编和分析。Ghidra有自动分析功能能识别函数边界和调用关系虽然反编译的C代码不一定完全正确但作为阅读指导已经足够。重点看main函数、外设初始化、中断处理函数以及所有与通信协议相关的代码。如果是加密固件就搜索密钥常量或AES的查找表经常能直接钉死算法。实际案子里最耗时的不是读懂代码而是恢复外围设备的内存映射。芯片手册不会告诉你固件里用到的特殊寄存器地址对应什么硬件你得通过审计代码里的外设基地址再跟数据手册交叉比对。这时候配合硬件平台做动态验证能省一半时间。3.3 结合硬件的动态调试静态分析只能告诉你可能是什么动态调试才能告诉你实际是什么。用调试器单步执行代码观察寄存器跳转和外设状态能快速验证你从反汇编里读出的逻辑。我常用的动态手段有三种调试器实时执行在关键函数入口下断点通过JLINK或ST-LINK连接单片机观测变量和寄存器。逻辑分析仪抓信号挂在外设总线上比如UART、SPI、I2C看控制器发出的实际波形。这在分析通信协议时几乎是唯一可靠的方法。示波器测电平比逻辑分析仪更底层可以量毛刺、测时序裕量尤其适合判断某个引脚是不是有复位信号干扰。印象很深的一次经历我们逆向一台小型工控设备的固件静态分析发现它会在某个条件下调用一个芯片内部的温度补偿函数但怎么都找不到补偿算法用到的参数表。后来用逻辑分析仪抓它读外部EEPROM的时序才发现参数表不是存在Flash里而是运行时通过I2C从一颗专用传感器里读出来的。这个事实光看固件是永远看不出来的因为固件里只有访问传感器的代码没有数据本身。所以我的建议是固件逆向千万别做纯纸面功夫有条件一定要上手实际板子。很多关键信息只会在真实上电运行的那一瞬间暴露出来。4. 数字IC设计角度逆向视角下的前端与验证4.1 为什么数字IC设计者也要关注逆向这个标题可能让不少做数字IC前端的朋友觉得奇怪我好好写RTL为什么要关心逆向其实原因很实在。现在数字IC学习的热度很高但大部分人只关心怎么写代码、怎么跑仿真、怎么综合忽略了别人拿到你的芯片之后能逆向出什么这个问题。可一旦你的芯片里有第三方IP、有购买的硬核、有合作方提供的加密模块你就无法完全保证最终芯片实现的逻辑真的跟你的RTL一致。逆向思维在这里就是一个反向验证工具从最终芯片还原出网表再拿网表和RTL做逻辑等价性检查。如果发现实现里多了一个不在RTL中的状态机或者少了一条关键路径那就要警惕是不是被植入后门了。这正是TCHES‘2026强调的硅后安全验证思路——假设设计者不可信从硅片侧直接找证据。具体到岗位动作数字IC设计者至少应该会做两件事一是读懂别人逆向出来的网表结构知道哪些地方是标准单元哪些是定制存储二是能把网表中的某个模块映射回自己写的RTL模块上比如看到一组异或链就意识到这是CRC校验逻辑这样在评估第三方IP时能快速定位可疑区域。4.2 时序图与波形分析在逆向中的使用说到数字IC与时序有一个热词很有意思可以实时手绘时序图的网页数字IC。这指的是Wavedrom这类工具它能把简单的时序描述文本渲染成波形图。很多人把它当成文档工具但在逆向场景里它还有更妙的用处当你在逆向中搞不清某个总线协议或状态机行为时把观察到的信号高低电平序列画成时序图再对照IP手册一眼就能看出握手信号对不对。举我自己的例子我们在逆向一块网络控制器芯片时发现它的DMA描述符环管理逻辑特别复杂静态看网表根本看不明白控制流。我干脆把从逻辑分析仪抓到的地址总线、读写信号、中断请求信号全部转成Wavedrom时序图按时间轴排好再用状态机的方式把每个阶段命名。不到半天就理清了空闲-解析描述符-搬运数据-回写状态-触发中断的整体流程。反过来如果只抱着一大堆波形十六进制数据看肯定早就晕了。所以我的建议是数字IC学习过程中一定要养成手绘时序图的习惯。不管是做验证还是做逆向能把抽象的协议画成直观的波形就等于把问题解决了一半。工具可以是Wavedrom也可以直接拿纸笔画关键是建立信号间的时间关系。4.3 验证思路的逆向反哺做验证的朋友总问逆向结果能怎么用在UVM环境里其实可用的点非常多。最直接的是把逆向得到的FSM作为参考模型哪怕是部分参考也能帮验证工程师补出很多定向用例。比如你从上位的版图还原出一个状态机的转移表发现它在收到连续三个错误响应后会进入安全锁定状态那就可以写一个sequence专门触发这条路径看DUT是否真的按规定工作。另一个方向是覆盖率分析。传统随机约束生成看起来能覆盖各种情况但常常漏掉实际芯片里才存在的边界状态。逆向出的网表可以帮助你识别哪些状态没有真正被覆盖到然后针对性地加约束或者写定向case。这比盲目调seed更有效率因为你是直接对着真实存在的电路形态找漏洞而不是对着想象空间穷举。更进一步如果做的是安全验证还可以把故障注入当成一种特殊验证手段。先用逆向确认某个目标寄存器在版图上的物理位置然后用激光或电磁注入故障观察系统会不会跳过校验。这在TCHES文章里叫fault attack simulation for security verification本质就是把SHA-256或AES这类模块的物理实现看成一坨带时序约束的逻辑通过注入毛刺来验证它是否具备抗故障攻击能力。这个能力在车规、工控、安全芯片领域特别吃香。5. 常见问题与排查经验实录5.1 芯片开盖失败与样品损坏这是我被问得最多的一类问题。开盖失败的典型表现是硅片边缘碎裂、顶层金属被腐蚀、芯片表面出现大量气泡孔。原因往往就是加热温度过高、酸液停留时间太长。我自己用发烟硝酸开盖的参考参数是温度70摄氏度每次腐蚀时间控制在10秒以内滴酸之后立刻在显微镜下观察一旦树脂变软但没有完全溶解就用丙酮冲洗然后再重复。如果不小心把硅片弄碎了也不要马上放弃。碎成两三块的话还可以拼回去继续拍图只是对拼接算法要求比较高。我建议是备一批废弃芯片先拿不值钱的练手用相同工艺的芯片调好温度和时长再对目标样品下手。另外操作必须在通风橱里进行发烟硝酸和它的蒸气都不是闹着玩的必须戴耐酸手套和护目镜。5.2 图像拼接模糊与对焦问题拍图环节最常见的抱怨是图片拼出来有重影。这个问题多半不是相机问题而是载物台移动的步距和图像重叠区域没设置好。我一般设置重叠区域30%以上让拼接算法有充足的特征点用于对齐。同时每拍完一行就要检查一下对焦偏移因为硅片不是绝对平整显微镜自动对焦在边缘位置容易失效。如果已经拼出模糊大图不要急着手动修复先试试ImageJ的Grid/Collection stitching插件或者直接用OpenCV的特征匹配做全局优化。实在不行就分成几个小区域单独拼接再以明显特征点比如SRAM阵列的重复单元作为锚点手动对齐。记住宁愿多拍50张也不要因为省时间导致后期花五倍时间清理数据。5.3 固件加密与绕过思路遇到固件加密是最让人头大的。整颗Flash读出来熵值很高binwalk什么都找不到strings也几乎空白。这时候第一反应不应该是一味去暴力破解密钥而是要旁路加密本身。有几个现实可行的思路从运行时内存转储让设备正常启动使用调试接口把SRAM内容dump出来这时候运行中的固件已经被解密了能直接分析。利用引导ROM漏洞有些芯片的BootROM先于Flash加载执行如果它没有做签名校验就能通过恶意payload让设备把解密后的固件写到调试口。监控内部总线在一些设备上CPU从Flash读取后会自动解密但总线上数据是明文。可以用逻辑分析仪挂在CPU和Flash之间抓取不过现代SoC很多已经把这个流程挪到片内了。必须提醒一句上面这些手段只能用于自己拥有或获授权的设备否则涉及违法。实际项目中最好的处理方式是把加密问题前置在设计阶段就评估是硬件解密还是软件解密然后决定该把功夫花在绕过加密还是直接做物理攻击。5.4 工具链选择建议做IC逆向不一定非要顶级商业工具。我自己常用的组合是开源加轻量商业工具混合版图查看和编辑KLayout。免费支持大文件GDSII读写还能写Python脚本批量操作图层非常适合做版图后处理。图像处理和拼接ImageJ加插件配合OpenCV脚本做自动化批量处理。晶体管/门级网表重建开源的有SPICE层面的提取工具比如Netgen再辅助自写分类脚本。商业方案有ChipWorks的SystemSep功能强但价格不菲。固件逆向Ghidra是主力配合binwalk、strings、熵分析脚本。动态调试JLINK调试器加OpenOCD逻辑分析仪用Saleae家的性价比很高。如果预算有限我个人推荐的起步配置是一台带高倍金相显微镜的改造成本大约几千元配合KLayout和Ghidra再加一个一百多块钱的SPI编程器就能对付大部分160nm以上老工艺芯片和绝大多数物联网固件。等你真正跑通一个完整项目再决定要不要投资SEM和FIB。最后再分享一个小技巧开了这么多篇幅最后说一个很多文章不会提但非常影响效率的细节给每个逆向项目建一个特征库。无论是标准单元的形状、特定IP的版图指纹、还是固件里常见的启动代码片段都可以整理成可检索的库。下一次遇到相似工艺或相似架构直接用模板匹配和哈希检索能省掉至少一半重复劳动。我自己就是从第二次逆向项目开始养成了这个习惯现在很多活儿半小时内就能判断这颗芯片是不是以前见过的那颗的改版。如果你正准备上手IC逆向别想着一步到位买全套设备。先拿一个简单的小家电控制板或者淘汰的路由器练手从固件提取开始再到开盖拍图走通一次完整链路比看十篇综述都有用。等你在实际项目里踩过两三次坑再回头看TCHES‘2026那些论文会发现里面的每个方法都对应着某种痛点——那时候你就真的入门了。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

STM32CubeMX深度配置指南:从安装到时钟树与外设驱动生成 2026/10/2 13:06:34

STM32CubeMX深度配置指南:从安装到时钟树与外设驱动生成

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
OT逆向工程实战:从固件提取到协议还原的完整路径 2026/10/2 13:06:33

OT逆向工程实战:从固件提取到协议还原的完整路径

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
知识图谱存储与检索实战:Neo4j+MinIO+Milvus三路混合检索 2026/10/2 13:06:27

知识图谱存储与检索实战:Neo4j+MinIO+Milvus三路混合检索

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
JavaScript typeof 操作符深度解析:值分类原理与企业级类型判断实践 2026/10/2 13:06:27

JavaScript typeof 操作符深度解析:值分类原理与企业级类型判断实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
GRA-LSTM负荷预测模型:解耦冷热电耦合关系的工程实践 2026/10/2 13:06:27

GRA-LSTM负荷预测模型:解耦冷热电耦合关系的工程实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
128x64 OLED多级菜单设计:用纯C在STM32上实现轻量级导航 2026/10/2 13:06:27

128x64 OLED多级菜单设计:用纯C在STM32上实现轻量级导航

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉