跳转到主要内容

如何读取、修改嵌入式产品Flash中内容?

cathy 提交于

本文将介绍如何拆焊Flash芯片,设计及制作相应的分线板。了解对嵌入式设备的非易失性存储的简单有效攻击手段。这些攻击包括:

<ul>
<li>
<p>读取存储芯片内容</p>
</li>
<li>
<p>修改芯片内容</p>
</li>
<li>
<p>监视对存储芯片的读取操作并远程修改(中间人攻击)</p>
</li>
</ul>
<p>想想,当你拆开一个嵌入式产品,却被挡在Flash之外,好奇的你一定想对它一探究竟。</p>
<p>那么,下面我们就开始。</p>
<p><strong>拆焊Flash芯片</strong></p>
<p>为了读取Flash芯片的内容,有以下两个基本途径:</p>
<ul>
<li>
<p>直接将导线连接到 芯片的引脚</p>
</li>
<li>
<p>把芯片拆下来,插到另一块板子上</p>
</li>
</ul>
<p>下面介绍的Flash为BGA(球形栅格阵列)封装——无外露引脚。因此,只能选择拆焊的方法。</p>

<center><img src="http://mcu.eetrend.com/files/2021-11/wen_zhang_/100555335-227291-1.jpg&…; alt=“图:目标芯片"></center><center><i>图:目标芯片</i></center>

<p><strong>拆焊法的优点:</strong></p>
<ul>
<li>
<p>可避免对电路板上其他器件造成影响;</p>
</li>
<li>
<p>可以很容易看到芯片底部的布线;</p>
</li>
<li>
<p>可用其他芯片或微控制器代替原芯片。</p>
</li>
</ul>
<p><strong>一些不便之处:</strong></p>
<ul>
<li>
<p>电路在缺少完整器件的情况下无法运行;</p>
</li>
<li>
<p>在拆卸过程中,一些邻近器件可能被损坏;</p>
</li>
<li>
<p>如果操作不恰当,Flash本身可能毁坏。</p>
</li>
</ul>
<p>OK,拆焊是吧?你看,下图所示的热风枪简直就是神器。只要将芯片周围加热,便可以很容易地拿下芯片:</p>

<center><img src="http://mcu.eetrend.com/files/2021-11/wen_zhang_/100555335-227292-2.jpg&…; alt=“图:热风枪拆焊"></center><center><i>图:热风枪拆焊</i></center>

这种办法简单、快速只是可能伤及无辜——焊掉邻近的元件,所以,务必小心翼翼。

下图显示芯片拆下后PCB的布线。观察图片,猜想底部的两列引脚为空引脚,因为他们压根就没接入电路。

<center><img src="http://mcu.eetrend.com/files/2021-11/wen_zhang_/100555335-227293-3.jpg&…; alt=“图:拆焊下来后"></center><center><i>图:拆焊下来后</i></center>

<strong><font color="#004a85">用KiCAD定制分线板</font> </strong>

现在该做什么?BGA封装简直就是一团糟,依然无法外接导线。

一种可行的方法是制作分线板。通常,分线板是将芯片的所有针脚的位置“镜像”下来,这样就能将芯片的引脚引接出来。

为此,我们首先要搜集芯片的相关信息。大多数情况下,芯片的型号都印制在芯片上,这样我们就很容易识别。如上图,芯片上第一行为MXIC代表Macronix International公司,第二行为芯片的具体型号MX25L3255EXCI datasheet 。以下为datasheet资料:

<center><img src="http://mcu.eetrend.com/files/2021-11/wen_zhang_/100555335-227294-4.jpg&…; alt=“图:针脚排布"></center><center><i>图:针脚排布</i></center>

