随着科技的发展,与单片机相关的嵌入式电子产品的生命周期也越来越短,如何让自己的产品缩短开发周期,加速上市时间,已成为众多商家及工程师不得不思考的问题。真正的创新或高效,不只是来自于大自然对人类的启发,更多的是来自于学习,只有善于学习的人,才有进步,日常生活如此,搞技术更是如此。
经过十多年单片机开发应用及加解密实践,觉得单片机系统很脆弱,特别是没做任何加密措施的产品。理论上,任何单片机系统都可以被解密,只是解密成本与时间问题。单片机软件加解密,没什么深奥的,但不夸张的说,它也是一门艺术,是工程师长期含辛茹苦智慧的结晶,如果应用得好,可以快速学习他人的先进技术,也可以防止自己的技术成果轻易被他人取用。如果软件加密做得好,要完全进行软件解密,要分析数天,甚至花几个月,还不一定能完全分析得出来(这与分析人员的这与分析人员的经验及知识结构关系很大)。
单片机加解密可划分为两大类,一类是硬件加解密,一类是软件加解密。硬件加密,对于单片机来说,一般是单片机厂商将加密熔丝固化在IC内,熔丝有加密状态及不加密状态,如果处于加密状态,一般的工具是读取不了IC里面的程序内容的,要读取其内容,这就涉及到硬件解密,必须有专业的硬件解密工具及专业的工程师。现在重点谈谈软件方面的加解密。
软件加解密的前提是要有软件,即单片机程序,可以是以源代码的形式(C语言或汇编语言程序)提供,或是以二进制(bin格式或hex格式等)提供。一般学习借鉴别人的程序,一般是以二进制形式提供(此二进制程序一般是从上述硬件解密的过程中得到)。随着科技的发展,一般由硬件解密过程获得的二进制程序,还需要做进一步的软件分析、修改,即软件解密过程,程序功能才能真正的有效(除非没有做任何软件加密的程序,稍微高手一点的工程师会对自己的软件加密的),否则程序只能烧到母片上有效,而烧到同型号的其它芯片,某些关键功能会失效,甚至整个程序将不工作。
其实软件加密原理很简单,就是利用单片机IC厂商,为每片出厂芯片的某一特殊全球唯一识别参数,即ID号做为密钥,对程序进行加密。如果以本ID号的程序烧到另一ID号的芯片中,程序中经软件加密过的部分的功能将完全失效。
要解密上述经软件加密过的程序,唯一的途径,就是反汇编程序,分析单片机反汇编后的汇编程序,将程序中软件加密相关的密钥去掉,然后编译得到新的程序。这项工作需要的不只是耐心,更多的是专业知识与经验。对于搞技术的来说写文字的东西是最为受折磨的事,先写到这里。