单片机解密方法及原理介绍

日期:2008-12-10 00:00:00   浏览次数:4464   

经常提到的单片机解密或叫芯片解密就是从加过密的单片机里把程序代码读出来,然后拷贝到空白的同型号芯片里,因为正常情况下单片机在烧录程序的时候会自动或认为的实现加密,由于逆向学习研究或设备维修的时候,需要把芯片里的代码读出来使用,这个时候就要对芯片进行解密。目前国内做解密的技术人员,大多采用以下几中方法:
 
  1:软解密技术,就是通过软件找出单片机的设计缺陷或漏洞,将内部OTP/falsh ROM 或eeprom代码读出,但这种方法并不是最理想的,因为他的研究时间太长。如果厂家把漏洞补上后这种方法就失效了,同一系列的单片机都不是颗颗一样,所以有很大的局限。其中用解密器直接解密的方法也属于软解密。
  2:探针技术,和FIB技术解密,这种方法是一个很流行的一种方法,但是要一定的成本。首先将单片机的 Config.(配置文件)用烧写器保存起来,用在文件做出来后手工补回去之用。再用强酸熔去掉封装,在显微镜下用微形探针试探。得出结果后在显微镜拍成图片用FIB连接或切割加工完成。也有不用FIB加工,直接用探针就能用编程器将程序读出。
  3:紫外线光技术,是一个非常流行的一种方法,也是最简单的一种时间快、像我们一样只要30至120分钟出文件、成本非常低样片成本就行。首先将单片机的 Config.(配置文件)用烧写器保存起来,再用硝酸熔去掉封装,在显微镜下用不透光的物体盖住OTP/falsh ROM 或eeprom处,紫外线照在加密位上10到120分钟,加密位由0变为1就能用编程器将程序读出。(不过他有个缺陷,不是对每颗OTP/falsh都有效)
  有了以上的了解解密手段,我们开始从最简的紫外光技术,对付它:
  EMC单片机用紫外光有那一些问题出现呢?:OTP ROM 的地址(Address:0080H to 008FH) or (Address:0280h to 028FH) 即:EMC的指令的第9位由0变为1。因为它的加密位在于第9位,所以会影响数据。说明一下指令格式:"0110 bbb rrrrrrr" 这条指令JBC 0x13,2最头痛,2是B,0X13是R。如果数据由0变为1后:"0111 bbb rrrrrrr" 变成JBS 0x13,2头痛啊,见议在80H到8FH和280H到28FH多用这条指令。或用"润飞RF-2148"烧录,将IC的 CheckSum变为0000让解密者不知道内部的CheckSum值是多少。因为EMC的烧器会将这个CheckSum值加上去,即讲给解密者内部CheckSum值是多少。RF-2148烧录器不过有点慢。刚才讲的是普通级的153,156,447,451,458等,但是N级即工业级的加密位在0,1,2位:0000000000XXX,XXX是加密位,见议在80H到8FH和280H到28FH用 RETL @0x?? 这条指令,他的格式为:11100 rrrrrrrr。硬件方面加密看下面。
 
  CYPRESS单片机用紫外光有那一些问题出现呢?:常见型号有63001、63723、、、影响数据出现地址ROM最后的32Byte,做的不好的会有64Bytes出现问题。最好用这些地方来做Table:查表最好。数据格式:11011111你现在看到的0就是加密位的数据第5位,后64Byte的数据会由0变为1。如果你的数据没有写到这里时解密出来的程序就100%ok了。如果这里有数据但就没有办法补回去了!
     MDT单片机用紫外光有那一些问题出现呢?  常见型号有10pxx 20xx系列,影响数据出现地址ROM最后的32Byte,做的不好的会有128Bytes出现问题,但是有些出在地址0000H开始几十个Byte,因为MDT的版本太多。它的加密位在第13位,是最后一位。指令格式这里不再详解自已研究。只要这些地方有数据就可以让解密者头痛。
    PHILIPS单片机用紫外光有那一些问题出现呢? 一般是从0000H开始
  其它芯片厂家的软件加密我们不再一一列出,有需要者可以来电,我们尽力为你服务! 
  下面我们来开始讲讲 硬件加密方式 所谓的硬件加密现在市面上出现的五花八门。擦字,从新封装等,可以测或开片都可以查出来。用冷门芯片和做成邦定有效一点!但对于我们来讲只有一种方法是最有效,其中包括:软解密技术、探针技术,和FIB技术解密、紫外线光技术都有效。 其方法就是在设计之前一定要留好芯片的烧写数据I/O口,自己烧录完成就用高压将其杀除变成OTP一次性。首先我们拿HOLTEK的芯片说个例子:HT的芯片PA口一般用来做烧写IO。其中PA的PA0-6是做烧写IO,最好是杀PA0-3因为它是真正的数据出入口,只要一个脚烧断读出来的数据等垃圾文件。其方法是找来一个带有电流表电压表的电源,调好12V。将电源负极接好芯片的GND或VSS,电源正极接PA口的0-3要杀除的任一脚,此时电流表应该有600MA左右,等到电由600MA等0或30MA左右时完成。你可以用表测一下那个引脚应该没有电阻值,或阻抗很大和以前不一样。注:因为每种芯片不一样本人不作其他质量保证!!这种方法不单是HT的芯片有效,TENX、MDT、EMC、PIC,CY、SONIX、ATMEL、PHILIPS等等OTP/Falsh都有效。只是Falsh有点可惜。其它芯片有PIC的16C/F 6或7系列的RB6、RB7是烧写出入串口IO,AT89的P0口等 1051、2051、P1口,等等。。。。或可通过芯片厂家或代理商,网上等得到这烧录引脚相关资料。  他的生产流程是  1:先烧好程序 2:测试功能 3:杀除数据脚 4:测试功能 5:下线生产。