<p> PCB的设计可由KiCAD ,常用的EDA软件实现。</p>
<p>    分线板的设计过程与其他PCB板一样:</p>
<ul>
<li>
<p>新建电路板,画出电路简图,标明元器件的具体型号</p>
</li>
<li>
<p>确定芯片的具体尺寸<br />
</p>
</li>
</ul>
<p>根据之前datasheet的资料。我们添加1个4×6的网格作为整个芯片的BGA封装,2个1×4的网格作为连接芯片8个有效引脚的接线柱。最后一步是,用线路将这些器件连接起来:</p>

<center><img src="http://mcu.eetrend.com/files/2021-11/wen_zhang_/100555335-227295-5.jpg&…; alt=“图:step2"></center><center><i>图:step2</i></center>

转接板的设计到此为止,接下来是如何把设计转化成的PCB。

<strong><font color="#004a85">PCB制作</font> </strong>

PCB就像是由两层铜和一层基板压制成的三明治,导线分布在铜上面。

根据制作流程,分为:

<ul>
<li>
<p>蚀刻法</p>
</li>
<li>
<p>数控铣法</p>
</li>
</ul>

以下为两种方法的具体步骤。

<strong>蚀刻法</strong>

蚀刻,即是用化学药品逐步除去铜的过程。我们先用油墨保护覆铜板上的线路及要保留下来的铜。

1、首先,用热转印法制作PCB。PCB电路图用激光打印机打印在亮光纸上。然后,把亮光纸紧贴在覆铜板上,加热和施以压力,使亮光纸上的电路图转印到覆铜板上。通常,这个过程用熨衣服的熨斗即可完成,但是专用的压制器会使加热及受力更加均匀,更容易成功。

2、接下来是蚀刻,将整块PCB板浸没在腐蚀液,以此来去除多余的铜。

蚀刻后的分线板,转印的墨粉还附着在上面:

<center><img src="http://mcu.eetrend.com/files/2021-11/wen_zhang_/100555335-227296-6.jpg&…; alt=“图:step3"></center><center><i>图:step3</i></center>

除去墨粉后:

<center><img src="http://mcu.eetrend.com/files/2021-11/wen_zhang_/100555335-227297-7.jpg&…; alt=“图:step4"></center><center><i>图:step4</i></center>

现在可以准备手工焊接了。微型焊接与正常焊接一样,只是器件的尺寸极小,因此需要借助显微镜。

此外,传统的焊接用的是线状的焊锡丝,而BGA微型焊接用的是锡球。

<center><img src="http://mcu.eetrend.com/files/2021-11/wen_zhang_/100555335-227298-8.jpg&…; alt=“图:step5"></center><center><i>图:step5</i></center>

接下来,开始重整锡球:

<ul>
<li>
<p>将一个新的锡球放置在凹槽上,加热,熔化锡球;</p>
</li>
<li>
<p>校准芯片和板子;</p>
</li>
<li>
<p>回流。</p>
</li>
</ul>

<center><img src="http://mcu.eetrend.com/files/2021-11/wen_zhang_/100555335-227299-9.gif&…; alt=“图:step6"></center><center><i>图:step6</i></center>

锡球重整完成:

<center><img src="http://mcu.eetrend.com/files/2021-11/wen_zhang_/100555335-227300-10.jpg…; alt=“图:step7"></center><center><i>图:step7</i></center>

芯片焊接完成后的最终结果:

<center><img src="http://mcu.eetrend.com/files/2021-11/wen_zhang_/100555335-227301-11.jpg…; alt=“图:step8"></center><center><i>图:step8</i></center>

<strong>数控铣</strong>

作为替代方法,数控铣仅是将需要的线路和剩余的铜隔离开来而已。

(1)5X5的BGA通常用于制作 PCB,而4X6的常用于分线板。我们设计5X5的是为了该分线板可以直接插接在通用EEPROM 编程器的ZIF插槽里,电路简图如下:

<center><img src="http://mcu.eetrend.com/files/2021-11/wen_zhang_/100555335-227302-12.jpg…; alt=“图:step9"></center><center><i>图:step9</i></center>

(2)芯片的尺寸与前面设计的4X6的一样,只是网格变成5X5,板上的布线也稍显复杂:

<center><img src="http://mcu.eetrend.com/files/2021-11/wen_zhang_/100555335-227303-13.jpg…; alt=“图:step10"></center><center><i>图:step10</i></center>

(3)由于KiCAD无法直接生成与数控铣兼容的目标文件,因此,我们用Flatcam接收Gerber文件并确定数控铣隔离的导线的路径:

<center><img src="http://mcu.eetrend.com/files/2021-11/wen_zhang_/100555335-227304-14.jpg…; alt=“图:step11"></center><center><i>图:step11</i></center>
<center><img src="http://mcu.eetrend.com/files/2021-11/wen_zhang_/100555335-227305-15.jpg…; alt=“图:step12"></center><center><i>图:step12</i></center>

(4)接下来将生成的STL文件导入bCNC——数控铣的终端控制程序,如下图所示:

<center><img src="http://mcu.eetrend.com/files/2021-11/wen_zhang_/100555335-227306-16.jpg…; alt=“图:step13"></center><center><i>图:step13</i></center>

雕刻过程中:

<center><img src="http://mcu.eetrend.com/files/2021-11/wen_zhang_/100555335-227307-17.jpg…; alt=“图:step14"></center><center><i>图:step14</i></center>

(5)板子雕刻完成:

<center><img src="http://mcu.eetrend.com/files/2021-11/wen_zhang_/100555335-227308-18.jpg…; alt=“图:step15"></center><center><i>图:step15</i></center>

最终结果:

<center><img src="http://mcu.eetrend.com/files/2021-11/wen_zhang_/100555335-227309-19.jpg…; alt=“图:step16"></center><center><i>图:step16</i></center>

(6)下一步,涂覆阻焊层,保护铜不被氧化,并用紫外灯固化:

<center><img src="http://mcu.eetrend.com/files/2021-11/wen_zhang_/100555335-227310-20.jpg…; alt=“图:step17"></center><center><i>图:step17</i></center>

<center><img src="http://mcu.eetrend.com/files/2021-11/wen_zhang_/100555335-227311-21.jpg…; alt=“图:step18"></center><center><i>图:step18</i></center>

(7)阻焊层覆盖了BGA的铜片及1X4的接线柱,我们得刮掉这个薄层,使铜片露出来:

<center><img src="http://mcu.eetrend.com/files/2021-11/wen_zhang_/100555335-227312-22.jpg…; alt=“图:step19"></center><center><i>图:step19</i></center>

(8)给各个节点焊锡:

<center><img src="http://mcu.eetrend.com/files/2021-11/wen_zhang_/100555335-227313-23.jpg…; alt=“图:step20"></center><center><i>图:step20</i></center>
<center><img src="http://mcu.eetrend.com/files/2021-11/wen_zhang_/100555335-227314-24.jpg…; alt=“图:step21"></center><center><i>图:step21</i></center>

(9)回到数控铣,打孔,切削PCB的边缘:

<center><img src="http://mcu.eetrend.com/files/2021-11/wen_zhang_/100555335-227315-25.jpg…; alt=“图:step22"></center><center><i>图:step22</i></center>
<center><img src="http://mcu.eetrend.com/files/2021-11/wen_zhang_/100555335-227316-26.jpg…; alt=“图:step23"></center><center><i>图:step23</i></center>

(10)最终成品,BGA焊接在板子上,准备插到EEPROM编程器上:

<center><img src="http://mcu.eetrend.com/files/2021-11/wen_zhang_/100555335-227317-27.jpg…; alt=“图:step24"></center><center><i>图:step24</i></center>

<strong><font color="#004a85">结论</font> </strong>

了解了如何拆焊Flash芯片和如何设计PCB,以及制作PCB的两种不同方法。

来源:<a href="https://mp.weixin.qq.com/s/-CkVXTx81lbqECFvtaUnWA">STM32嵌入式开发</a&gt;
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。